diff --git a/README.md b/README.md index 5828393..aaf3227 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,6 @@ Lumotia is a local-first, cognitive-load-aware dictation and task-capture deskto --- -## v0.1 release - -- Release notes: [docs/release/v0.1-release-notes.md](docs/release/v0.1-release-notes.md) -- Known limitations: [docs/release/v0.1-known-limitations.md](docs/release/v0.1-known-limitations.md) -- How Lumotia is built (trust evidence): [docs/release/how-lumotia-is-built.md](docs/release/how-lumotia-is-built.md) -- Privacy + AI-use disclosure: [docs/release/privacy-and-ai-use.md](docs/release/privacy-and-ai-use.md) -- First-install warnings (per platform): [docs/release/install-warnings.md](docs/release/install-warnings.md) - ---- - ## Status **Status: v0.1 release candidate.** See [docs/release/](docs/release/) for the ship checklist + known limitations. Actively dogfooded on Linux (KDE Plasma 6 on Wayland). macOS and Windows targets are in scope and exercised by CI, but not yet beta-ready. @@ -75,7 +65,7 @@ These are enforced in the codebase (where practical) and in the docs under [`doc - Transcript editor window (`/viewer`) with debounced autosave. ### External integration -- **MCP stdio server** (`lumotia-mcp`) exposing read-only transcripts and tasks to any Model Context Protocol client (Claude Desktop, Cline, Cursor, etc.). No authentication, read-only, local-only. +- **MCP stdio server** (`Lumotia-mcp`) exposing read-only transcripts and tasks to any Model Context Protocol client (Claude Desktop, Cline, Cursor, etc.). No authentication, read-only, local-only. ### Accessibility - Dyslexia-friendly fonts bundled: Lexend, Atkinson Hyperlegible Next, OpenDyslexic. @@ -112,18 +102,18 @@ Lumotia is a Tauri 2 desktop app with three layers: │ window-state │ ├─────────────────────────────────────────────────────────────────┤ │ Rust workspace (crates/) │ -│ lumotia-core, lumotia-audio, lumotia-transcription, lumotia-llm, │ -│ lumotia-ai-formatting, lumotia-storage, lumotia-hotkey, │ -│ lumotia-cloud-providers, lumotia-mcp │ +│ Lumotia-core, Lumotia-audio, Lumotia-transcription, Lumotia-llm, │ +│ Lumotia-ai-formatting, Lumotia-storage, Lumotia-hotkey, │ +│ Lumotia-cloud-providers, Lumotia-mcp │ └─────────────────────────────────────────────────────────────────┘ ``` -The Rust workspace is the brain; Tauri is the OS integration surface; Svelte is the UI. The MCP server (`lumotia-mcp`) is a separate binary that opens Lumotia's SQLite store read-only — it's Lumotia-as-primitive for external agents. +The Rust workspace is the brain; Tauri is the OS integration surface; Svelte is the UI. The MCP server (`Lumotia-mcp`) is a separate binary that opens Lumotia's SQLite store read-only — it's Lumotia-as-primitive for external agents. ### Repository layout ``` -lumotia/ +Lumotia/ ├── Cargo.toml # workspace root ├── src-tauri/ # Tauri app (main binary + commands) │ ├── src/ @@ -175,15 +165,15 @@ lumotia/ | Crate | Responsibility | |---|---| -| **`lumotia-core`** | Shared types (`Segment`, `Transcript`, `Megabytes`, `ModelId`), constants, the `Engine` / `SpeedTier` / `AccuracyTier` enums, hardware probe (`sysinfo`-based), model registry (Whisper + Parakeet entries), hardware-aware recommendation scoring, `process_watch` for meeting detection. | -| **`lumotia-audio`** | `cpal`-based microphone capture with device hotplug + error forwarding, VAD, `rubato` streaming resampler to 16 kHz mono, `symphonia` file decoding, `hound` WAV I/O. | -| **`lumotia-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `Transcriber` trait. Streaming primitives (`VadChunker`, `LocalAgreement`, buffer trim) live in the `streaming/` module. Model manager handles downloads, paths, and disk checks. | -| **`lumotia-llm`** | `llama-cpp-2` engine with a four-tier Qwen3.5 / Qwen3.6 model manager. Three high-level surfaces: `cleanup_text` (formatting), `decompose_task` (3–7 micro-steps, GBNF-constrained JSON array), `extract_tasks` (optional-array, GBNF-constrained). Resumable HTTP downloads with SHA-256 verify. | -| **`lumotia-ai-formatting`** | Post-processing pipeline: filler removal, British English conversion, anti-hallucination filter, smart paragraph breaks on long pauses, optional LLM cleanup. Also hosts the `llm_client::CLEANUP_PROMPT` constant (prompt-injection-hardened). | -| **`lumotia-storage`** | SQLite via `sqlx` 0.8. Migrations, CRUD for transcripts / tasks / subtasks / profiles / profile terms / settings / error log, FTS5 search, file-storage paths. | -| **`lumotia-hotkey`** | Linux `evdev` hotkey listener with device hotplug. Parses Tauri-style hotkey strings (`Ctrl+Shift+R`), emits Pressed / Released events. Works natively on Wayland (no X11 dependency). Checks `/dev/input/event*` access on startup; surfaces a clear "add yourself to the `input` group" error when missing. | -| **`lumotia-cloud-providers`** | BYOK cloud-STT provider stubs. Currently empty scaffolding. When populated: OpenAI-compatible endpoint + Anthropic (ceiling for scope). | -| **`lumotia-mcp`** | Standalone `lumotia-mcp` binary implementing the MCP stdio protocol (2024-11-05). Read-only tools: `list_transcripts`, `get_transcript`, `search_transcripts`, `list_tasks`. Opens Lumotia's SQLite store. | +| **`Lumotia-core`** | Shared types (`Segment`, `Transcript`, `Megabytes`, `ModelId`), constants, the `Engine` / `SpeedTier` / `AccuracyTier` enums, hardware probe (`sysinfo`-based), model registry (Whisper + Parakeet entries), hardware-aware recommendation scoring, `process_watch` for meeting detection. | +| **`Lumotia-audio`** | `cpal`-based microphone capture with device hotplug + error forwarding, VAD, `rubato` streaming resampler to 16 kHz mono, `symphonia` file decoding, `hound` WAV I/O. | +| **`Lumotia-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `Transcriber` trait. Streaming primitives (`VadChunker`, `LocalAgreement`, buffer trim) live in the `streaming/` module. Model manager handles downloads, paths, and disk checks. | +| **`Lumotia-llm`** | `llama-cpp-2` engine with a four-tier Qwen3.5 / Qwen3.6 model manager. Three high-level surfaces: `cleanup_text` (formatting), `decompose_task` (3–7 micro-steps, GBNF-constrained JSON array), `extract_tasks` (optional-array, GBNF-constrained). Resumable HTTP downloads with SHA-256 verify. | +| **`Lumotia-ai-formatting`** | Post-processing pipeline: filler removal, British English conversion, anti-hallucination filter, smart paragraph breaks on long pauses, optional LLM cleanup. Also hosts the `llm_client::CLEANUP_PROMPT` constant (prompt-injection-hardened). | +| **`Lumotia-storage`** | SQLite via `sqlx` 0.8. Migrations, CRUD for transcripts / tasks / subtasks / profiles / profile terms / settings / error log, FTS5 search, file-storage paths. | +| **`Lumotia-hotkey`** | Linux `evdev` hotkey listener with device hotplug. Parses Tauri-style hotkey strings (`Ctrl+Shift+R`), emits Pressed / Released events. Works natively on Wayland (no X11 dependency). Checks `/dev/input/event*` access on startup; surfaces a clear "add yourself to the `input` group" error when missing. | +| **`Lumotia-cloud-providers`** | BYOK cloud-STT provider stubs. Currently empty scaffolding. When populated: OpenAI-compatible endpoint + Anthropic (ceiling for scope). | +| **`Lumotia-mcp`** | Standalone `Lumotia-mcp` binary implementing the MCP stdio protocol (2024-11-05). Read-only tools: `list_transcripts`, `get_transcript`, `search_transcripts`, `list_tasks`. Opens Lumotia's SQLite store. | ### Tauri commands (src-tauri/src/commands/) @@ -358,24 +348,24 @@ Beyond this README, the repo ships extensive internal documentation: ### Product + strategy — `docs/brief/` Research briefs, competitive analysis, and strategic framing. Start with: -- [`what-lumotia-is.md`](docs/brief/what-lumotia-is.md) — product thesis +- [`what-Lumotia-is.md`](docs/brief/what-Lumotia-is.md) — product thesis - [`why-current-tools-fail.md`](docs/brief/why-current-tools-fail.md) — market gap - [`design-principles.md`](docs/brief/design-principles.md) — full principle list - [`target-audience.md`](docs/brief/target-audience.md), [`market-size-demographics.md`](docs/brief/market-size-demographics.md) - Appendices on cognitive ergonomics, AI body doubling, evolutionary psychology, implementation intentions, HITL scaffolding, voice interfaces ### Brand — `docs/brand/` -- [`lumotia-brand-guidelines.md`](docs/brand/lumotia-brand-guidelines.md) -- [`lumotia-brand-platform.md`](docs/brand/lumotia-brand-platform.md) +- [`Lumotia-brand-guidelines.md`](docs/brand/Lumotia-brand-guidelines.md) +- [`Lumotia-brand-platform.md`](docs/brand/Lumotia-brand-platform.md) ### Technical research — `docs/whisper-ecosystem/` Cross-repo survey of 10 OSS Whisper projects, the Lumotia-specific atomic task backlog, and the two Cursor workstream plans. - [`brief.md`](docs/whisper-ecosystem/brief.md) — 31-item task backlog (the canonical research spec) -- [`lumotia-context.md`](docs/whisper-ecosystem/lumotia-context.md) — ideology, shipped state, file-ownership fence for cloud AI agents +- [`Lumotia-context.md`](docs/whisper-ecosystem/Lumotia-context.md) — ideology, shipped state, file-ownership fence for cloud AI agents - [`workstream-A.md`](docs/whisper-ecosystem/workstream-A.md), [`workstream-B.md`](docs/whisper-ecosystem/workstream-B.md) — executed workstream plans ### GPU tuning — `docs/gpu-tuning/` -- [`plan.md`](docs/gpu-tuning/plan.md) — MVP plan for GGML env-var panel + `lumotia-bench` auto-tuner + `lumotia-configs` community repo +- [`plan.md`](docs/gpu-tuning/plan.md) — MVP plan for GGML env-var panel + `Lumotia-bench` auto-tuner + `Lumotia-configs` community repo ### Session handovers - [`HANDOVER.md`](HANDOVER.md) — latest session summary @@ -397,7 +387,7 @@ Pinned roadmap items (scoped in docs and session memory): - **Phase 4** — remaining items from [`workstream-A.md`](docs/whisper-ecosystem/workstream-A.md) + [`workstream-B.md`](docs/whisper-ecosystem/workstream-B.md) - **Voice calibration** — three-tier plan replacing the hardcoded speech-gate with per-user baselines - **GPU community tuning** — see [`docs/gpu-tuning/plan.md`](docs/gpu-tuning/plan.md); five-phase roadmap from settings panel to agentic auto-tuner + community config repo -- **Cloud endpoint contract test** — when `lumotia-cloud-providers` grows a real provider +- **Cloud endpoint contract test** — when `Lumotia-cloud-providers` grows a real provider - **`ggml` dedup** — replace the interim `-Wl,--allow-multiple-definition` link flag with a proper shared-lib setup; unblocks custom shader / backend work - **Mobile (iOS / Android)** — long-horizon, gated on the single-binary Rust stack scaling @@ -438,4 +428,4 @@ File issues at https://github.com/jakeadriansames/lumotia/issues — please incl ## Contact **Jake Sames** — [jakeadriansames@gmail.com](mailto:jakeadriansames@gmail.com) -Repo: [github.com/jakeadriansames/lumotia](https://github.com/jakeadriansames/lumotia) · [git.corbel.consulting/jake/lumotia](https://git.corbel.consulting/jake/lumotia) +Repo: [github.com/jakejars/Lumotia](https://github.com/jakejars/Lumotia) · [git.corbel.consulting/jake/Lumotia](https://git.corbel.consulting/jake/Lumotia)