2.1 KiB
2.1 KiB
001 — v1.0 Consolidation
Foundation milestone: fixed all SetContext data races, established the test infrastructure, consolidated SQL, and tuned backend + frontend performance so feature work could safely follow.
Shipped: 2026-03-05 · Phases: 1-8
What landed
- Phase 1 — Concurrency race fixes. Mutex-protected
SetContextacross queue, library, playlist, player; collapsed Player double-lock. App runs-race-clean. - Phase 2 — Backend correctness.
startupErrmoved to struct field; config files written 0o644; MPRIS callback errors logged;Library.Scan()separates warnings (ScanMetrics) from fatal errors (return value). - Phase 3 — Test infrastructure.
database.NewTestDB(t)returns an in-memory SQLite with full migrations + production PRAGMAs (synchronous=NORMAL,cache_size=-8000,mmap_size=67108864). - Phase 4 — Queue/Config/Player tests. ~30 tests covering SetQueue, navigation, shuffle, repeat modes, persistence, config load/save roundtrip, volume conversion, format detection.
- Phase 5 — Database/Library tests. ~25 tests covering FTS5 search, search index rebuild, migrations, scan logic, entity cache.
- Phase 6 — SQL consolidation. 5-table FTS5 JOIN consolidated into the
track_metadataVIEW; AST-based event codegen (Go → TypeScript) with pre-commit hook;sqlc.slice()for queue batch lookups; every hand-crafted SQL statement carries a// SAFETY:comment explaining why. - Phase 7 — Backend performance. Incremental queue persistence (O(1) add/remove), SetQueue Phase-2 dedup, library store deferred loading.
- Phase 8 — Frontend performance. Lit
repeat()with stable keys;queueMicrotasknotification batching; design token system; visual consistency audit across 15 components.
Key decisions retained
- No cosmetic file splitting — extract only when reuse or correctness demands it.
- Tests as a means to safe refactoring, not a coverage target.
- Fix races → tests → refactoring order is mandatory: can't run
-race-clean tests with active races; can't safely refactor without tests.