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>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Magnotia — GPU Tuning & Community Config Plan
|
||||
# Lumotia — GPU Tuning & Community Config Plan
|
||||
|
||||
*Implementation spec for the first three phases of the GPU kernel tuning roadmap. The full five-phase roadmap is pinned in memory; this document scopes the MVP subset that ships real value without pulling in `ggml`-dedup or agentic-search prerequisites.*
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
**IN** (this document):
|
||||
|
||||
- Phase 1 — Advanced GPU tuning settings panel (exposing GGML env vars)
|
||||
- Phase 2 — `magnotia-bench` local autotuning CLI
|
||||
- Phase 3-lite — `magnotia-configs` community repo with manual-PR workflow (no CI replay)
|
||||
- Phase 2 — `lumotia-bench` local autotuning CLI
|
||||
- Phase 3-lite — `lumotia-configs` community repo with manual-PR workflow (no CI replay)
|
||||
|
||||
**OUT** (pinned to memory for later):
|
||||
|
||||
@@ -36,13 +36,13 @@ This subset captures roughly 85% of the perceived value for ~20% of the total ef
|
||||
| Disable integer dot product | `GGML_VK_DISABLE_INTEGER_DOT_PRODUCT` | off | "Random NaN" on RDNA2 with certain drivers |
|
||||
| Enable Vulkan validation | `GGML_VK_VALIDATE` | off | Diagnostic only; impacts performance |
|
||||
|
||||
Metal / CUDA counterparts slot in when those backends grow in Magnotia. Today Magnotia is Vulkan-only.
|
||||
Metal / CUDA counterparts slot in when those backends grow in Lumotia. Today Lumotia is Vulkan-only.
|
||||
|
||||
### Design
|
||||
|
||||
- New `SettingsState.gpuTuning: { disableCoopmat: boolean, forceFp32: boolean, disableF16: boolean, disableIntegerDotProduct: boolean, enableValidation: boolean }` in [src/lib/types/app.ts](../../src/lib/types/app.ts)
|
||||
- All defaults `false` in [src/lib/stores/page.svelte.ts](../../src/lib/stores/page.svelte.ts)
|
||||
- Persistence uses the existing `save_preferences` → SQLite `magnotia_preferences` path
|
||||
- Persistence uses the existing `save_preferences` → SQLite `lumotia_preferences` path
|
||||
- Backend process env must be established before GPU backend initialisation. **Superseded note (2026-05-12):** runtime `std::env::set_var` mutation and the old `ensure_x11_on_wayland` pattern were removed from `src-tauri/src/lib.rs`; launcher/wrapper processes now own env-var setup. Preserve this startup-order requirement when revisiting GPU tuning, but do not reintroduce in-process env mutation.
|
||||
- Settings UI shows a sticky "Restart required for changes to take effect" banner when any toggle has drifted from its launch-time value
|
||||
- A "Reset to defaults" button zeroes all toggles
|
||||
@@ -55,18 +55,18 @@ Metal / CUDA counterparts slot in when those backends grow in Magnotia. Today Ma
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 — `magnotia-bench` local autotuning CLI
|
||||
## Phase 2 — `lumotia-bench` local autotuning CLI
|
||||
|
||||
**Effort**: 3–5 days.
|
||||
|
||||
**What ships**: New workspace binary `crates/bench/` producing a `magnotia-bench` executable. User runs it once post-install; output lands at `~/.magnotia/gpu-profile.toml` with the best-scoring config for their hardware. Settings page gets an "Apply auto-tuned profile" button that consumes the TOML and updates the Phase 1 toggles.
|
||||
**What ships**: New workspace binary `crates/bench/` producing a `lumotia-bench` executable. User runs it once post-install; output lands at `~/.lumotia/gpu-profile.toml` with the best-scoring config for their hardware. Settings page gets an "Apply auto-tuned profile" button that consumes the TOML and updates the Phase 1 toggles.
|
||||
|
||||
### CLI surface
|
||||
|
||||
```
|
||||
magnotia-bench --quick # bundled 20s sample + reference transcript
|
||||
magnotia-bench --model <path> --audio <wav> --transcript <txt>
|
||||
magnotia-bench --compare <profile.toml> # benchmark a specific profile vs default
|
||||
lumotia-bench --quick # bundled 20s sample + reference transcript
|
||||
lumotia-bench --model <path> --audio <wav> --transcript <txt>
|
||||
lumotia-bench --compare <profile.toml> # benchmark a specific profile vs default
|
||||
```
|
||||
|
||||
### Execution model
|
||||
@@ -102,7 +102,7 @@ A 20-second public-domain speech clip with a known-good reference transcript, co
|
||||
```toml
|
||||
[benchmarked_at]
|
||||
timestamp = "2026-04-21T14:32:00Z"
|
||||
magnotia_version = "0.1.0"
|
||||
lumotia_version = "0.1.0"
|
||||
model = "whisper-distil-large-v3"
|
||||
|
||||
[hardware]
|
||||
@@ -143,31 +143,31 @@ crates/bench/
|
||||
└── profile.rs # TOML serialise
|
||||
```
|
||||
|
||||
Depends on `magnotia-transcription` + `magnotia-llm` + `magnotia-audio` as path deps so it reuses the existing model-loading code.
|
||||
Depends on `lumotia-transcription` + `lumotia-llm` + `lumotia-audio` as path deps so it reuses the existing model-loading code.
|
||||
|
||||
### Acceptance
|
||||
|
||||
- `magnotia-bench --quick` runs unattended to completion on a fresh install
|
||||
- `lumotia-bench --quick` runs unattended to completion on a fresh install
|
||||
- Produces a valid `gpu-profile.toml`
|
||||
- "Apply auto-tuned" button in Settings consumes the TOML and updates Phase 1 toggles (restart banner fires as expected)
|
||||
- Re-running with `--compare <profile>` produces reproducible-enough numbers (RTF within 5% run-to-run)
|
||||
|
||||
---
|
||||
|
||||
## Phase 3-lite — `magnotia-configs` community repo
|
||||
## Phase 3-lite — `lumotia-configs` community repo
|
||||
|
||||
**Effort**: 3 days (1 for repo + seeds, 2 for Magnotia-side fetch + apply UI).
|
||||
**Effort**: 3 days (1 for repo + seeds, 2 for Lumotia-side fetch + apply UI).
|
||||
|
||||
**What ships**: A separate public GitHub repo `magnotia-configs` (not part of the magnotia main repo) seeded with 2–3 curated configs. Magnotia's Settings page gets a "Browse community configs" button that fetches matching configs for the user's detected hardware.
|
||||
**What ships**: A separate public GitHub repo `lumotia-configs` (not part of the lumotia main repo) seeded with 2–3 curated configs. Lumotia's Settings page gets a "Browse community configs" button that fetches matching configs for the user's detected hardware.
|
||||
|
||||
### Repo structure
|
||||
|
||||
```
|
||||
magnotia-configs/
|
||||
lumotia-configs/
|
||||
├── README.md # pitch + how to benefit
|
||||
├── CONTRIBUTING.md # required fields, benchmark protocol, fork/PR flow
|
||||
├── SCHEMA.md # TOML schema documentation
|
||||
├── index.json # manifest for Magnotia to discover configs
|
||||
├── index.json # manifest for Lumotia to discover configs
|
||||
└── configs/
|
||||
├── nvidia/
|
||||
│ ├── rtx-3060-12gb-linux.toml
|
||||
@@ -190,15 +190,15 @@ notes = "Tested with 1-hour continuous dictation session, no crashes."
|
||||
|
||||
### Contribution flow (manual, honour-system MVP)
|
||||
|
||||
1. User runs `magnotia-bench` on their hardware.
|
||||
2. User runs `magnotia-bench --compare` against baseline to confirm improvement isn't noise.
|
||||
3. User forks `magnotia-configs`, commits their TOML under `configs/<vendor>/`, opens PR.
|
||||
1. User runs `lumotia-bench` on their hardware.
|
||||
2. User runs `lumotia-bench --compare` against baseline to confirm improvement isn't noise.
|
||||
3. User forks `lumotia-configs`, commits their TOML under `configs/<vendor>/`, opens PR.
|
||||
4. Maintainer reviews format + plausibility, merges.
|
||||
5. No CI replay — revisit if spam becomes a problem.
|
||||
|
||||
### Magnotia integration
|
||||
### Lumotia integration
|
||||
|
||||
- New Tauri command `fetch_community_configs(gpu_fingerprint)` — HTTPS GET `https://raw.githubusercontent.com/<org>/magnotia-configs/main/index.json` for the manifest, then fetches matching TOMLs
|
||||
- New Tauri command `fetch_community_configs(gpu_fingerprint)` — HTTPS GET `https://raw.githubusercontent.com/<org>/lumotia-configs/main/index.json` for the manifest, then fetches matching TOMLs
|
||||
- Fingerprint match: GPU name substring + VRAM tier (e.g., `"RTX 3060"` + `"12gb"`)
|
||||
- Settings "Browse community configs" button lists matches with submitter, claimed RTF improvement, and a preview of the toggle deltas
|
||||
- Applying a config updates Phase 1 toggles AND stores provenance (source = `"community"`, submitter, fetch date)
|
||||
@@ -206,13 +206,13 @@ notes = "Tested with 1-hour continuous dictation session, no crashes."
|
||||
### What we explicitly skip at MVP
|
||||
|
||||
- **No CI replay**. Maintainer eyeballs + honour system. Revisit past ~50 configs or on abuse.
|
||||
- **No automated upload from `magnotia-bench`**. User always commits + PRs manually. Zero privacy concerns, zero spam surface.
|
||||
- **No automated upload from `lumotia-bench`**. User always commits + PRs manually. Zero privacy concerns, zero spam surface.
|
||||
- **No sophisticated fingerprint normalisation**. Substring matching is sufficient.
|
||||
|
||||
### Acceptance
|
||||
|
||||
- Repo exists with README + CONTRIBUTING + 2–3 seed configs
|
||||
- Magnotia Settings fetches + lists + applies a community config end-to-end
|
||||
- Lumotia Settings fetches + lists + applies a community config end-to-end
|
||||
- "Revert to default" path works (Phase 1's reset)
|
||||
|
||||
---
|
||||
@@ -223,7 +223,7 @@ This is the UX the three phases together enable. All three are prerequisites; Ph
|
||||
|
||||
### First-launch onboarding nudge
|
||||
|
||||
After the existing first-run model download, Magnotia surfaces a non-modal card:
|
||||
After the existing first-run model download, Lumotia surfaces a non-modal card:
|
||||
|
||||
```
|
||||
🎛 GPU Optimisation
|
||||
@@ -241,7 +241,7 @@ Two steps, in this order:
|
||||
|
||||
**Step 1 — Community config check (instant, ~2 s)**
|
||||
|
||||
Magnotia fingerprints the GPU and queries the `magnotia-configs` manifest for matches. If a match exists, a preview card appears:
|
||||
Lumotia fingerprints the GPU and queries the `lumotia-configs` manifest for matches. If a match exists, a preview card appears:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
@@ -271,13 +271,13 @@ If no community match, or the user prefers their own measurement:
|
||||
│ │
|
||||
│ We can benchmark your machine to find the │
|
||||
│ best settings. Takes ~8 minutes; runs in │
|
||||
│ the background while you keep using Magnotia. │
|
||||
│ the background while you keep using Lumotia. │
|
||||
│ │
|
||||
│ [ Benchmark my GPU ] [ Skip ] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Kicks off `magnotia-bench` as a background process. Magnotia keeps working during the run.
|
||||
Kicks off `lumotia-bench` as a background process. Lumotia keeps working during the run.
|
||||
|
||||
### Progress UI during benchmark
|
||||
|
||||
@@ -307,7 +307,7 @@ Plus a "Revert to previous config" button, active for 7 days after any change, i
|
||||
|
||||
### Optional — sharing back to the community
|
||||
|
||||
After a successful local benchmark that shows meaningful gains, Magnotia prompts:
|
||||
After a successful local benchmark that shows meaningful gains, Lumotia prompts:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
@@ -325,7 +325,7 @@ After a successful local benchmark that shows meaningful gains, Magnotia prompts
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
"Create PR" opens the user's browser to `github.com/…/magnotia-configs/new/main` with the TOML prefilled in the PR body. User finishes the submission on GitHub (still honour-system; no automated uploads, no telemetry).
|
||||
"Create PR" opens the user's browser to `github.com/…/lumotia-configs/new/main` with the TOML prefilled in the PR body. User finishes the submission on GitHub (still honour-system; no automated uploads, no telemetry).
|
||||
|
||||
### Non-GPU / integrated-only fallback
|
||||
|
||||
@@ -333,7 +333,7 @@ If `sysinfo` reports no dedicated GPU or Vulkan isn't available, the card replac
|
||||
|
||||
```
|
||||
🎛 GPU Optimisation
|
||||
No dedicated GPU detected — Magnotia is using CPU inference.
|
||||
No dedicated GPU detected — Lumotia is using CPU inference.
|
||||
GPU tuning doesn't apply to this setup.
|
||||
```
|
||||
|
||||
@@ -345,7 +345,7 @@ For users whose GPU has a community-contributed config, the experience is **lite
|
||||
|
||||
For users without a community match, the experience is **two clicks** (trigger bench → apply results on completion), with a passive ~8-minute background wait in between.
|
||||
|
||||
For users on integrated graphics / no GPU, the experience is **zero clicks** — Magnotia tells them GPU tuning doesn't apply and moves on.
|
||||
For users on integrated graphics / no GPU, the experience is **zero clicks** — Lumotia tells them GPU tuning doesn't apply and moves on.
|
||||
|
||||
---
|
||||
|
||||
@@ -353,7 +353,7 @@ For users on integrated graphics / no GPU, the experience is **zero clicks** —
|
||||
|
||||
Strict linear: Phase 1 → Phase 2 → Phase 3-lite. Each phase merges to `main` and gets dogfooded before the next starts.
|
||||
|
||||
- Phase 1 is a prereq for Phase 2 — `magnotia-bench`'s output needs the Phase 1 settings schema to be its consumption target.
|
||||
- Phase 1 is a prereq for Phase 2 — `lumotia-bench`'s output needs the Phase 1 settings schema to be its consumption target.
|
||||
- Phase 2 is a prereq for Phase 3-lite — the community repo's config TOML schema **is** Phase 2's output schema (with an added `[attribution]` section).
|
||||
|
||||
## Shelved with rationale
|
||||
@@ -361,4 +361,4 @@ Strict linear: Phase 1 → Phase 2 → Phase 3-lite. Each phase merges to `main`
|
||||
- **Phase 4 — custom SPIR-V shader drops.** Blocked on `ggml`-dedup workstream. Pinned in memory.
|
||||
- **Phase 5 — agentic (Karpathy-style) autotune.** Phase 2's grid search produces schema-compatible results, so Phase 5 can drop in later without a schema break. Pinned.
|
||||
- **Phase 3's CI replay.** Defer until spam / bad-config abuse is a real problem rather than a hypothetical one. Honour-system PR review is sufficient for the MVP community.
|
||||
- **`magnotia-bench` automated upload.** Deliberately manual for MVP — removes all privacy / spam / rate-limiting concerns. Revisit when the community volume justifies the infrastructure.
|
||||
- **`lumotia-bench` automated upload.** Deliberately manual for MVP — removes all privacy / spam / rate-limiting concerns. Revisit when the community volume justifies the infrastructure.
|
||||
|
||||
Reference in New Issue
Block a user