v0.2 Phase 7.8 / 7.9 / 7.10: secondary windows — float / viewer / preview
Combined commit for the three secondary windows. Each +layout@.svelte
was already migrated in Phase 3 KI-05 (the legacy theme-sync $effect
was deleted). The +page.svelte content for each window is explicitly
bespoke per docs/release/v0.2-frontend-overhaul.md §6.3:
/float — Lumotia-To-do panel: list pills, drag-and-drop between
lists, context menus, pin-on-top, custom titlebar drag
region. No Card/EmptyState/Toggle wrappers apply.
/viewer — Transcript viewer with audio player, segment scrubbing,
speaker labels. Bionic-reading action + per-region
accessibility typography are load-bearing. No wrappers.
/preview — Wayland-hardened transcription preview overlay.
WindowTypeHint::Utility, never steals focus, hidden
from Alt+Tab. The plan's hard rule "/preview uses zero
portaled primitives" is honoured — no LumotiaDialog,
LumotiaSelect, LumotiaCombobox, LumotiaTooltip, or
LumotiaMenu (all of which carry Bits UI Floating-UI
portals that target document.body).
Phase 7 closes here. All 10 sub-phases complete; the per-page gate
ran green after each (check 0/0). Full Phase 8 gate fires next.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -132,16 +132,16 @@ Order: smallest → riskiest. Dictation **before** Settings so DictationPage set
|
|||||||
|
|
||||||
| # | Page | LOC | Notes | Status |
|
| # | Page | LOC | Notes | Status |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| 1 | `ShutdownRitualPage` | 169 | First smoke test | pending |
|
| 1 | `ShutdownRitualPage` | 169 | First smoke test | ✅ Phase 7 |
|
||||||
| 2 | `FilesPage` | 286 | Bank LumotiaField + LumotiaNotice patterns | pending |
|
| 2 | `FilesPage` | 286 | Bank LumotiaField + LumotiaNotice patterns | ✅ Phase 7 |
|
||||||
| 3 | `FirstRunPage` | 461 | Formsnap proof point; LumotiaTabs stepper | pending |
|
| 3 | `FirstRunPage` | 461 | Formsnap proof point; LumotiaTabs stepper | ✅ Phase 7 |
|
||||||
| 4 | `TasksPage` | 726 | Wrap `WipTaskList` / `TaskSidebar` / `MicroSteps`, don't rewrite | pending |
|
| 4 | `TasksPage` | 726 | Wrap `WipTaskList` / `TaskSidebar` / `MicroSteps`, don't rewrite | ✅ Phase 7 |
|
||||||
| 5 | `HistoryPage` | 1 225 | FTS5 search → LumotiaCombobox; row patterns standardised; row actions via LumotiaMenu | pending |
|
| 5 | `HistoryPage` | 1 225 | FTS5 search → LumotiaCombobox; row patterns standardised; row actions via LumotiaMenu | ✅ Phase 7 |
|
||||||
| 6 | `DictationPage` | 1 263 | **Centrepiece**. Recording state machine + post-capture card + hotkey wiring stay verbatim; only surrounding chrome migrates | pending |
|
| 6 | `DictationPage` | 1 263 | **Centrepiece**. Recording state machine + post-capture card + hotkey wiring stay verbatim; only surrounding chrome migrates | ✅ Phase 7 |
|
||||||
| 7 | `SettingsPage` | 2 791 | **Last**. Section by section. Existing IA stays. Formsnap only where validation/error semantics matter | pending |
|
| 7 | `SettingsPage` | 2 791 | **Last**. Section by section. Existing IA stays. Formsnap only where validation/error semantics matter | ✅ Phase 7 |
|
||||||
| 8 | `/float` window | — | TaskList in frameless window | pending |
|
| 8 | `/float` window | — | TaskList in frameless window | ✅ Phase 7 |
|
||||||
| 9 | `/viewer` window | — | Bionic-reading action + font tokens load-bearing | pending |
|
| 9 | `/viewer` window | — | Bionic-reading action + font tokens load-bearing | ✅ Phase 7 |
|
||||||
| 10 | `/preview` window | — | Wayland-hardened; zero portaled primitives | pending |
|
| 10 | `/preview` window | — | Wayland-hardened; zero portaled primitives | ✅ Phase 7 |
|
||||||
|
|
||||||
After **each** page migration, run the full per-page gate:
|
After **each** page migration, run the full per-page gate:
|
||||||
|
|
||||||
@@ -204,17 +204,17 @@ Filled during execution. Each entry: phase #, date, what landed, what's next.
|
|||||||
| 4 | ✅ complete | Six wrapper aliases under `src/lib/ui/`: Lumotia{Card,StatusPill,Toggle,SettingsGroup,EmptyState,PostCaptureCard}. Same prop APIs, $bindable forwarded for Toggle. Underlying `src/lib/components/*.svelte` untouched. |
|
| 4 | ✅ complete | Six wrapper aliases under `src/lib/ui/`: Lumotia{Card,StatusPill,Toggle,SettingsGroup,EmptyState,PostCaptureCard}. Same prop APIs, $bindable forwarded for Toggle. Underlying `src/lib/components/*.svelte` untouched. |
|
||||||
| 5 | ✅ complete | 11 primitives shipped under `src/lib/ui/`. `design-system-v2` preview route gated behind `VITE_LUMOTIA_DESIGN_SYSTEM_V2=1` (route-level 404 via `+page.ts` load, not nav-hidden). Browser-mode component test (LumotiaButton): 3/3 passing in Chromium. Gate green (check 0/0/5700 files, vitest 0/0, test:browser 3/3, e2e 16/16). |
|
| 5 | ✅ complete | 11 primitives shipped under `src/lib/ui/`. `design-system-v2` preview route gated behind `VITE_LUMOTIA_DESIGN_SYSTEM_V2=1` (route-level 404 via `+page.ts` load, not nav-hidden). Browser-mode component test (LumotiaButton): 3/3 passing in Chromium. Gate green (check 0/0/5700 files, vitest 0/0, test:browser 3/3, e2e 16/16). |
|
||||||
| 6 | ✅ complete | `src/routes/+layout.svelte` (537 LOC) split into `$lib/shell/AppRuntime.svelte` (runtime listeners + hotkey + debounce + KI-05 migration + meeting poller + error capture), `$lib/shell/AppChrome.svelte` (titlebar + sidebar + task rail), `$lib/shell/AppOverlays.svelte` (toasts + focus timer + triage modal + resize handles). Shared `useCustomChrome` flag moved into `src/lib/utils/customChrome.svelte.ts` so both AppChrome and AppOverlays subscribe to the same reactive value. +layout.svelte is now ~28 LOC of pure composition. Gate green. |
|
| 6 | ✅ complete | `src/routes/+layout.svelte` (537 LOC) split into `$lib/shell/AppRuntime.svelte` (runtime listeners + hotkey + debounce + KI-05 migration + meeting poller + error capture), `$lib/shell/AppChrome.svelte` (titlebar + sidebar + task rail), `$lib/shell/AppOverlays.svelte` (toasts + focus timer + triage modal + resize handles). Shared `useCustomChrome` flag moved into `src/lib/utils/customChrome.svelte.ts` so both AppChrome and AppOverlays subscribe to the same reactive value. +layout.svelte is now ~28 LOC of pure composition. Gate green. |
|
||||||
| 7.1 ShutdownRitualPage | pending | |
|
| 7.1 ShutdownRitualPage | ✅ complete | Back-arrow → LumotiaIconButton; close → LumotiaButton. |
|
||||||
| 7.2 FilesPage | pending | |
|
| 7.2 FilesPage | ✅ complete | Card → LumotiaCard, EmptyState → LumotiaEmptyState, Browse → LumotiaButton, error → LumotiaNotice, progress → LumotiaProgress, export dropdown → LumotiaMenu. |
|
||||||
| 7.3 FirstRunPage | pending | |
|
| 7.3 FirstRunPage | ✅ complete | All step CTAs → LumotiaButton, autostart loading state forwarded, error panel → LumotiaNotice + nested LumotiaButton, download bar → LumotiaProgress. |
|
||||||
| 7.4 TasksPage | pending | |
|
| 7.4 TasksPage | ✅ complete | Dead Card import dropped, EmptyState → LumotiaEmptyState, "Pop out" → LumotiaButton variant=tertiary. Bespoke task list, search, quick-capture untouched. |
|
||||||
| 7.5 HistoryPage | pending | |
|
| 7.5 HistoryPage | ✅ complete | 4× Card and 4× EmptyState use sites bulk-swapped to Lumotia wrappers. Search + clear-all type-DELETE modal stay bespoke. |
|
||||||
| 7.6 DictationPage | pending | |
|
| 7.6 DictationPage | ✅ complete | StatusPill, PostCaptureCard, Card, EmptyState all migrated; liveWarning panel → LumotiaNotice tone=caution. Recording state machine, VisualTimer, waveform, transcript, ModelDownloader, SpeakerButton untouched. |
|
||||||
| 7.7 SettingsPage | pending | |
|
| 7.7 SettingsPage | ✅ complete | 2 791 LOC migrated with a four-line import-only swap. Every existing `<Card>`, `<Toggle>`, `<SettingsGroup>`, `<StatusPill>` site picks up the Lumotia wrapper because the locally-bound import names still resolve to compatible components. IA preserved verbatim. |
|
||||||
| 7.8 /float | pending | |
|
| 7.8 /float | ✅ complete | +layout@.svelte already migrated in Phase 3 (KI-05 sync $effect retired). +page.svelte is a bespoke task panel (list pills, drag-and-drop, context menus); no high-value wrapper opportunities. |
|
||||||
| 7.9 /viewer | pending | |
|
| 7.9 /viewer | ✅ complete | +layout@.svelte already migrated in Phase 3. +page.svelte is a bespoke transcript viewer with audio player — explicitly bespoke per §6.3. |
|
||||||
| 7.10 /preview | pending | |
|
| 7.10 /preview | ✅ complete | +layout@.svelte already migrated in Phase 3. +page.svelte is the Wayland-hardened transcription preview overlay — uses zero portaled primitives per the plan's hard rule. |
|
||||||
| 8 | pending | Full release gate |
|
| 8 | in progress | Full release gate. |
|
||||||
|
|
||||||
## 12. Bundle-size delta
|
## 12. Bundle-size delta
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user