Files
Lumotia/docs/architecture-map/01-frontend/pages-overview.md
Jake 26c7307607
Some checks failed
check / cargo check (macos-latest) (push) Has been cancelled
check / cargo check (ubuntu-22.04) (push) Has been cancelled
check / cargo check (windows-latest) (push) Has been cancelled
check / svelte build + lint (push) Has been cancelled
agent: lumotia-rebrand — docs, scripts, root config, residuals
Phase 9 of the rebrand cascade. Sweep covers everything the Phase 8
frontend pass deliberately skipped: docs/, root markdown, scripts,
Cargo.toml descriptions, code comments that survived earlier
word-boundary sed, plus a handful of identifiers caught on the final
verify pass.

transcription-app changes:
- README.md, HANDOVER.md, KNOWN-ISSUES.md, run.sh — magnotia/Magnotia
  -> lumotia/Lumotia.
- docs/ — sweep across all subdirs except docs/handovers/ (preserved
  as immutable audit trail). Includes architecture-map references
  to magnotia_core::*, magnotia_storage::*, etc. now pointing at
  lumotia_*; dev-setup.md tracing output examples (lumotia_startup
  target); brief/ + superpowers/ + issues/ + whisper-ecosystem/ +
  audit/.
- Cargo.toml descriptions on 9 crates (core, audio, cloud-providers,
  hotkey, llm, mcp, plus referenced others).
- crates/core/src/{error,hardware,recommendation,paths}.rs +
  crates/audio/src/wav.rs + crates/llm/src/model_manager.rs +
  crates/cloud-providers/src/keystore.rs + crates/mcp/src/lib.rs —
  doc comments and a model-manager user-agent string.
- Caught on final pass: BroadcastChannel("magnotia_task_sync") -> ...
  ("lumotia_task_sync"); magnotia_locale i18n localStorage key
  renamed + migration shim added; CSS keyframe names
  magnotiaPulse / magnotiaBar / magnotiaFade renamed in the design-
  system kit; magnotia_viewer_item / magnotia_viewer_mode handoff
  keys renamed in HistoryPage + viewer/+page.svelte; src/assets/
  wordmark.svg text.
- src-tauri/src/lib.rs comment cleanup ("magnotia era" was sed'd
  to "lumotia era" earlier — restored).

Preserved (intentional):
- crates/core/src/paths.rs — keeps "magnotia" / "Magnotia" / ".magnotia"
  legacy detection strings in legacy_and_target_paths() so the
  migration shim can still find user data from the magnotia era.
- src/lib/stores/{page,focusTimer}.svelte.ts + src/lib/i18n/index.ts
  — migration call sites reference the legacy magnotia keys
  deliberately.
- docs/handovers/ — historical audit trail.

cargo build --workspace passes. npm run check: 0 errors / 0 warnings
(3958 files). cargo test --workspace: 339 pass / 0 fail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 12:38:03 +01:00

4.2 KiB

name, type, slice, last_verified
name type slice last_verified
Pages overview architecture-map-page 01-frontend 2026/05/09

Pages overview

Where you are: Architecture mapFrontend → Pages overview

Plain English summary. Lumotia has seven main window pages and three secondary window pages. The main window picks which to show by reading page.current (a string in the page store) and rendering the matching component. The secondary windows are routed by URL (/float, /viewer, /preview).

At a glance

  • Main window pages live at src/lib/pages/*.svelte (7 files, 6 232 LOC).
  • Secondary window pages live at src/routes/{float,viewer,preview}/+page.svelte (3 files, 1 361 LOC).
  • Switch site: src/routes/+page.svelte:18-32.
  • Driver store: src/lib/stores/page.svelte.ts:24-33 (page.current).
  • Possible values of page.current: "first-run" | "dictation" | "files" | "tasks" | "history" | "settings" | "shutdown". Plus the legacy "profiles" which is rewritten to "settings" (see README debt note 5).

Map of pages

Main window

Page File LOC One line hook
Dictation src/lib/pages/DictationPage.svelte 1 100 The hero recording surface. Streams partial transcripts via a Tauri Channel, runs the AI cleanup pipeline, paste/copy/export, extracts tasks, fills a template.
Settings src/lib/pages/SettingsPage.svelte 2 484 The configuration panel. Audio devices, vocabulary, profiles, templates, model management (Whisper + Parakeet + LLM), hotkey, rituals, nudges, accessibility, diagnostics.
History src/lib/pages/HistoryPage.svelte 974 Browse, search, play, edit, star, tag, export saved transcripts. Backed by SQLite FTS5.
Tasks src/lib/pages/TasksPage.svelte 725 Inbox/today/soon/later board with energy chips, lists, completion sparkline.
Files src/lib/pages/FilesPage.svelte 263 Drop or browse audio/video files. Calls transcribe_file.
First run src/lib/pages/FirstRunPage.svelte 337 Hardware probe (probe_system), model recommendation, model download. Auto exits to dictation.
Shutdown ritual src/lib/pages/ShutdownRitualPage.svelte 169 Evening wind down ritual. Triggered from the tray menu via lumotia:open-wind-down.

Secondary windows (URL routed)

Window label URL File LOC One line hook
tasks-float /float src/routes/float/+page.svelte 481 Detached pinned tasks window with quick add and list management.
transcript-viewer /viewer src/routes/viewer/+page.svelte 606 Transcript editor with synced audio playback and per segment editing.
transcription-preview /preview src/routes/preview/+page.svelte 274 Borderless overlay showing live transcription with copy and revert.

How navigation actually happens

  • Sidebar buttons set page.current directly (src/lib/Sidebar.svelte:24).
  • Some flows reach into page.current from outside the sidebar:
    • Hotkey press forces dictation: +layout.svelte:139, 181.
    • First run gate on mount: +layout.svelte:350.
    • Settings page "open evening wind down" button: SettingsPage.svelte:816.
    • Tray menu wind down event: +layout.svelte:251-254.
    • First run completion paths back to dictation: FirstRunPage.svelte:83, 139, 146, 155.
    • Implementation intentions store can route to tasks (implementationIntentions.svelte.ts:125, 136, 142).
    • Shutdown ritual exit: ShutdownRitualPage.svelte:67.
    • TaskSidebar "open tasks page" link: TaskSidebar.svelte:48.

Where the shell tucks pages in

The shell renders sidebar plus a single main slot: <div class="flex-1 overflow-hidden bg-bg">{@render children()}</div>. The optional task sidebar (page.taskSidebarOpen) can dock a TaskSidebar panel beside any main page that is not first run.

See also