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,12 +1,12 @@
|
||||
---
|
||||
name: Phase 8 — Forgiving gamification (design)
|
||||
description: Design spec for Magnotia Phase 8. Surfaces today's completion count and a 7-day momentum sparkline on the Tasks header. No streaks, no grace days, no loss language.
|
||||
description: Design spec for Lumotia Phase 8. Surfaces today's completion count and a 7-day momentum sparkline on the Tasks header. No streaks, no grace days, no loss language.
|
||||
type: spec
|
||||
tags: [spec, phase-8, magnotia, tasks, gamification]
|
||||
tags: [spec, phase-8, lumotia, tasks, gamification]
|
||||
created: 2026/04/24
|
||||
status: approved
|
||||
phase: 8
|
||||
roadmap: docs/roadmap/2026-04-23-magnotia-feature-complete-roadmap.md
|
||||
roadmap: docs/roadmap/2026-04-23-lumotia-feature-complete-roadmap.md
|
||||
author: Wren (CORBEL's resident agent) on behalf of Jake Sames
|
||||
---
|
||||
|
||||
@@ -92,7 +92,7 @@ Query groups matching rows by local-day and then left-joins against a generated
|
||||
// - window focus (for day rollover while the app stayed open overnight)
|
||||
```
|
||||
|
||||
**Why not hook off `magnotia:task-completed` alone:** that event only fires on completion, not on uncomplete or delete, and relying on it would leave the badge stale after either of those paths. Refreshing at the mutation-helper level captures every path that can change today's count.
|
||||
**Why not hook off `lumotia:task-completed` alone:** that event only fires on completion, not on uncomplete or delete, and relying on it would leave the badge stale after either of those paths. Refreshing at the mutation-helper level captures every path that can change today's count.
|
||||
|
||||
**`src/lib/pages/TasksPage.svelte` header:**
|
||||
Stacks to:
|
||||
@@ -150,7 +150,7 @@ Only the sparkline respects the toggle. The badge is always on.
|
||||
- Migration v13: applies cleanly against a DB populated at v12; default of `auto_completed = 0` on pre-existing rows verified.
|
||||
|
||||
### Frontend (`npm run check` + vitest)
|
||||
- `completionStats` store refreshes on `magnotia:task-completed` event.
|
||||
- `completionStats` store refreshes on `lumotia:task-completed` event.
|
||||
- `todayCount` derives from the last entry.
|
||||
- Sparkline renders exactly 7 bars for a populated fixture.
|
||||
- Sparkline hidden when `showMomentumSparkline === false`.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: Phase 9 — Polish debt (design)
|
||||
description: Design spec for Magnotia Phase 9. Closes six polish-debt items from the feature-complete roadmap plus the Phase 8 carryover backlog. File-system save dialog, bulk History export, on-demand LLM content tags, progressive-disclosure Settings restructure, visual polish, accessibility sweep.
|
||||
description: Design spec for Lumotia Phase 9. Closes six polish-debt items from the feature-complete roadmap plus the Phase 8 carryover backlog. File-system save dialog, bulk History export, on-demand LLM content tags, progressive-disclosure Settings restructure, visual polish, accessibility sweep.
|
||||
type: spec
|
||||
tags: [spec, phase-9, magnotia, polish, accessibility, settings, export, llm]
|
||||
tags: [spec, phase-9, lumotia, polish, accessibility, settings, export, llm]
|
||||
created: 2026/04/24
|
||||
status: approved
|
||||
phase: 9
|
||||
roadmap: docs/roadmap/2026-04-23-magnotia-feature-complete-roadmap.md
|
||||
roadmap: docs/roadmap/2026-04-23-lumotia-feature-complete-roadmap.md
|
||||
author: Wren (CORBEL's resident agent) on behalf of Jake Sames
|
||||
---
|
||||
|
||||
@@ -18,7 +18,7 @@ Close the last polish-debt items before Phase 10 (QC + rename + release). Six it
|
||||
|
||||
1. **File-system `.md` save dialog** — replaces clipboard-only export on HistoryPage + DictationPage + FilesPage.
|
||||
2. **Bulk select + bulk export in History** — multi-select rows, export as a directory of `.md` files.
|
||||
3. **LLM content tags** — on-demand `topic:*` + `intent:*` extraction using `magnotia-llm`, persisted on history rows.
|
||||
3. **LLM content tags** — on-demand `topic:*` + `intent:*` extraction using `lumotia-llm`, persisted on history rows.
|
||||
4. **Settings UX overhaul** — progressive disclosure. High-frequency settings always-visible; advanced behind `<details>` groups. Phase 8 sparkline toggle relocated out of Rituals.
|
||||
5. **Visual polish pass** — spacing, typography, motion curves, dark-mode parity. Absorbs Phase 8 motion backlog on badge + sparkline.
|
||||
6. **Accessibility pass** — keyboard navigation, focus order, screen reader labels (friendlier sparkline aria copy), WCAG AA contrast. Absorbs Phase 8 a11y backlog.
|
||||
@@ -298,9 +298,9 @@ Natural split for the plan: 9a (items 1 + 2), 9b (item 3), 9c (item 4), 9d (item
|
||||
|
||||
## Anchors
|
||||
|
||||
- Roadmap: [docs/roadmap/2026-04-23-magnotia-feature-complete-roadmap.md](../../roadmap/2026-04-23-magnotia-feature-complete-roadmap.md)
|
||||
- Roadmap: [docs/roadmap/2026-04-23-lumotia-feature-complete-roadmap.md](../../roadmap/2026-04-23-lumotia-feature-complete-roadmap.md)
|
||||
- Phase 8 plan + spec + handover — for task-format reference and carryover backlog.
|
||||
- Phase 8 gotchas to respect in this phase:
|
||||
- `$derived` does not export at `.svelte.ts` module scope — use `export function` instead.
|
||||
- `#[derive(sqlx::FromRow)]` is not available in `magnotia-storage` (no change in Phase 9, but noted if schema work drifts there).
|
||||
- `#[derive(sqlx::FromRow)]` is not available in `lumotia-storage` (no change in Phase 9, but noted if schema work drifts there).
|
||||
- Progressive-disclosure pattern reference: NN/g on progressive disclosure; Material Design settings patterns; UX Collective on settings redesign.
|
||||
|
||||
@@ -35,7 +35,7 @@ The Apple "30% perf for 50% power" framing is empirical, not a published softwar
|
||||
|
||||
- **New** `crates/core/src/power.rs` — `PowerState`, sysfs probe, TTL cache.
|
||||
- **New** `crates/core/src/tuning.rs` — `Workload`, `inference_thread_count(workload, gpu_offloaded)`.
|
||||
- **Move** `vulkan_loader_available()` from `src-tauri/src/commands/models.rs` to `magnotia_core::hardware`. `crates/transcription` needs to call it; src-tauri continues to call it from its new home. `libloading = "0.8"` becomes a workspace dependency of `magnotia-core`.
|
||||
- **Move** `vulkan_loader_available()` from `src-tauri/src/commands/models.rs` to `lumotia_core::hardware`. `crates/transcription` needs to call it; src-tauri continues to call it from its new home. `libloading = "0.8"` becomes a workspace dependency of `lumotia-core`.
|
||||
- **Update** `crates/transcription/src/whisper_rs_backend.rs` — compute `gpu_offloaded`, pass to helper.
|
||||
- **Update** `crates/llm/src/lib.rs` — compute `gpu_offloaded`, pass to helper. (Recompute *after* the model loads, since `model.n_layer()` requires the loaded model.)
|
||||
- **Deprecate facade** `crates/core/src/constants.rs::inference_thread_count()` — keep as `#[deprecated]` re-export pointing at `tuning::inference_thread_count` for one commit, then remove.
|
||||
@@ -149,7 +149,7 @@ let gpu_offloaded = use_gpu
|
||||
|
||||
```rust
|
||||
let gpu_offloaded = cfg!(feature = "whisper-vulkan")
|
||||
&& magnotia_core::hardware::vulkan_loader_available();
|
||||
&& lumotia_core::hardware::vulkan_loader_available();
|
||||
```
|
||||
|
||||
Compile-time feature check (`whisper-vulkan` is in default features) plus runtime libvulkan resolution. If libvulkan1 isn't installed, whisper-rs falls back to CPU and we should not under-thread.
|
||||
@@ -227,6 +227,6 @@ inference_thread_count: 3 workload=Whisper gpu_offloaded=false on_battery=true c
|
||||
|
||||
- All four panels of `thread_sweep.rs` print without panic on a 6c12t Ryzen.
|
||||
- New unit tests pass on Linux (and on macOS CI where applicable; sysfs tests cfg-gated to Linux).
|
||||
- Existing `cargo test -p magnotia-core` and `-p magnotia-llm` continue to pass.
|
||||
- Existing `cargo test -p lumotia-core` and `-p lumotia-llm` continue to pass.
|
||||
- A real Lumenote session with on-battery laptop logs `on_battery=true clamps=[battery]` at first inference call.
|
||||
- Manual smoke: kick a Whisper Tiny transcription on battery, verify CPU usage settles around half what it was on AC.
|
||||
|
||||
Reference in New Issue
Block a user