yonlu
bd86dc1086
docs(02): create phase plan for backend correctness
2026-03-02 18:21:18 -05:00
yonlu
e5eaac66f8
docs(02-backend-correctness): research phase domain
2026-03-02 18:16:14 -05:00
yonlu
bb02609ff5
docs(02): capture phase context
2026-03-02 18:05:30 -05:00
yonlu
8717cbfae3
docs(quick-8): complete duplicate tracks dialog plan
...
- Add 8-SUMMARY.md with execution results
- Update STATE.md with quick task 008 entry
2026-03-01 11:16:32 -05:00
yonlu
917a79a8d6
feat(quick-8): wire duplicate detection into playlist-picker and playlist-view
...
- playlist-picker checks for duplicates before adding tracks
- playlist-view drag-drop handler checks for duplicates before adding
- Both show duplicate-tracks-dialog when duplicates found
- Non-duplicate tracks added directly when no duplicates exist
2026-03-01 11:15:05 -05:00
yonlu
9f3ba2b9d4
feat(quick-8): create duplicate-tracks-dialog component
...
- Step through duplicate tracks one-by-one with Add/Skip buttons
- Apply to all remaining toggle for batch operations
- Dispatches playlist-action-complete when done
- Follows project wa-dialog patterns from track-details and phantom-resolver
2026-03-01 11:13:32 -05:00
yonlu
83de934c39
feat(quick-8): add FindDuplicateTracksInPlaylist backend method
...
- Add DuplicateTrackInfo and DuplicateCheckResult types
- Implement FindDuplicateTracksInPlaylist on playlist Service
- Regenerate Wails TypeScript bindings
2026-03-01 11:12:04 -05:00
yonlu
5ab214baed
docs(quick-008): plan duplicate tracks dialog for playlist additions
2026-03-01 11:02:38 -05:00
yonlu
96a9dc43d5
docs(quick-7): complete pin default playlist to top plan
...
- Add 7-SUMMARY.md with implementation details and self-check
- Update STATE.md with quick task 007 entry and session context
2026-03-01 10:08:11 -05:00
yonlu
e6378e1f0d
feat(quick-7): wire frontend pin-default-playlist feature end-to-end
...
- Add pinDefault state, getter, setter to favorites-store
- Add pinDefault getter and setPinDefault to favorites-controller
- Update sortedEntries in playlist-view to pin default playlist to top
- Add Pin to Top toggle in config page Favorites section
- Add Wails bindings for GetPinDefaultPlaylist/SetPinDefaultPlaylist
- React to PinDefault in FavoritesConfigChanged event payload
2026-03-01 10:06:56 -05:00
yonlu
6e123bd47f
feat(quick-7): add PinDefault config field with backend getter/setter
...
- Add PinDefault bool to favorites.Config struct with TOML tag
- Add GetPinDefaultPlaylist() and SetPinDefaultPlaylist() methods
- Include PinDefault in emitFavoritesChanged event payload
- Default to true (pinned) for new config installations
2026-03-01 10:05:22 -05:00
yonlu
0119cb469a
docs(quick-006): complete remove list icon from playlist names plan
...
- Add 6-SUMMARY.md with execution results
- Update STATE.md with quick task 006 completion
2026-03-01 09:45:12 -05:00
yonlu
3c19766fd0
feat(quick-006): remove list icon from playlists, add favorites icon to default
...
- Replace static list icon with conditional: favorites icon for default playlist, nothing for others
- Reduce playlist-body left padding from 42px to 32px for tighter alignment without icon
2026-03-01 09:44:16 -05:00
yonlu
e8570cbb62
docs(quick-5): complete sort dropdown for playlist view plan
...
- Add execution summary with task details and deviation log
- Update STATE.md with quick task 005 entry
2026-03-01 08:54:30 -05:00
yonlu
5c07485535
feat(quick-5): add sort dropdown UI and client-side sorting to playlist view
...
- Add sort toolbar with dropdown (Recent, Name, Date Created, Track Count)
- Add ascending/descending direction toggle button
- Persist sort preference in localStorage across view switches
- Default sort is Recent (modified DESC) matching existing DB order
- Replicate sort toolbar CSS pattern from track-list component
2026-03-01 08:53:06 -05:00
yonlu
bdaff478e8
feat(quick-5): add CreatedAt/UpdatedAt to playlist Summary struct
...
- Add CreatedAt and UpdatedAt string fields to Summary struct
- Format as RFC3339 at all construction sites in playlist.go and favorites.go
- Update TypeScript bindings with new fields in models.ts
2026-03-01 08:51:00 -05:00
yonlu
ea3648f3f8
docs(quick-5): plan sort dropdown for playlist view
2026-03-01 08:36:16 -05:00
yonlu
85412e2eaa
docs(quick-4): Add set as default playlist context menu option for single playlist selection
2026-02-28 14:26:51 -05:00
yonlu
af62fa4981
docs(quick-4): complete 'Set as Default Playlist' context menu plan
...
- Add 4-SUMMARY.md with execution results
- Update STATE.md with quick task 004 entry
2026-02-28 14:26:20 -05:00
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
yonlu
90b7661483
added track-details page
2026-02-23 10:38:27 -05:00
yonlu
d89dee44e3
single track drag-and-drop ghost
2026-02-23 09:42:11 -05:00
yonlu
bd9652b378
faster fetching for artist albums
2026-02-22 20:42:32 -05:00
yonlu
ab5f690c05
search results pill added to artist grid
2026-02-22 20:30:28 -05:00
yonlu
3c06277820
added context menu to artist grid
2026-02-22 19:52:46 -05:00
yonlu
9dabfb81c5
beginnings of artist grid and artist details view
2026-02-22 19:17:27 -05:00
yonlu
30bbdd7c53
added basic sorting in track-list and cover-grid
2026-02-22 17:16:01 -05:00
yonlu
8a2ceb9107
improved column resize logic
2026-02-22 14:53:35 -05:00
yonlu
d3b04a9c29
added visual indicator of search results
2026-02-22 14:13:35 -05:00
yonlu
9cb1c6674a
changed genre scanning to parse multiple genres, updated db to accommodate.
2026-02-22 13:59:28 -05:00
yonlu
3947c2d6aa
fixed drag-and-drop visual styling
2026-02-22 11:44:51 -05:00
yonlu
b5e70a8ce6
user can configure visible columns in track-list
2026-02-22 11:24:19 -05:00
yonlu
9d84a11543
drag and drop enhancements, fixed playlist creation using old db entries, added icons-only sidebar when small width
2026-02-21 14:16:37 -05:00
yonlu
8ad952e750
Merge branch 'wip' of github.com:LJ-Software/yellowjacket into wip
2026-02-21 11:06:11 -05:00
yonlu
4d9ab5d2b8
cleaned up album selection behavior, context menu now closes when clicking outside of it
2026-02-21 11:02:54 -05:00
yonlu
402789e763
search bar
2026-02-20 17:38:29 -05:00
yonlu
089af5e299
fixed common track scanning bugs with custom workarounds
2026-02-20 17:14:03 -05:00
yonlu
84f027aedf
small ui changes
2026-02-20 15:22:49 -05:00
yonlu
88c3736110
added color/ theme settings, new config window
2026-02-20 14:43:35 -05:00
yonlu
fa6506ed5d
selecting an album while having a dropdown open no longer scrolls to the top of the grid.
2026-02-20 13:33:16 -05:00
yonlu
7bc85af5f4
fixed cover-grid selection and queuing behavior, added "clear queue" button
2026-02-20 13:16:13 -05:00
yonlu
560ab3a3b5
playlists now save to files, can be restored from files
2026-02-19 23:10:20 -05:00
yonlu
56cf92a44c
fixed drag and drop behavior
2026-02-19 22:37:19 -05:00
yonlu
193f65bd98
basic drag-and-drop, fixed end of scan behavior
2026-02-19 15:25:49 -05:00
yonlu
d9ebd38382
configurable scan parallelism based on hdd or sdd
2026-02-19 13:59:02 -05:00
yonlu
81793975b4
improved library scan speeds, added library manager component
...
-libraries tab now opens a library manager
-choose library directory, manually soft scan and rescan
-batched db queues
-mp3 header-based duration extraction
2026-02-19 10:17:09 -05:00
yonlu
8c013d4179
fixed edge cases in selected album scrollTo logic
2026-02-19 08:19:00 -05:00
yonlu
c9e78c491c
cover-grid album dropdown behavior fixes
2026-02-18 11:34:10 -05:00
yonlu
026ab1c333
adjusted frontend event handling to optimize json payload size for different events, fixed incorrect behavior when currently playing track is removed from queue
2026-02-18 00:49:29 -05:00
yonlu
be6f4e9764
virtualization in queue list, queue db queries optimized for large queue requests
2026-02-17 19:54:24 -05:00
yonlu
1a1ac7d9a1
re-added virtualizer to cover grid, dropdown uses phantom-row method, minor user friendly resizing/focusing tweaks
2026-02-17 14:36:14 -05:00