Five-slice navigable map of the entire codebase under
docs/architecture-map/. Each slice is a self-contained
breadcrumbed sub-tree:
01-frontend (16) Svelte/SvelteKit UI
02-tauri-runtime (26) src-tauri commands + lifecycle
03-audio-transcription (16) audio + transcription crates
04-llm-formatting-mcp (19) llm, ai-formatting, mcp, cloud
05-core-storage-hotkey-build core, storage, hotkey, workspace,
(26) CI, dev glue
Plus master README.md and data-flow-end-to-end.md tracing
audio bytes from microphone to FTS5 search to MCP read.
Generated by 5 parallel subagents on 2026/05/09 against
HEAD 3c47000. Each page has YAML frontmatter, file:line code
refs, sibling cross-links, plain-English summaries.
Aggregated debt surfaced (full lists in master README):
RB-08 macOS power assertion, schema head drift v14 vs v15,
VAD blocked on ort version conflict, streaming primitives
not wired into live.rs, no prompt versioning, MCP has no
auth, cloud-providers in-memory keystore, SettingsPage
2 484 LOC, commands/live.rs 1 737 LOC, dual theme system,
brand rename to Lumenote pending across the codebase.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.4 KiB
2.4 KiB
name, type, slice, last_verified
| name | type | slice | last_verified |
|---|---|---|---|
| Files page | architecture-map-page | 01-frontend | 2026/05/09 |
Files page
Where you are: Architecture map → Frontend → Pages overview → Files
Plain English summary. Drag and drop or browse local audio/video files for transcription. Same engine as live dictation, just file mode. On finish, results land in the page (preview text, segments) and into addToHistory.
At a glance
- Path:
src/lib/pages/FilesPage.svelte - LOC: 263
- Imports (selected):
- Tauri:
invoke(core),listen(event). - Stores:
settings,addToHistoryfrompage.svelte.ts.profilesStore.toasts(transitive via store helpers). - Components:
Card,EmptyState. - Utils:
exportTranscript. - External:
Uploadicon fromlucide-svelte.@tauri-apps/plugin-dialog(lazy import).
- Tauri:
What's in here
Drag and drop
onMountregisters three Tauri events:tauri://drag-drop(FilesPage.svelte:28). Filters the dropped paths to supported extensions and starts transcription.tauri://drag-enter(FilesPage.svelte:34). SetsisDragOver = true.tauri://drag-leave(FilesPage.svelte:35). SetsisDragOver = false.
onDestroycalls each unlisten.
Browse
handleBrowse()lazy imports@tauri-apps/plugin-dialogand opens with the audio/video filter (mp3, wav, m4a, mp4, flac, ogg, webm, mov, mkv).
Transcription
- Calls
invoke("transcribe_file", { ... })(FilesPage.svelte:76). Receives transcript text + segments. - Optional
copy_to_clipboardon completion. - Pushes result into history via the store helper.
State
fileTranscript,segments,isDragOver,progress,progressText,fileName,error,transcribing.
Tauri command surface
transcribe_file, copy_to_clipboard. Plus dialog plugin.
Watch outs
- The drag and drop events require the Tauri config to declare drag drop on the relevant window. If the events do not fire, check
tauri.conf.jsonand slice 02. - Long files block the UI of this page until
transcribe_fileresolves. There is no abort. - The supported extensions list is duplicated between the file dialog filter and (presumably) the Rust side. Drift risk.
- Multi file drag drop iterates serially. No queue UI.
See also
- Pages: dictation. The live counterpart.
- Frontend ↔ Tauri bridge.