From 9d519054ee9400b393dbe0d8c21abacfda47c828 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 3 Apr 2026 13:15:28 -0400 Subject: [PATCH] feat(tts): add streaming TTS listen mode to WorkspaceView --- frontend/src/views/WorkspaceView.vue | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/frontend/src/views/WorkspaceView.vue b/frontend/src/views/WorkspaceView.vue index e5d036b..157b975 100644 --- a/frontend/src/views/WorkspaceView.vue +++ b/frontend/src/views/WorkspaceView.vue @@ -5,6 +5,8 @@ import { apiGet } from "@/api/client"; import { useChatStore } from "@/stores/chat"; import { useSettingsStore } from "@/stores/settings"; import { useToastStore } from "@/stores/toast"; +import { useListenMode } from "@/composables/useListenMode"; +import { useStreamingTts } from "@/composables/useStreamingTts"; import { renderMarkdown } from "@/utils/markdown"; import ChatMessage from "@/components/ChatMessage.vue"; import ToolCallCard from "@/components/ToolCallCard.vue"; @@ -16,6 +18,13 @@ const route = useRoute(); const chatStore = useChatStore(); const settingsStore = useSettingsStore(); const toast = useToastStore(); +const listenMode = useListenMode(); +const voiceTtsEnabled = computed(() => settingsStore.voiceTtsReady); +const tts = useStreamingTts({ + streamingContent: computed(() => chatStore.streamingContent), + streaming: computed(() => chatStore.streaming), + enabled: computed(() => listenMode.value && voiceTtsEnabled.value), +}); const projectId = computed(() => Number(route.params.projectId)); @@ -372,6 +381,22 @@ onUnmounted(async () => { @keydown="onInputKeydown" @input="autoResize" > + +