From a233d53643833c6f2c6b294352b7705c19e0863b Mon Sep 17 00:00:00 2001
From: vegu-ai-tools <152010387+vegu-ai-tools@users.noreply.github.com>
Date: Thu, 14 May 2026 16:14:20 +0300
Subject: [PATCH] Refactor message toolbar integration across components for
improved action handling
---
.../src/components/CharacterMessage.vue | 91 ++++--------
.../ContextInvestigationMessage.vue | 29 ++--
.../src/components/MessageToolbar.vue | 134 ++++++++++++++++++
.../src/components/NarratorMessage.vue | 70 +++------
4 files changed, 195 insertions(+), 129 deletions(-)
create mode 100644 talemate_frontend/src/components/MessageToolbar.vue
diff --git a/talemate_frontend/src/components/CharacterMessage.vue b/talemate_frontend/src/components/CharacterMessage.vue
index 008250e7..440eccad 100644
--- a/talemate_frontend/src/components/CharacterMessage.vue
+++ b/talemate_frontend/src/components/CharacterMessage.vue
@@ -56,55 +56,29 @@
-
- mdi-pencil
- Editing - Press `enter` to submit. Click anywhere to cancel.
-
- mdi-pencil
- Double-click to edit.
-
-
-
- mdi-pin
- Create Pin
-
-
-
-
- mdi-typewriter
- Editor Revision
-
-
-
-
- mdi-source-fork
- Fork
-
-
-
-
- mdi-fast-forward
- Continue
-
-
-
- Continuing...
-
-
-
-
- mdi-account-voice
- TTS
-
-
-
-
-
- mdi-clock-plus-outline
- Time Passage
-
-
+
+
+
+
+ mdi-fast-forward
+ Continue
+
+
+
+ Continuing...
+
+
+
@@ -119,13 +93,14 @@ import { isPrimaryModifier } from '@/utils/keyboardModifiers';
import MessageAssetImage from './MessageAssetImage.vue';
import MessageAssetMixin from './MessageAssetMixin.js';
import RevisionNav from './RevisionNav.vue';
+import MessageToolbar from './MessageToolbar.vue';
export default {
components: {
MessageAssetImage,
RevisionNav,
+ MessageToolbar,
},
mixins: [MessageAssetMixin],
- //props: ['character', 'text', 'color', 'message_id', 'uxLocked', 'isLastMessage'],
props: {
character: {
type: String,
@@ -211,15 +186,10 @@ export default {
emits: ['navigate-revision'],
inject: [
'requestDeleteMessage',
- 'getWebsocket',
- 'createPin',
- 'forkSceneInitiate',
- 'autocompleteRequest',
- 'autocompleteInfoMessage',
- 'getMessageStyle',
- 'reviseMessage',
- 'generateTTS',
- 'insertTimePassage',
+ 'getWebsocket',
+ 'autocompleteRequest',
+ 'autocompleteInfoMessage',
+ 'getMessageStyle',
],
computed: {
parser() {
@@ -244,9 +214,6 @@ export default {
renderedText() {
return this.parser.parse(this.text);
},
- forkable() {
- return this.rev <= this.sceneRev;
- },
characterData() {
if (!this.scene || !this.scene.data || !this.scene.data.characters) {
return null;
diff --git a/talemate_frontend/src/components/ContextInvestigationMessage.vue b/talemate_frontend/src/components/ContextInvestigationMessage.vue
index 753d7511..317b746f 100644
--- a/talemate_frontend/src/components/ContextInvestigationMessage.vue
+++ b/talemate_frontend/src/components/ContextInvestigationMessage.vue
@@ -49,20 +49,17 @@
-
- mdi-pencil
- Editing - Press `enter` to submit. Click anywhere to cancel.
-
- mdi-pencil
- Double-click to edit.
-
-
-
- mdi-account-voice
- TTS
-
-
+
@@ -77,12 +74,14 @@ import { isPrimaryModifier } from '@/utils/keyboardModifiers';
import MessageAssetImage from './MessageAssetImage.vue';
import MessageAssetMixin from './MessageAssetMixin.js';
import RevisionNav from './RevisionNav.vue';
+import MessageToolbar from './MessageToolbar.vue';
export default {
name: 'ContextInvestigationMessage',
components: {
MessageAssetImage,
RevisionNav,
+ MessageToolbar,
},
mixins: [MessageAssetMixin],
data() {
@@ -188,7 +187,7 @@ export default {
},
},
emits: ['navigate-revision'],
- inject: ['requestDeleteMessage', 'getWebsocket', 'createPin', 'autocompleteRequest', 'autocompleteInfoMessage', 'getMessageStyle', 'getMessageColor', 'generateTTS'],
+ inject: ['requestDeleteMessage', 'getWebsocket', 'autocompleteRequest', 'autocompleteInfoMessage', 'getMessageStyle', 'getMessageColor'],
methods: {
toggle() {
if (!this.editing) {
diff --git a/talemate_frontend/src/components/MessageToolbar.vue b/talemate_frontend/src/components/MessageToolbar.vue
new file mode 100644
index 00000000..449f7354
--- /dev/null
+++ b/talemate_frontend/src/components/MessageToolbar.vue
@@ -0,0 +1,134 @@
+
+
+
+ mdi-pencil
+ Editing - Press `enter` to submit. Click anywhere to cancel.
+
+
+
+
+
+ mdi-pencil
+ Double-click to edit.
+
+
+
+
+ mdi-pin
+ Create Pin
+
+
+
+
+ mdi-typewriter
+ Editor Revision
+
+
+
+
+ mdi-source-fork
+ Fork
+
+
+
+
+
+
+
+ mdi-account-voice
+ TTS
+
+
+
+
+
+ mdi-clock-plus-outline
+ Time Passage
+
+
+
+
+
diff --git a/talemate_frontend/src/components/NarratorMessage.vue b/talemate_frontend/src/components/NarratorMessage.vue
index 976c45cf..538a2289 100644
--- a/talemate_frontend/src/components/NarratorMessage.vue
+++ b/talemate_frontend/src/components/NarratorMessage.vue
@@ -49,45 +49,17 @@
-
- mdi-pencil
- Editing - Press `enter` to submit. Click anywhere to cancel.
-
- mdi-pencil
- Double-click to edit.
-
- mdi-pin
- Create Pin
-
-
-
-
- mdi-typewriter
- Editor Revision
-
-
-
-
- mdi-source-fork
- Fork
-
-
-
-
- mdi-account-voice
- TTS
-
-
-
-
-
- mdi-clock-plus-outline
- Time Passage
-
-
+
To edit the intro message open the mdi-scriptScene Editor
@@ -113,13 +85,14 @@ import { isPrimaryModifier } from '@/utils/keyboardModifiers';
import MessageAssetImage from './MessageAssetImage.vue';
import MessageAssetMixin from './MessageAssetMixin.js';
import RevisionNav from './RevisionNav.vue';
+import MessageToolbar from './MessageToolbar.vue';
export default {
components: {
MessageAssetImage,
RevisionNav,
+ MessageToolbar,
},
mixins: [MessageAssetMixin],
- // props: ['text', 'message_id', 'uxLocked', 'isLastMessage'],
props: {
text: {
@@ -188,17 +161,13 @@ export default {
},
emits: ['navigate-revision'],
inject: [
- 'requestDeleteMessage',
- 'getWebsocket',
- 'createPin',
- 'forkSceneInitiate',
- 'autocompleteRequest',
- 'autocompleteInfoMessage',
- 'getMessageStyle',
+ 'requestDeleteMessage',
+ 'getWebsocket',
+ 'autocompleteRequest',
+ 'autocompleteInfoMessage',
+ 'getMessageStyle',
'openWorldStateManager',
- 'reviseMessage',
'generateTTS',
- 'insertTimePassage',
],
computed: {
parser() {
@@ -217,9 +186,6 @@ export default {
renderedText() {
return this.parser.parse(this.text);
},
- forkable() {
- return this.rev <= this.sceneRev;
- },
// Asset mixin expects these
assetId() {
return this.asset_id;