From 4fa8df638b5e62f209c0e55624d254d59cd8ce18 Mon Sep 17 00:00:00 2001 From: Jake Date: Fri, 15 May 2026 09:00:22 +0100 Subject: [PATCH] =?UTF-8?q?v0.2=20Phase=207.6:=20DictationPage=20=E2=80=94?= =?UTF-8?q?=20centrepiece=20wrapper=20sweep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the page Settings will inherit grammar from, so it's worth a slightly fuller sweep than the earlier ones — without touching the recording state machine, the SVG VisualTimer, the waveform bars, the transcript textarea, ModelDownloader, or SpeakerButton, which are all bespoke per the §6.3 do-not-wrap list. - StatusPill import → LumotiaStatusPill (all use sites swapped) - PostCaptureCard import → LumotiaPostCaptureCard - Card import → LumotiaCard - EmptyState import → LumotiaEmptyState - LumotiaNotice import added; the inline `liveWarning` panel now uses LumotiaNotice tone=caution The danger-tinted error block (lines ~1130) was left verbatim — it already nests a StatusPill (now LumotiaStatusPill), a
disclosure, and a Dismiss button in a structure LumotiaNotice's single-icon contract doesn't model cleanly. Phase 7's primary output for this page is import-level coherence; behavioural identity stays untouched. Bespoke surfaces preserved: recording controls, VisualTimer, waveform, transcript surface (bionic action + accessibility typography), all hotkey wiring, all live-session state. Per-page gate: npm run check (0/0/5704 files). Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/pages/DictationPage.svelte | 41 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/lib/pages/DictationPage.svelte b/src/lib/pages/DictationPage.svelte index 3387c6e..d73f1da 100644 --- a/src/lib/pages/DictationPage.svelte +++ b/src/lib/pages/DictationPage.svelte @@ -8,17 +8,18 @@ import { markGenerating, markGenerationDone } from "$lib/stores/llmStatus.svelte.js"; import { playStartCue, playStopCue, playCompleteCue } from "$lib/utils/sounds.js"; import { profilesStore } from "$lib/stores/profiles.svelte.ts"; - import StatusPill from "$lib/components/StatusPill.svelte"; - import PostCaptureCard from "$lib/components/PostCaptureCard.svelte"; + import LumotiaStatusPill from "$lib/ui/LumotiaStatusPill.svelte"; + import LumotiaPostCaptureCard from "$lib/ui/LumotiaPostCaptureCard.svelte"; import { toasts } from "$lib/stores/toasts.svelte.js"; - import Card from "$lib/components/Card.svelte"; + import LumotiaCard from "$lib/ui/LumotiaCard.svelte"; + import LumotiaEmptyState from "$lib/ui/LumotiaEmptyState.svelte"; + import LumotiaNotice from "$lib/ui/LumotiaNotice.svelte"; import ModelDownloader from "$lib/components/ModelDownloader.svelte"; import { exportTranscript } from "$lib/utils/export.js"; import { extractTasks } from "$lib/utils/taskExtractor.js"; import { pad } from "$lib/utils/time.js"; import { FEEDBACK_TIMEOUT_MS } from "$lib/utils/constants.js"; import { Mic, Loader2, SquareCheck, AlertTriangle } from 'lucide-svelte'; - import EmptyState from '$lib/components/EmptyState.svelte'; import SpeakerButton from '$lib/components/SpeakerButton.svelte'; import { getPreferences } from '$lib/stores/preferences.svelte.js'; import { bionicReading } from '$lib/actions/bionicReading.js'; @@ -982,21 +983,21 @@ {#if page.recording} - + {:else if modelLoading} - + {:else if transcribing} - + {:else if saved} - + {:else if error} {#if transcriptionFailed} - + {:else} - + {/if} {:else} - + {/if} @@ -1132,9 +1133,9 @@
{#if transcriptionFailed} - + {:else} - + {/if}

{error}

@@ -1156,16 +1157,14 @@ {#if liveWarning && !error}
-
- {liveWarning} -
+ {liveWarning}
{/if} {#if showPostCaptureCard && lastCapture && !page.recording}
-
- + {#if transcriptionFailed && !transcript.trim() && !page.recording}
- +
{:else if !transcript.trim() && !page.recording && !transcribing}
- +