- Add selectedLibraryId state + ByLibrary conditional calls to library-store - Add library filter pass-through methods to library-controller - Create library-filter dropdown component in top bar - Wire genre-details, cover-grid, artists-view, genres-view to use ByLibrary queries - Update album-selection helper to respect library filter - Regenerate Wails bindings for new ByLibrary methods - Search remains client-side (automatically filtered by loaded data) - Playlists remain unfiltered (use separate playlist store)
4.3 KiB
4.3 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, requirements-completed, duration, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | requirements-completed | duration | completed | |||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 13-library-views-phantom-tracks | 01 | database, api |
|
|
|
|
|
|
|
|
|
5min | 2026-03-16 |
Phase 13 Plan 01: Library-Filtered Backend Queries Summary
Seven ByLibrary sqlc query variants + eight Go wrapper methods + library-scoped FTS5 search enabling per-library browse views
Performance
- Duration: 5 min
- Started: 2026-03-16T13:24:17Z
- Completed: 2026-03-16T13:29:24Z
- Tasks: 2
- Files modified: 10
Accomplishments
- Added 7 ByLibrary SQL query variants for all browse views (tracks, albums, artists, genres)
- Added 8 exported Go methods on Library struct for Wails frontend binding
- Added SearchFTSTracksByLibrary on DB struct for library-scoped full-text search
- All existing unfiltered queries remain unchanged for "All Libraries" default view
Task Commits
Each task was committed atomically:
- Task 1: Add library-filtered sqlc queries for all browse views -
5cc58ce(feat) - Task 2: Add library-filtered Go query methods and FTS search -
5f7de50(feat)
Files Created/Modified
backend/database/sql/queries/audio_files.sql- GetAllTracksWithFullMetadataByLibrary, GetAudioFilesByReleaseGroupByLibrarybackend/database/sql/queries/release_groups.sql- GetAllAlbumsWithDetailsByLibrary, GetAlbumsByArtistByLibrarybackend/database/sql/queries/artists.sql- GetAlbumArtistsByLibrarybackend/database/sql/queries/genres.sql- GetTracksByGenreByLibrary, GetAllGenresWithCountsByLibrarybackend/database/sql/sqlcgen/*.sql.go- sqlc-generated Go code for all new queriesbackend/database/search.go- SearchFTSTracksByLibrary methodbackend/library/query.go- Eight ByLibrary wrapper methods on Library struct
Decisions Made
- Used IN-subquery pattern for album/artist/genre library filtering since entities are global but tracks belong to libraries
- Return empty slice (not error) when library has no tracks — empty library is valid state, not an error condition
Deviations from Plan
None - plan executed exactly as written.
Issues Encountered
None
User Setup Required
None - no external service configuration required.
Next Phase Readiness
- Backend library-filtered queries complete, ready for Plan 02 (frontend library selector UI and phantom track handling)
- All 8 new methods are Wails-bindable (exported, on exported Library struct)
Self-Check: PASSED
- All 10 modified files exist on disk
- Both task commits found in git log (
5cc58ce,5f7de50) - SUMMARY.md exists at expected path
go build -tags webkit2_41 ./...compiles cleanlymake lintpasses with 0 issues
Phase: 13-library-views-phantom-tracks Completed: 2026-03-16