Merge branch 'main' into feat/v0.2-frontend-overhaul
This commit is contained in:
54
README.md
54
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
|
||||||
|
|
||||||
**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.
|
**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.
|
- Transcript editor window (`/viewer`) with debounced autosave.
|
||||||
|
|
||||||
### External integration
|
### 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
|
### Accessibility
|
||||||
- Dyslexia-friendly fonts bundled: Lexend, Atkinson Hyperlegible Next, OpenDyslexic.
|
- 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 │
|
│ window-state │
|
||||||
├─────────────────────────────────────────────────────────────────┤
|
├─────────────────────────────────────────────────────────────────┤
|
||||||
│ Rust workspace (crates/) │
|
│ Rust workspace (crates/) │
|
||||||
│ lumotia-core, lumotia-audio, lumotia-transcription, lumotia-llm, │
|
│ Lumotia-core, Lumotia-audio, Lumotia-transcription, Lumotia-llm, │
|
||||||
│ lumotia-ai-formatting, lumotia-storage, lumotia-hotkey, │
|
│ Lumotia-ai-formatting, Lumotia-storage, Lumotia-hotkey, │
|
||||||
│ lumotia-cloud-providers, lumotia-mcp │
|
│ 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
|
### Repository layout
|
||||||
|
|
||||||
```
|
```
|
||||||
lumotia/
|
Lumotia/
|
||||||
├── Cargo.toml # workspace root
|
├── Cargo.toml # workspace root
|
||||||
├── src-tauri/ # Tauri app (main binary + commands)
|
├── src-tauri/ # Tauri app (main binary + commands)
|
||||||
│ ├── src/
|
│ ├── src/
|
||||||
@@ -175,15 +165,15 @@ lumotia/
|
|||||||
|
|
||||||
| Crate | Responsibility |
|
| 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-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-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-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-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-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-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-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-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-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/)
|
### Tauri commands (src-tauri/src/commands/)
|
||||||
|
|
||||||
@@ -358,24 +348,24 @@ Beyond this README, the repo ships extensive internal documentation:
|
|||||||
|
|
||||||
### Product + strategy — `docs/brief/`
|
### Product + strategy — `docs/brief/`
|
||||||
Research briefs, competitive analysis, and strategic framing. Start with:
|
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
|
- [`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
|
- [`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)
|
- [`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
|
- Appendices on cognitive ergonomics, AI body doubling, evolutionary psychology, implementation intentions, HITL scaffolding, voice interfaces
|
||||||
|
|
||||||
### Brand — `docs/brand/`
|
### Brand — `docs/brand/`
|
||||||
- [`lumotia-brand-guidelines.md`](docs/brand/lumotia-brand-guidelines.md)
|
- [`Lumotia-brand-guidelines.md`](docs/brand/Lumotia-brand-guidelines.md)
|
||||||
- [`lumotia-brand-platform.md`](docs/brand/lumotia-brand-platform.md)
|
- [`Lumotia-brand-platform.md`](docs/brand/Lumotia-brand-platform.md)
|
||||||
|
|
||||||
### Technical research — `docs/whisper-ecosystem/`
|
### 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.
|
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)
|
- [`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
|
- [`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/`
|
### 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
|
### Session handovers
|
||||||
- [`HANDOVER.md`](HANDOVER.md) — latest session summary
|
- [`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)
|
- **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
|
- **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
|
- **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
|
- **`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
|
- **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
|
## Contact
|
||||||
|
|
||||||
**Jake Sames** — [jakeadriansames@gmail.com](mailto:jakeadriansames@gmail.com)
|
**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)
|
||||||
|
|||||||
Reference in New Issue
Block a user