• Joined on 2025-02-12
master pushed to main at master/rekordbox-viewer 2025-08-13 16:09:26 +02:00
febfb638b9 Merge branch 'feat/multiselect-perf' into main
feac54e2e0 style(frontend): dark scrollbars for playlist sidebar and mobile drawer
dd2c7d353e style(frontend): dark scrollbars for song list, main content, and details panel to match theme
017ba31d83 perf(frontend): use startTransition for selection updates to keep UI responsive on large sets
1d290bdfa6 feat(frontend): shift-click range selection with optimistic checkbox feedback
Compare 11 commits »
master pushed to main at master/rekordbox-viewer 2025-08-08 16:50:26 +02:00
a7ccadc8ac fix(playlists): remove-from-playlist operates on full tree and also removes ids from custom order; reload structure after save
master pushed to main at master/rekordbox-viewer 2025-08-08 16:32:17 +02:00
924f36f4f7 feat(ui): adjust select-all behavior to clear then select; replace playlist menu chevron with more-horizontal icon
master pushed to main at master/rekordbox-viewer 2025-08-08 16:24:39 +02:00
73b4bc6eb1 fix(songs): repair generic song list route; make XML import upsert + delete stale while preserving s3File; unlink musicFiles for removed songs; auto-trigger matching
master pushed to main at master/rekordbox-viewer 2025-08-08 15:59:20 +02:00
0073f8146d fix(reorder): enable landing indicator and drop handling for multi-drag; start reorder on multi-select; relax guards to allow multi block moves
master pushed to main at master/rekordbox-viewer 2025-08-08 15:05:21 +02:00
d13fe81ade merge: playlist reorder improvements (single+multi drag, end drop zone) and export order overlay; cleanup
5f17380816 chore: remove verbose reorder/debug logs and tidy XML export logs; streamline FE reorder console noise
5659dde540 feat(export): honor custom playlist order overlay when exporting Rekordbox XML (Entries + TRACK sequence)
9249a5a4a7 feat(reorder): support dragging multiple selected songs to a specific position and to end (block move)
ac52441dd1 fix(reorder): only show end-of-list drop zone during active reorder drag; reset hover indicators on drag end
Compare 15 commits »
master pushed to main at master/rekordbox-viewer 2025-08-08 13:55:41 +02:00
b3b2808508 Merge branch 'feature/dnd-playlist'
91fd5077d4 chore(dnd): remove debug logs and globals; keep clean drag/drop with proper handlers and UX; no functional changes
e622219e12 fix(dnd): pass onDropSongs into top-level PlaylistItem instances as well (not only nested)
dc11487a9f fix(dnd): bubble drop handler through nested folders; add debug log on handler invoke; harden /playlists/batch insertMany
6eabfdedd0 perf(jobs): adaptive polling (2s with active jobs, 10s when idle)
Compare 15 commits »
master pushed to main at master/rekordbox-viewer 2025-08-08 12:54:21 +02:00
083eca58cf Merge branch 'chore/refactor-cleanup'
3bd110884c feat(admin): add /api/music/fix-content-types to correct MIME types; ensure sync sets proper contentType for FLAC and others
5144df2e93 fix(flac): set correct contentType for FLAC and other types in S3 sync; include contentType hint in stream endpoint response
dbf9dbcb8c fix(sync): reference correct processed count in job result; fix(search): keep focus in search while playing by blurring audio and focusing search; cleanup lints
70485e8808 fix(player): prevent audio element from stealing focus while playing (blur and tabIndex=-1) so search input remains usable
Compare 13 commits »
master pushed to main at master/rekordbox-viewer 2025-08-08 09:09:37 +02:00
f6ecd07d98 feat(duplicates): add filter to show only groups where at least one song is in a playlist
master pushed to main at master/rekordbox-viewer 2025-08-08 09:07:54 +02:00
f7f44f2c48 feat(duplicates): add backend delete-duplicates and UI action to delete redundant songs after merging playlists
master pushed to main at master/rekordbox-viewer 2025-08-08 09:00:07 +02:00
549fd8d525 feat(duplicates): horizontal scroll table, keep-one merge playlists action, add length/BPM/bitrate columns\n\n- Backend: include averageBpm, bitRate in duplicates payload\n- Frontend: scrollable table with Keep action to merge playlists to selected song; show length/BPM/bitrate
master pushed to main at master/rekordbox-viewer 2025-08-08 08:51:37 +02:00
7dc70c3bdf feat(duplicates): add backend endpoint to detect possible duplicates and new Config tab to display them\n\n- Backend: GET /api/songs/duplicates groups by normalized title+artist and lists playlists + paths\n- Frontend: DuplicatesViewer component and new tab in Configuration; fetch on open; adjustable min group size\n- API client: add getDuplicateSongs()
master pushed to main at master/rekordbox-viewer 2025-08-08 08:47:46 +02:00
83b4682b0e chore(frontend): remove live song-list refresh during S3 sync per request; refresh now only on manual actions/page reload
master pushed to main at master/rekordbox-viewer 2025-08-07 23:48:04 +02:00
482460a8b7 feat(frontend): live-refresh song list during S3 sync so newly matched tracks show play button immediately
master pushed to main at master/rekordbox-viewer 2025-08-07 23:41:53 +02:00
d231073fe0 feat(frontend/config): UX improvements
master pushed to main at master/rekordbox-viewer 2025-08-07 23:36:35 +02:00
b436d1dabc feat: implement immediate song document updates for perfect sync resilience
96c43dbcff feat: implement infinite scroll with 100 songs per page
Compare 2 commits »
master pushed to main at master/rekordbox-viewer 2025-08-07 17:15:03 +02:00
3cd83ff2b5 feat: improve S3 sync and song matching with better FLAC support, NaN validation, and enhanced logging
master pushed to main at master/rekordbox-viewer 2025-08-07 08:57:26 +02:00
050e31288a chore: Remove debug endpoint after playlist issue resolution
176c2b1574 feat: Add debug endpoint for playlist troubleshooting
ba78aabd53 feat: Add proper title and favicon for Rekordbox Reader
9eb4587537 feat: Integrate all Music Storage functionality into unified Configuration page
d16217eac1 feat: Create unified Configuration page with tabs
Compare 39 commits »
master pushed to main at master/rekordbox-viewer 2025-08-06 10:59:30 +02:00
770c606561 perf: Aggressive optimization for playlist switching to make it snappy - Add React.startTransition to batch state updates in usePaginatedSongs - Optimize playlist selection handler with immediate navigation - Memoize click handlers in PlaylistItem to prevent recreation - Use replace navigation to avoid history stack delays - Should dramatically reduce 600+ms playlist switching delay
c9541cffee perf: Optimize song selection to fix 711ms click handler delay - Memoize formatted duration in SongItem to prevent recalculation - Remove handleSongSelect from songItems useMemo dependencies - Optimize SongItem component to prevent unnecessary re-renders - Should improve song selection responsiveness
e2ae3bd6d8 cleanup: Remove debugging console logs - Remove timestamp logging from playlist selection and change detection - Remove loadPage call logging - Clean up temporary debugging code
510c6e1026 perf: Optimize playlist manager to fix 727ms click handler delay - Memoize button styles to prevent object recreation on every render - Wrap PlaylistItem in React.memo to prevent unnecessary re-renders - Fixes React violation 'click' handler took 727ms - Should dramatically improve playlist switching responsiveness
586b3634b5 debug: Add timestamps to console logs for better timing analysis - Add ISO timestamps to playlist selection and change detection logs - Add timestamp to loadPage function calls - Helps identify exact timing of playlist switching delays
Compare 7 commits »
master pushed to main at master/rekordbox-viewer 2025-08-06 10:45:19 +02:00
e8bb2a4326 fix: Restore playlist switching functionality - Add previousPlaylistRef to properly detect playlist changes - Fix playlist change detection logic that was broken by ref updates - Ensure playlist switching works while maintaining infinite scroll fix
08de2afa0e fix: Prevent infinite scroll from loading previous playlist songs - Add refs to store current playlist and search query values - Fix stale closure issue in loadPage function - Ensure infinite scroll uses current playlist, not cached values - Fixes race condition when switching playlists and scrolling
535dc16d2c fix: Prevent welcome modal from showing on initial page load - Change welcome modal to not open by default - Only show welcome modal after confirming database is empty - Move database initialization check after useDisclosure hook - Fixes premature welcome modal display on app startup
743ed6a54e fix: Prevent welcome modal from showing during playlist switches - Add isDatabaseInitialized state to track actual database status - Check for songs and playlists to determine if database is initialized - Only show welcome modal when database is truly empty - Fixes issue where modal appeared when switching playlists
02ae12294c feat: Show total playlist duration instead of loaded songs duration - Add totalDuration calculation in backend playlist endpoint - Update frontend to display total playlist duration - Duration now shows entire playlist length, not just loaded songs - Prevents duration from changing when scrolling through songs
Compare 10 commits »