Commit Graph
298 Commits
Author SHA1 Message Date
yonlu 9971b635b8 feat(quick-4): add 'Set as Default Playlist' context menu option
- Add 'set-default' case in onPlaylistContextAction handler
- Add wa-dropdown-item with star icon in single-select guard block
- Option only appears when right-clicking a single playlist
2026-02-28 14:25:31 -05:00
yonlu a877031297 docs(quick-3): Add multi-select to playlist view with context menu delete support 2026-02-28 14:16:56 -05:00
yonlu 99401ab5c7 docs(quick-3): complete playlist multi-select plan
- Add 3-SUMMARY.md with execution results
- Update STATE.md with quick task 003 entry
2026-02-28 14:16:26 -05:00
yonlu c92ced2c74 feat(quick-3): wire playlist context menu for batch delete of selected playlists
- Update handlePlaylistContextMenu to respect multi-selection on right-click
- Make onPlaylistContextAction async with batch delete support
- Show 'Delete N Playlists' in context menu when multiple playlists selected
- Hide 'Rename' option when multiple playlists are selected
- Clear playlist selection after any context action completes
2026-02-28 14:15:24 -05:00
yonlu e13151ffa5 feat(quick-3): add playlist-level multi-select state and selection handling
- Add selectedPlaylists Set and lastSelectedPlaylistIndex for multi-select state
- Replace handleToggle with handlePlaylistHeaderClick supporting Ctrl/Shift+Click
- Clear playlist selection when entering track selection scope
- Clear playlist selection on outside clicks
- Add .playlist-header.selected CSS with selection background color
- Wire header click to new handler with selected class in template
2026-02-28 14:14:29 -05:00
yonlu be38937f84 docs(quick-002): complete auto-rename duplicate playlists on import summary
- Add 002-SUMMARY.md with task details and verification results
- Update STATE.md quick tasks table
2026-02-28 13:54:12 -05:00
yonlu 8ba8bbe7be feat(quick-002): add uniquePlaylistName helper and wire into ImportPlaylist
- Add uniquePlaylistName method to auto-rename duplicate names with (1), (2), etc.
- Call uniquePlaylistName only from ImportPlaylist, not CreatePlaylist
2026-02-28 13:53:21 -05:00
yonlu 04b2088b28 feat(quick-002): add CountPlaylistsByName SQL query and regenerate sqlc
- Add CountPlaylistsByName :one query to playlists.sql
- Regenerate sqlc to produce Go function
2026-02-28 13:52:21 -05:00
yonlu 981bd046da docs(quick-002): plan auto-rename duplicate playlists on import 2026-02-28 13:42:31 -05:00
yonlu a5be8e1efc docs(quick-001): multi-playlist import support 2026-02-28 13:33:28 -05:00
yonlu 50c8a3344a docs(quick-001): complete multi-playlist import support summary 2026-02-28 13:32:56 -05:00
yonlu 2a542bf3bc feat(quick-001): regenerate bindings and update frontend for multi-import
- Wails bindings reflect new PlaylistFilePicker and ImportPlaylists signatures
- Frontend handleImportPlaylist now passes file array to ImportPlaylists
2026-02-28 13:31:29 -05:00
yonlu c34e4ad029 feat(quick-001): add multi-file picker and batch import support
- Update PlaylistFilePicker to return []string via OpenMultipleFilesDialog
- Add ImportPlaylists method for sequential batch import with partial success
2026-02-28 13:30:36 -05:00
yonlu 7f52dce296 docs(quick-001): plan multi-playlist import support 2026-02-28 13:18:49 -05:00
yonlu 6b4f0bf14b docs(phase-01): complete phase execution 2026-02-28 12:16:37 -05:00
yonlu cd07bdf37b docs(01-01): complete SetContext race fixes plan
- Created 01-01-SUMMARY.md with execution results
- Updated STATE.md with Phase 1 completion and decisions
- Updated ROADMAP.md progress (Phase 1: 1/1 plans complete)
- Marked CORR-01 through CORR-04 complete in REQUIREMENTS.md
2026-02-28 12:13:44 -05:00
yonlu 3abaeba3af fix(01-01): collapse Player.SetContext double-lock into single acquisition
- Replaced two separate Lock/Unlock pairs with single Lock/defer Unlock
- Both p.ctx assignment and p.restoreStateLocked() now run under same lock hold
- Prevents observing partially-initialized state between the two operations
2026-02-28 12:09:34 -05:00
yonlu daaa6b7f97 fix(01-01): add mutex protection to Queue, Library, and Playlist SetContext methods
- Queue.SetContext acquires existing q.mu before writing q.ctx
- Library struct gets new mu sync.Mutex; SetContext and SetRescanHooks acquire it
- Playlist Service struct gets new mu sync.Mutex; SetContext and SetFavoritesConfig acquire it
- Library and Playlist release lock before calling post-init methods (registerEventHandlers, migrateExistingPlaylists)
2026-02-28 12:09:14 -05:00
yonlu 4e2986e19c docs(01): create phase plan for concurrency race fixes 2026-02-27 14:50:27 -05:00
yonlu c086215533 docs: create roadmap (8 phases) 2026-02-27 13:16:41 -05:00
yonlu cdffd13395 docs: define v1 requirements 2026-02-27 11:16:03 -05:00
yonlu 98fd06d725 docs: complete project research for consolidation milestone 2026-02-27 10:53:44 -05:00
yonlu 1953b26957 chore: add project config 2026-02-27 10:20:07 -05:00
yonlu 94d42ada7b docs: initialize project 2026-02-27 10:20:03 -05:00
yonlu 572b7fb664 docs: map existing codebase 2026-02-26 16:58:25 -05:00
yonlu d01f5e5d14 added "default playlist"/ favorites system 2026-02-25 22:53:57 -05:00
yonlu 51da5cfb07 no longer using forked beep 2026-02-25 21:16:29 -05:00
yonlu 4f3244c992 added mpris (linux media player controls) support 2026-02-25 20:51:29 -05:00
yonlu d5010e6fa8 default user volume is 50 now 2026-02-25 19:32:44 -05:00
yonlu 012131283c fixed startup ondomready call to use wails bindings and call when complete 2026-02-25 19:10:37 -05:00
yonlu cf144bf0dd refactored many events to use wails bindings, reducing boilerplate 2026-02-25 18:51:07 -05:00
yonlu baa4644ece extracted cover art handling from library package 2026-02-25 15:31:05 -05:00
yonlu 5689c1be42 added genre cache 2026-02-25 10:16:43 -05:00
yonlu 8f1ee25053 track list search results now sorted by relevance and highlighted 2026-02-25 01:09:54 -05:00
yonlu e192d4625e playlist phantom track matching added, updated search queries for efficiency 2026-02-24 21:23:25 -05:00
yonlu ff7649600b refactored full rescan to use hook/lifecycle pattern and added rescan package 2026-02-24 16:11:41 -05:00
yonlu 768a8cf1f2 replaced track info string map with a struct 2026-02-24 15:39:54 -05:00
yonlu d764fefb10 fixed library scan using event listeners instead of store pattern 2026-02-24 15:04:35 -05:00
yonlu 1221a403cf cover grid refactor
-split component into several files
2026-02-24 09:49:34 -05:00
yonlu 352fa9da61 split queue package into multiple files. other minor fixes 2026-02-24 08:34:28 -05:00
yonlu d55cfb2411 added slide animation to grid views 2026-02-23 23:54:42 -05:00
yonlu 153cd0eae0 added refactoring catalog, fixed context menu freezing tracklist 2026-02-23 20:54:50 -05:00
yonlu d925e3d659 added mutex to player to prevent simultaneous access 2026-02-23 20:06:41 -05:00
yonlu 16060023bb audio file info added, fixed right click selecting. 2026-02-23 19:05:57 -05:00
yonlu a6b476399e hovering now-playing cover thumb shows full-res art 2026-02-23 15:53:30 -05:00
yonlu 967816ccd2 scroll restore on artists and genres pages 2026-02-23 13:08:44 -05:00
yonlu 3349e785d7 playing a new queue with shuffle enabled now starts at a random track. 2026-02-23 12:13:40 -05:00
yonlu 1dfbfd9595 added multi-select to artists and genres views 2026-02-23 11:46:44 -05:00
yonlu 588acf09ef added genres page 2026-02-23 11:10:21 -05:00
yonlu a08d59a4a0 context submenus now close when not hovering over 2026-02-23 10:47:32 -05:00