docs: restructure v1.1 milestone for multi-library support

- Rename milestone from 'Features & Extensibility' to 'Multi-Library Support'
- Replace old phases 10-14 (TAG/SMRT/GAP/MB/LAYOUT/PLUG) with 20 multi-library requirements (LIB/LSCAN/VIEW/PLAY/DATA)
- Move deferred features to Future Requirements
- Update research files with multi-library research (Stack, Features, Architecture, Pitfalls)
- Architecture: hybrid model (library_id on audio_files only), libraries in DB, sequential scanning, phantom tracks
This commit is contained in:
2026-03-08 11:54:37 -04:00
parent 595b5e1529
commit cdf8bff01a
9 changed files with 452 additions and 2721 deletions
+21 -16
View File
@@ -44,10 +44,15 @@ The music player works reliably and feels solid. Every interaction is correct, r
### Active
- [ ] Multi-library support — manage multiple library directories with per-library scanning and unified presentation
- [ ] Library filtering — view tracks from all libraries or filter to a specific library
- [ ] Cross-library playlists — playlists can reference tracks from any library
- [ ] Phantom tracks — playlist entries preserved with metadata when a library is removed
### Deferred (Future Milestones)
- [ ] Tag editing — edit track metadata (title, artist, album, etc.) from within the app
- [ ] Scan cancellation — cancel in-progress library scans
- [ ] Smart playlists — auto-generated playlists with simple filter rules (genre, year, play count, etc.)
- [ ] Customizable keyboard shortcuts — configurable key bindings for common player actions
- [ ] Gapless playback + crossfade — seamless track transitions with optional crossfade setting
- [ ] MusicBrainz browser — read-only catalog browsing (artists, discographies, album editions, track listings)
- [ ] Layout customization system — section-based UI customization, components declare size constraints, users configure per-section
@@ -55,29 +60,29 @@ The music player works reliably and feels solid. Every interaction is correct, r
### Out of Scope
- Tag writing (track metadata editing) — feature work, not consolidation
- Scan cancellation — feature work, deferred to future milestone
- Separate databases per library — overly complex, defeats unified presentation
- Auto-dedup across libraries — complex matching logic, not table stakes
- User access control per library — desktop app, single user
- Parallel library scanning — SQLite single-writer makes it pointless
- Cross-platform media controls (macOS/Windows) — feature work
- Database health checking / reconnection — low priority, desktop app context
- File decomposition for its own sake — only extract when it enables reuse or fixes problems
- ORM or query builder — would fight existing sqlc architecture
- Connection pooling for SQLite — meaningless with SetMaxOpenConns(1)
## Current Milestone: v1.1 Features & Extensibility
## Current Milestone: v1.1 Multi-Library Support
**Goal:** Add core missing features and build the foundations for a customizable, extensible music player.
**Goal:** Transform YellowJacket from a single-directory player into a multi-library music manager with unified presentation, per-library scanning, and graceful library lifecycle management.
**Target features:**
- Tag editing (track metadata editing from within the app)
- Scan cancellation (cancel in-progress library scans)
- Smart playlists (simple filter rules — genre, year, play count, etc.)
- Customizable keyboard shortcuts (configurable key bindings)
- Gapless playback + crossfade (seamless transitions, optional crossfade)
- MusicBrainz browser (read-only catalog: artists, discographies, album editions)
- Layout customization system (MusicBee-style section-based UI configuration)
- Plugin system (full-access API for UI + backend extensibility)
- Library CRUD (add/rename/remove library directories via UI)
- Per-library scanning (scan individual libraries, sequential coordination)
- Unified presentation (merged "All Libraries" view, optional per-library filtering)
- Cross-library playlists (playlists reference tracks from any library)
- Phantom tracks (playlist entries preserved when library removed)
- Config migration (TOML DirectoryPath -> DB libraries table)
**"Done" criteria:** Core features complete and working. Big features (layout, plugins, MusicBrainz) have working foundations — functional but not necessarily feature-complete.
**"Done" criteria:** Users can manage multiple library directories, scan them independently, view tracks from all or one library, and playlists survive library removal with phantom entries.
## Context
@@ -124,4 +129,4 @@ The music player works reliably and feels solid. Every interaction is correct, r
| Design tokens via :host scope | Component-level token scope matches Lit's shadow DOM encapsulation | ✓ Good — consistent visual language achieved |
---
*Last updated: 2026-03-06 after v1.1 milestone start*
*Last updated: 2026-03-08 after v1.1 restructure for multi-library support*