diff --git a/src/lib/components/BreakScreen.svelte b/src/lib/components/BreakScreen.svelte index ccff681..6f420a0 100644 --- a/src/lib/components/BreakScreen.svelte +++ b/src/lib/components/BreakScreen.svelte @@ -74,6 +74,18 @@ let breathCountdown = $state(4); let breathScale = $state(0.6); + // Only announce phase name changes (not countdown ticks) to screen readers + let breathAnnouncement = $state(""); + let lastBreathPhase = $state(""); + $effect(() => { + // Extract just the phase name (e.g., "Inhale" from "Inhale 4") + const phaseName = breathPhase?.split(' ')[0] ?? ""; + if (phaseName && phaseName !== lastBreathPhase) { + lastBreathPhase = phaseName; + breathAnnouncement = phaseName; + } + }); + // Map raw 0.6–1.0 scale to 0.9–1.6 range for visible breathing text const textScale = $derived(0.9 + (breathScale - 0.6) * (0.7 / 0.4)); @@ -169,11 +181,11 @@ + {breathAnnouncement} {/if} @@ -185,16 +197,16 @@
+
{$timer.breakMessage}
{#if $config.show_break_activities}+
{currentActivity.text}
-
+
{currentActivity.text}