feat: persist listen mode across views via localStorage

Extract listen mode into a shared useListenMode() composable backed by
localStorage ('fa_listen_mode'). ChatView and BriefingView both use it,
so toggling auto-read on in one view keeps it on after navigation or
page refresh — no need to re-enable it each visit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-01 11:53:03 -04:00
parent 71b8c5965c
commit 30981a3121
3 changed files with 18 additions and 2 deletions
+2 -1
View File
@@ -7,6 +7,7 @@ import { apiGet, transcribeAudio, synthesiseSpeech } from "@/api/client";
import { renderMarkdown } from "@/utils/markdown";
import { useVoiceRecorder } from "@/composables/useVoiceRecorder";
import { useVoiceAudio, setVoiceVolume } from "@/composables/useVoiceAudio";
import { useListenMode } from "@/composables/useListenMode";
import ChatMessage from "@/components/ChatMessage.vue";
import ToolCallCard from "@/components/ToolCallCard.vue";
import ToolConfirmCard from "@/components/ToolConfirmCard.vue";
@@ -30,7 +31,7 @@ const recorder = useVoiceRecorder();
const audio = useVoiceAudio();
const voiceEnabled = computed(() => settingsStore.voiceSttReady);
const voiceTtsEnabled = computed(() => settingsStore.voiceTtsReady);
const listenMode = ref(false);
const listenMode = useListenMode();
const synthesising = ref(false);
const showVolumeSlider = ref(false);