diff --git a/src/lib/pages/DictationPage.svelte b/src/lib/pages/DictationPage.svelte index 9dea383..4daa835 100644 --- a/src/lib/pages/DictationPage.svelte +++ b/src/lib/pages/DictationPage.svelte @@ -794,11 +794,27 @@ ); let transcriptionFailed = $state(false); + + // Screen-reader announcer for recording state transitions. + // Announces both start and stop, then clears so the live region does not + // hold stale text. prevRecording is a plain let (not $state) because it is + // bookkeeping and must not re-trigger the effect. + let recordingAnnouncement = $state(""); + let prevRecording = false; + $effect(() => { + if (page.recording && !prevRecording) { + recordingAnnouncement = "Recording started"; + } else if (!page.recording && prevRecording) { + recordingAnnouncement = "Recording stopped"; + setTimeout(() => { recordingAnnouncement = ""; }, 1200); + } + prevRecording = page.recording; + });
-
- {#if page.recording}Recording started{/if} +
+ {recordingAnnouncement}
{#if needsDownload}