yonlu
8c8dca31e5
docs(09-05): complete integration testing & verification plan
...
- Created 09-05-SUMMARY.md documenting build verification and human approval
- Updated STATE.md: Phase 9 complete (5/5 plans, 1 phase done)
- Updated ROADMAP.md: Phase 9 and all plans marked complete
- Documented volume data flow bug fix (bb3fd20 ) as deviation
2026-03-07 10:08:35 -05:00
yonlu
bb3fd204f0
fix(09-05): emit VolumeChanged event and persist state in ChangeVolume and MuteToggle
2026-03-07 02:06:08 -05:00
yonlu
77328e95dc
docs(09-04): complete keyboard shortcuts settings UI plan
...
- SUMMARY.md with task commits and deviation documentation
- STATE.md advanced to Plan 5 of 5 (80% complete)
- ROADMAP.md updated with 4/5 plans progress
- Requirements KEY-02 and KEY-03 marked complete
2026-03-06 22:00:38 -05:00
yonlu
0451fb3880
feat(09-04): add keyboard shortcuts section to config page with conflict detection
...
- Keyboard Shortcuts section with shortcuts grouped by Player, Navigation, App categories
- All 16 default shortcuts listed with human-readable labels
- shortcut-capture widget for each action enables record-style rebinding
- Conflict detection warns before overwriting existing bindings with Overwrite/Cancel
- Reset All to Defaults button calls store.resetAll()
- Panel-specific shortcuts display scope label (e.g. track-list)
- ShortcutsController provides reactive state updates
2026-03-06 21:58:13 -05:00
yonlu
0706f804a4
docs(09-03): complete scan control UI plan
...
- SUMMARY.md with scan control UI outcomes and deviations
- STATE.md updated to plan 4 of 5 (60% progress)
- ROADMAP.md updated with 3/5 plan progress
2026-03-06 21:57:47 -05:00
yonlu
391436927c
feat(09-03): add scan control UI with pause/resume/cancel and confirmation dialog
...
- Pause/Resume buttons replace Soft Scan/Full Rescan during active scan
- Cancel button shows confirmation dialog with Keep/Discard/Continue options
- Register LibraryScanPaused/Resumed/Cancelled event handlers
- Status bar shows 'Scan paused.' with accent color when paused
- Add CancelScan/PauseScan/ResumeScan Wails binding stubs
- Cancel dialog overlay dismissible by clicking outside or Continue Scanning
- Add cancelled field to ScanMetrics TypeScript interface
2026-03-06 21:54:50 -05:00
yonlu
6bb266e234
docs(09-02): complete keyboard shortcuts config & service plan
...
- Create 09-02-SUMMARY.md with execution metrics and decisions
- Update STATE.md: advance to plan 3, record metrics
- Mark KEY-01, KEY-04, KEY-05 requirements complete
2026-03-06 21:51:21 -05:00
yonlu
40d48151dd
feat(09-02): add frontend keyboard shortcut service, store, and controller
...
- Create keyboard-shortcut-service.ts singleton with keydown listener
- Shadow DOM active element resolution for scope detection
- Text input suppression (only Escape passes through)
- Scope resolution: text-input > panel-specific > global
- Action dispatch to player/queue stores and Wails bindings
- Create shortcuts-store.ts with Wails persistence and event sync
- Create shortcuts-controller.ts for Lit component integration
- Export store and controller from store/index.ts
- Replace hardcoded Ctrl+F handler in index.ts with service
- Initialize service via import in frontend/index.ts
2026-03-06 21:48:52 -05:00
yonlu
6285ca9dc4
feat(09-02): add shortcuts config package with default bindings and Wails persistence
...
- Create backend/shortcuts/config.go with DefaultBindings(), ApplyDefaults(), Validate()
- Wire Shortcuts field into main Config struct with TOML persistence
- Add GetShortcuts, SetShortcuts, SetShortcut, ResetShortcuts Wails binding methods
- Regenerate Wails TypeScript bindings for new config methods
- Fix wsl lint in library.go (blank line before logger call)
2026-03-06 21:46:09 -05:00
yonlu
42add7fec4
docs(09-01): complete scan control backend plan
...
- Create 09-01-SUMMARY.md with execution metrics and decisions
- Update STATE.md with plan progress and session continuity
- Update ROADMAP.md: mark 09-01 plan complete
- Mark SCAN-01, SCAN-02, SCAN-03 requirements complete
2026-03-06 21:35:39 -05:00
yonlu
cf22e52a64
feat(09-01): add scan control fields and per-scan cancellable context
...
- Add scanActive, scanCancel, scanPaused, scanPauseCh fields to Library struct
- Create scan_control.go with CancelScan, PauseScan, ResumeScan, IsScanActive, IsScanPaused
- Thread per-scan scanCtx through walk and worker pipeline
- Add waitIfPaused checkpoint before each worker extraction
- Skip orphan cleanup and variant generation on cancelled scan
- Emit LibraryScanCancelled instead of LibraryScanComplete when cancelled
2026-03-06 21:30:49 -05:00
yonlu
c695024241
feat(09-01): add scan control events and cancelled metrics field
...
- Add LibraryScanCancelled, LibraryScanPaused, LibraryScanResumed events
- Regenerate frontend/src/events.ts via go generate
- Add Cancelled bool field to ScanMetrics struct
2026-03-06 21:28:37 -05:00
yonlu
08ff00f029
docs(09): create phase plan — 5 plans in 3 waves for scan cancellation & keyboard shortcuts
2026-03-06 13:20:35 -05:00
yonlu
71c200bc5b
docs(09): research phase domain
2026-03-06 11:39:48 -05:00
yonlu
170f6b1b84
docs(state): record phase 9 context session
2026-03-06 11:32:40 -05:00
yonlu
7c30e87895
docs(09): capture phase context
2026-03-06 11:32:22 -05:00
yonlu
e0b88f1a72
docs: create milestone v1.1 roadmap (6 phases)
2026-03-06 11:08:30 -05:00
yonlu
fc7ef4213f
docs: define milestone v1.1 requirements
2026-03-06 11:04:49 -05:00
yonlu
224411bbed
docs: complete v1.1 project research
2026-03-06 10:49:03 -05:00
yonlu
ac3bd4beb4
docs: start milestone v1.1 Features & Extensibility
2026-03-06 10:31:05 -05:00
yonlu
32a8d07644
fixed makefile to workaround obfuscation bug, changed gpu policy to fix wayland issue
2026-03-06 09:53:46 -05:00
github-actions[bot]
c6c5ece956
chore(release): 1.2.2 [skip ci]
...
## [1.2.2](https://github.com/onion-4-dinner/yellowjacket/compare/v1.2.1...v1.2.2 ) (2026-03-06)
### Bug Fixes
* recover from go-mp3 seek panic on startup ([#86 ](https://github.com/onion-4-dinner/yellowjacket/issues/86 )) ([2f9d9f8 ](https://github.com/onion-4-dinner/yellowjacket/commit/2f9d9f8508b90b6188fe894c282c5b8e330e8046 ))
2026-03-06 06:08:50 +00:00
logan
2f9d9f8508
fix: recover from go-mp3 seek panic on startup ( #86 )
...
The go-mp3 library (v0.3.4) has a bug where Seek panics with a slice
bounds error for certain byte positions. This crashes the app when
restoring a saved playback position on startup.
Add bounds clamping and a recover wrapper around the seek call in
seekLocked to convert the panic into a graceful error. When the seek
fails, playback starts from the beginning instead of crashing.
2026-03-06 00:08:11 -06:00
github-actions[bot]
82aef0825b
chore(release): 1.2.1 [skip ci]
...
## [1.2.1](https://github.com/onion-4-dinner/yellowjacket/compare/v1.2.0...v1.2.1 ) (2026-03-06)
### Bug Fixes
* **deps:** pin go-webview2 to v1.0.21 for Wails v2 compat ([25f0fe8 ](https://github.com/onion-4-dinner/yellowjacket/commit/25f0fe81560eeff36a0b2beb52ce1bdf13d5e122 ))
2026-03-06 01:35:02 +00:00
yonlu
4e4d1e078e
Merge pull request #85 from onion-4-dinner/fix/pin-go-webview2
...
fix(deps): pin go-webview2 to v1.0.21 for Wails v2 compat
2026-03-05 20:34:30 -05:00
yonlu
25f0fe8156
fix(deps): pin go-webview2 to v1.0.21 for Wails v2 compat
2026-03-05 20:25:20 -05:00
github-actions[bot]
f01d9c2090
chore(release): 1.2.0 [skip ci]
...
## [1.2.0](https://github.com/onion-4-dinner/yellowjacket/compare/v1.1.3...v1.2.0 ) (2026-03-06)
### Features
* **02-02:** add ScanWarning type and reclassify scan errors as warnings ([e6866de ](https://github.com/onion-4-dinner/yellowjacket/commit/e6866ded9dc0ea30ff942cd31b6c5ea3269e9584 ))
* **03-01:** create NewTestDB helper for in-memory SQLite test databases ([bae9d70 ](https://github.com/onion-4-dinner/yellowjacket/commit/bae9d70d23157ef4e79e60dd713d9a02ab63790b ))
* **03-01:** extract shared applyPRAGMAs and add production PRAGMAs to NewDB ([d348815 ](https://github.com/onion-4-dinner/yellowjacket/commit/d34881530adda7fb75be84737798da46d17bfa8c ))
* **06-01:** create track_metadata VIEW schema and migration 4 ([9c7e5a9 ](https://github.com/onion-4-dinner/yellowjacket/commit/9c7e5a96344a81bf132de487b4763f1dc3ff6df9 ))
* **06-02:** create Go→TypeScript event constant codegen tool ([3e9edd0 ](https://github.com/onion-4-dinner/yellowjacket/commit/3e9edd05e87395499ac24e456640d1f6d9b97f04 ))
* **06-03:** migrate lookupChunk to sqlc-generated LookupTrackMetaByPaths query ([2221a68 ](https://github.com/onion-4-dinner/yellowjacket/commit/2221a68459850a837c996c6e6d2bc95d41b20fb3 ))
* **08-01:** define design token CSS custom properties for icon sizes and type scale ([1444a66 ](https://github.com/onion-4-dinner/yellowjacket/commit/1444a66bb201ce5fdf16552a32bcd281089c64ed ))
* **08-04:** apply design tokens to cover-grid, track-list, queue-panel, and detail components ([1303422 ](https://github.com/onion-4-dinner/yellowjacket/commit/1303422e69c27d528363900b3ca5287a48cc9f8e ))
* **08-04:** convert sidebar em-based spacing to px and apply icon/type tokens ([aed90d7 ](https://github.com/onion-4-dinner/yellowjacket/commit/aed90d7b1710d0c5cece2e4956c0a6ce77b9a999 ))
* add scan progress bar with phase indicator ([a28b4d1 ](https://github.com/onion-4-dinner/yellowjacket/commit/a28b4d1e0673658824750d4c702359321dc9a78e ))
* **quick-001:** add multi-file picker and batch import support ([c34e4ad ](https://github.com/onion-4-dinner/yellowjacket/commit/c34e4ad029c119bff8f70a07ccc6bca58b11ea3c ))
* **quick-001:** regenerate bindings and update frontend for multi-import ([2a542bf ](https://github.com/onion-4-dinner/yellowjacket/commit/2a542bf3bcdc7772edb1aceb41f488774494f656 ))
* **quick-002:** add CountPlaylistsByName SQL query and regenerate sqlc ([04b2088 ](https://github.com/onion-4-dinner/yellowjacket/commit/04b2088b28b84a4d4df25b23d97112c5a955dff1 ))
* **quick-002:** add uniquePlaylistName helper and wire into ImportPlaylist ([8ba8bbe ](https://github.com/onion-4-dinner/yellowjacket/commit/8ba8bbe7bed2ecff97613ebaa42a49a662050353 ))
* **quick-006:** remove list icon from playlists, add favorites icon to default ([3c19766 ](https://github.com/onion-4-dinner/yellowjacket/commit/3c19766fd0885d4171cf9929db6d69a3d5c1a3ff ))
* **quick-11:** add configurable log level via YJ_LOG_LEVEL env var ([55b4902 ](https://github.com/onion-4-dinner/yellowjacket/commit/55b4902fac7b7f2c04ad5efac398ecedc5fedc2f ))
* **quick-11:** add make dev-debug target for verbose logging ([c45bca4 ](https://github.com/onion-4-dinner/yellowjacket/commit/c45bca411ba1d4f32deea6027acf91237173dd15 ))
* **quick-12:** add favorite icon to album dropdown track rows ([12a0bbc ](https://github.com/onion-4-dinner/yellowjacket/commit/12a0bbc89c19128485d597a61bd16bd0786450ad ))
* **quick-15:** add BufferedStreamer with goroutine read-ahead ([85b23ac ](https://github.com/onion-4-dinner/yellowjacket/commit/85b23acb24a048d2f7b85808e477bb991ae124e6 ))
* **quick-15:** insert BufferedStreamer into player pipeline and increase speaker buffer ([8a0b16a ](https://github.com/onion-4-dinner/yellowjacket/commit/8a0b16a4ec08a95bfd3834c8216e21dce854432d ))
* **quick-3:** add playlist-level multi-select state and selection handling ([e13151f ](https://github.com/onion-4-dinner/yellowjacket/commit/e13151ffa5dc86e41ce242421679d65a740c3af0 ))
* **quick-3:** wire playlist context menu for batch delete of selected playlists ([c92ced2 ](https://github.com/onion-4-dinner/yellowjacket/commit/c92ced2c74e72bfc123c880c047462dc969cde34 ))
* **quick-4:** add 'Set as Default Playlist' context menu option ([9971b63 ](https://github.com/onion-4-dinner/yellowjacket/commit/9971b635b81fe3f8621c80a6664eccb3e1fc4bb8 ))
* **quick-5:** add CreatedAt/UpdatedAt to playlist Summary struct ([bdaff47 ](https://github.com/onion-4-dinner/yellowjacket/commit/bdaff478e802ee5c0745327c52dd9b190fcfef7d ))
* **quick-5:** add sort dropdown UI and client-side sorting to playlist view ([5c07485 ](https://github.com/onion-4-dinner/yellowjacket/commit/5c074855351f1363cc7918837a78bbd3c0b7ebf5 ))
* **quick-7:** add PinDefault config field with backend getter/setter ([6e123bd ](https://github.com/onion-4-dinner/yellowjacket/commit/6e123bd47f55e6d565f20bf7f19950e65f80787f ))
* **quick-7:** wire frontend pin-default-playlist feature end-to-end ([e6378e1 ](https://github.com/onion-4-dinner/yellowjacket/commit/e6378e1f0d3b0f2a7604b8ef6097dba9050cdd16 ))
* **quick-8:** add FindDuplicateTracksInPlaylist backend method ([83de934 ](https://github.com/onion-4-dinner/yellowjacket/commit/83de934c39ca7d850a8b5925c90e6d0b3fe0a487 ))
* **quick-8:** create duplicate-tracks-dialog component ([9f3ba2b ](https://github.com/onion-4-dinner/yellowjacket/commit/9f3ba2b9d474fa30dcb4934b01d4650e0d0d3cba ))
* **quick-8:** wire duplicate detection into playlist-picker and playlist-view ([917a79a ](https://github.com/onion-4-dinner/yellowjacket/commit/917a79a8d6e30dddd2170323bb26692386794872 ))
### Bug Fixes
* **01-01:** add mutex protection to Queue, Library, and Playlist SetContext methods ([daaa6b7 ](https://github.com/onion-4-dinner/yellowjacket/commit/daaa6b7f9779385979fe9dddae4e7bb388b3e5fb ))
* **01-01:** collapse Player.SetContext double-lock into single acquisition ([3abaeba ](https://github.com/onion-4-dinner/yellowjacket/commit/3abaeba3afb0f4d0edb81e26ca55b31bf59990ac ))
* **02-01:** eliminate package-level startupErr and fix config file permissions ([2a86408 ](https://github.com/onion-4-dinner/yellowjacket/commit/2a864082017e489ffa086c136f1002277a77a7c4 ))
* **02-01:** log MPRIS callback errors instead of discarding them ([0860b2f ](https://github.com/onion-4-dinner/yellowjacket/commit/0860b2fd4b2250da1eeb80c21f14fdf341697501 ))
* **08-02:** revert repeat() inside lit-virtualizer, restore .renderItem + .keyFunction ([72ef719 ](https://github.com/onion-4-dinner/yellowjacket/commit/72ef719ba70eeca0fa4bae47df092706f6fbaeed ))
* drop+recreate contentless FTS5 index instead of DELETE ([8e9a616 ](https://github.com/onion-4-dinner/yellowjacket/commit/8e9a61603779eacbee7013b9bc760b315baf782a ))
* **frontend:** reposition search indicator into toolbar and fix album cover art lookup ([a29137b ](https://github.com/onion-4-dinner/yellowjacket/commit/a29137b2ba4c6b33ce9a5f868cbd6013e0e3b116 ))
* include full track metadata in GetAudioFilesByReleaseGroup query ([97f256d ](https://github.com/onion-4-dinner/yellowjacket/commit/97f256d67f463d752f7adc5b400c4bf34eae1df1 ))
* **quick-10:** add migration 5 and fix entity cache for composite album key ([d43ba7b ](https://github.com/onion-4-dinner/yellowjacket/commit/d43ba7bd0c7ace2a9ed71990a19498f8e9f90751 ))
* **quick-10:** update release_groups schema and queries for composite uniqueness ([999ab96 ](https://github.com/onion-4-dinner/yellowjacket/commit/999ab967beb9107a3f30ba287acbffad22f0b0de ))
* **quick-13:** resolve lint issues in main source files ([e1a95e6 ](https://github.com/onion-4-dinner/yellowjacket/commit/e1a95e65a9f0f436b2e2d92befa9c881b6e8e430 ))
* **quick-14:** add roll-back-on-failure to queue index advancement ([2820de2 ](https://github.com/onion-4-dinner/yellowjacket/commit/2820de2510560fcd6d1015c18542d5ac30468247 ))
* **quick-9:** set fixed height on queue track items for stable virtualizer scroll ([ebde5e5 ](https://github.com/onion-4-dinner/yellowjacket/commit/ebde5e5a8bc4da8f40bef8f171c7ed86c213a336 ))
### Performance
* **07-01:** add incremental persistence helpers for queue mutations ([cdd17db ](https://github.com/onion-4-dinner/yellowjacket/commit/cdd17db27509908514c21517631306655a2b3bd7 ))
* **07-01:** eliminate redundant lookups in SetQueue Phase 2 ([ced58fe ](https://github.com/onion-4-dinner/yellowjacket/commit/ced58fe6a93d6f220137562b8ff09ffc33c69266 ))
* **07-02:** defer eagerFetch to after DOM ready for instant app shell ([cd98ad6 ](https://github.com/onion-4-dinner/yellowjacket/commit/cd98ad6dc8c2e4e6e0f01a48099b0c0511bf5a98 ))
* **08-01:** add queueMicrotask coalescing to library store and debounce search input ([3bf66ed ](https://github.com/onion-4-dinner/yellowjacket/commit/3bf66ed125ed55bfbde95b0bc973710c2f2243b8 ))
* **08-02:** migrate cover-grid, artists-view, and genres-view virtualizers to repeat() directive ([1c3514d ](https://github.com/onion-4-dinner/yellowjacket/commit/1c3514da1d0491b9758d7a6f9f72d59ef78fc8ed ))
* **08-02:** migrate track-list and queue-panel virtualizers to repeat() directive ([d2d7d8c ](https://github.com/onion-4-dinner/yellowjacket/commit/d2d7d8c6ce22923772cae4858b02804d15f74bb7 ))
* **08-03:** optimize column rendering and apply classMap to queue-panel renderTrackItem ([62f41c2 ](https://github.com/onion-4-dinner/yellowjacket/commit/62f41c24910632b270f9f5765e20e48db4b95ec9 ))
* **08-03:** replace class string construction with classMap directive in renderTrackRow ([ad21027 ](https://github.com/onion-4-dinner/yellowjacket/commit/ad210278fc20729dc76390e6bba9bff050549046 ))
### Refactoring
* **06-01:** consolidate search queries to use track_metadata VIEW ([9159b40 ](https://github.com/onion-4-dinner/yellowjacket/commit/9159b409dcd2afaa7dcc97bf5b0694edf85f06a4 ))
* **quick-14:** make playOrLoadCurrentTrack and playCurrentTrack return bool ([6eeddda ](https://github.com/onion-4-dinner/yellowjacket/commit/6eeddda97669258cc5b7ba175a3c98d598a2871f ))
2026-03-06 00:28:28 +00:00
yonlu
f68c3a3a84
Merge pull request #84 from onion-4-dinner/wip
...
feat: lots of stuff
2026-03-05 19:27:57 -05:00
yonlu
b725b801c1
fix CI: skip metadata tests when test_data is absent, use fmt.Fprintf in genevents
2026-03-05 19:11:56 -05:00
yonlu
517c1685d8
ran go mod tidy
2026-03-05 18:49:09 -05:00
yonlu
b8277326ee
Merge branch 'main' into wip
2026-03-05 18:19:35 -05:00
yonlu
6c7cd65a3e
chore: remove stale plan files from .opencode/plans
2026-03-05 16:09:55 -05:00
yonlu
2e6ec94be7
docs(quick-13): add orphaned plan file for completed lint fix task
2026-03-05 16:09:39 -05:00
yonlu
727381c9e5
chore: remove stale planning and config files
2026-03-05 16:08:02 -05:00
yonlu
a29137b2ba
fix(frontend): reposition search indicator into toolbar and fix album cover art lookup
...
Move search indicator from absolute-positioned overlay into sort toolbar
(or dedicated search-bar-row for artists/genres views). Shows indicator
on empty-state screens. Fix cover art not displaying for expanded album
tracks by checking expandedAlbumId before the albumName guard. Add
ScanWarning model bindings.
2026-03-05 16:07:54 -05:00
yonlu
6977ba8bc1
docs(quick-15): Fix audio glitches and skips in decoding/playback pipeline
2026-03-05 15:30:03 -05:00
yonlu
6cb22359c8
docs(quick-15): complete audio glitch fix plan
...
- Add 15-SUMMARY.md with implementation details
- Update STATE.md with quick task 15 completion
2026-03-05 15:29:39 -05:00
yonlu
8a0b16a4ec
feat(quick-15): insert BufferedStreamer into player pipeline and increase speaker buffer
...
- BufferedStreamer wraps resampled streamer with 2s read-ahead buffer
- Speaker buffer increased from 100ms to 200ms for secondary protection
- Close old BufferedStreamer on track change and unload to prevent goroutine leaks
- Streamer chain: decode -> resample -> BufferedStreamer -> ctrl -> volume -> speaker
2026-03-05 15:28:28 -05:00
yonlu
85b23acb24
feat(quick-15): add BufferedStreamer with goroutine read-ahead
...
- Ring-buffer streamer decouples source I/O from speaker callback
- Read-ahead goroutine pre-fills buffer in 512-sample chunks
- Returns silence when buffer temporarily empty (prevents glitches)
- Close() signals goroutine shutdown via channel
- 5 unit tests: basic stream, small reads, drain, silence, close
2026-03-05 15:27:24 -05:00
yonlu
8f16463fdd
docs(quick-14): fix queue/player desync after hot reload
2026-03-05 15:05:17 -05:00
yonlu
97c135766b
docs(quick-14): complete queue/player desync fix plan
2026-03-05 15:04:39 -05:00
yonlu
2820de2510
fix(quick-14): add roll-back-on-failure to queue index advancement
...
- Next() rolls back currentIndex and skips emitIndexChanged on load failure
- Previous() applies same pattern to all three branches (RepeatOne, restart, navigate)
- OnPlaybackFinished() rolls back currentIndex on playCurrentTrack failure
- PlayIndex() and playFromStart() also guard against load failures
- RepeatOne paths guard emitIndexChanged with the bool return value
2026-03-05 15:03:29 -05:00
yonlu
6eeddda976
refactor(quick-14): make playOrLoadCurrentTrack and playCurrentTrack return bool
...
- playCurrentTrack returns false on load failure or play error
- playOrLoadCurrentTrack propagates bool from load/play helpers
- loadCurrentTrack already returned bool — no change needed
2026-03-05 15:02:11 -05:00
yonlu
e743294406
docs(quick-13): complete fix linting issues plan
...
- Add 13-SUMMARY.md with execution details
- Update STATE.md with quick task 13 entry
2026-03-05 14:09:48 -05:00
yonlu
e1a95e65a9
fix(quick-13): resolve lint issues in main source files
...
- Fix errcheck for db.Close() in testhelper.go
- Fix errcheck, nlreturn, wsl, gofumpt issues in genevents/main.go
- Fix gofumpt and wsl issues in library.go
2026-03-05 14:07:50 -05:00
yonlu
97f256d67f
fix: include full track metadata in GetAudioFilesByReleaseGroup query
...
The GetAudioFilesByReleaseGroup SQL query only selected 6 columns,
missing audio properties (sample_rate, bit_depth, channels, bitrate,
file_size) and metadata (album, genre, year, composer, file_type).
This caused track details opened from the album view to show dashes
instead of actual values. Expanded the query to match
GetAllTracksWithFullMetadata and updated GetAlbumTracks to use the
shared mapTrackRow helper.
2026-03-05 13:34:03 -05:00
yonlu
3e9c143a6e
docs(quick-12): Add favorite icon to album grid track list dropdown
2026-03-05 11:44:52 -05:00
yonlu
06d2c4702e
docs(quick-12): complete add favorite icon to album dropdown plan
2026-03-05 11:44:28 -05:00
yonlu
12a0bbc89c
feat(quick-12): add favorite icon to album dropdown track rows
...
- Add FavoritesController and classMap imports
- Add .fav-icon CSS with compact sizing (18px/11px) for dropdown context
- Insert heart/star icon between track number and title
- Click toggles favorite with stopPropagation to avoid track selection
2026-03-05 11:43:31 -05:00
yonlu
a28b4d1e06
feat: add scan progress bar with phase indicator
...
Add live progress reporting during library scans:
- Pre-walk count: fast WalkDir to count audio files upfront for
percentage calculation (~1-2s overhead)
- Progress ticker: emits ScanProgress events every 300ms with
phase, file counts (added/skipped/updated), and total
- Phase labels: counting → scanning → thumbnails → orphans
- Frontend: progress bar with percentage, file counts breakdown,
and phase indicator in both config-page and library-manager
Replaces the static 'Scanning...' text with a live progress bar
showing e.g. '62% — Scanning... 1,247 / 2,013 files (891 new,
356 skipped)'
2026-03-05 11:21:53 -05:00