Geert Rademakes
aa04849442
feat: UX improvements for frontend
...
- Clear selected song when changing playlists (already implemented)
- Replace 'Add to playlist...' and 'Remove from playlist' buttons with 'Actions' dropdown in PaginatedSongList
- Add key (tonality) next to duration in song list display format (e.g., 1:16 - A8)
- Update song matching page title to include storage provider (e.g., 'Sync and Matching (WEBDAV)')
- Remove storage provider text from sync buttons for cleaner interface
- Fix bulk selection state clearing when switching playlists to prevent stale selections
2025-09-19 10:19:40 +02:00
Geert Rademakes
e58d42bea2
Fix WebDAV music seeking functionality
...
- Add proxy endpoint for WebDAV streaming with authentication
- Implement range request support for audio seeking
- Update streaming endpoint to use proxy for WebDAV, presigned URLs for S3
- Add proper HTTP headers for audio streaming (Accept-Ranges, Content-Range)
- Fix music player seeking issue where clicking progress bar would reset playback
The WebDAV integration now supports proper audio seeking by using a backend
proxy that handles WebDAV authentication and range requests, allowing users
to click anywhere on the progress bar to seek to that position in the track.
2025-09-18 08:58:49 +02:00
Geert Rademakes
9de7564c18
Fix WebDAV file listing issue and add AIFF support
...
- Fix WebDAV service to find all 4,101 MP3 files instead of 1,023
- Add support for AIFF files (.aif, .aiff) in audio detection
- Update audioMetadataService to recognize AIFF formats
- Simplify BackgroundJobProgress component polling logic
- Add maxDepth parameter to WebDAV directory listing
- Add comprehensive test scripts for debugging WebDAV integration
The WebDAV integration now correctly processes all 4,257 audio files
from the music collection, including 4,101 MP3 files and 156 other
audio formats (FLAC, WAV, AIFF, M4A, OGG).
2025-09-17 22:52:15 +02:00
Geert Rademakes
d747830384
Working webdav backend!
2025-09-17 13:22:19 +02:00
Geert Rademakes
7065247277
More webdav compatiblity
2025-09-17 11:30:03 +02:00
Geert Rademakes
218046ec4f
webdav setup
2025-09-17 10:55:35 +02:00
Geert Rademakes
dc8254772c
feat(ux): improve song details panel UX - hide panel by default, show only when song selected, add close button with X icon
2025-08-15 13:38:45 +02:00
Geert Rademakes
96fdf64060
fix(upload): add missing 'id' field to 'To Be Scanned' playlist creation for proper frontend rendering
2025-08-14 14:12:32 +02:00
Geert Rademakes
cf39a3c2b1
fix(upload): add debugging and fix file selection issues - add console logging for onDrop, fix dependency array, add file rejection handling and visual feedback
2025-08-14 13:15:53 +02:00
Geert Rademakes
675c1f8d8f
fix(upload): resolve folder selection issue and improve 'To Be Scanned' playlist creation - add debug logging, visual selection indicator, simplify playlist creation logic, support batch uploads with markForScan
2025-08-14 11:55:54 +02:00
Geert Rademakes
7557eddeb4
feat(upload): improve folder browser UX and performance - add loading state, fix chevron visibility, implement backend caching with 5min TTL, add cache invalidation on file operations
2025-08-14 09:17:54 +02:00
Geert Rademakes
10e38fae4d
feat(upload): replace dropdown with tree-based folder browser for better S3 folder selection UX
2025-08-14 09:12:37 +02:00
Geert Rademakes
a49e628d93
fix: resolve TypeScript syntax error in music routes - use spread operator instead of invalid 'as string[]' syntax
2025-08-14 09:08:50 +02:00
Geert Rademakes
e4ee7230d1
feat(upload): include root folder option in S3 folder dropdown and support empty targetFolder (root) on backend
2025-08-13 17:04:20 +02:00
Geert Rademakes
762ae0730a
feat(upload): add S3 folder dropdown (backend /api/music/folders) and use selected folder for uploads; keep text input as fallback
2025-08-13 17:02:58 +02:00
Geert Rademakes
aae57ec55f
feat(upload): allow selecting target S3 folder and auto-add uploaded files to 'To Be Scanned' playlist via stub songs for XML export
2025-08-13 17:00:59 +02:00
Geert Rademakes
6c879987bf
Merge branch 'feat/config-sync-refactor' into main
2025-08-13 16:54:39 +02:00
Geert Rademakes
d87d83eaf6
fix(config): improve auto-link UX; fix song update in background job; upsert MusicFile on complex matching
2025-08-13 16:54:38 +02:00
Geert Rademakes
fe3a7abf32
fix(backend): avoid duplicate key errors during complex matching by upserting MusicFile by s3Key
2025-08-13 16:48:34 +02:00
Geert Rademakes
1560e614dc
chore(matching): remove heavy matched/songs-with-files lists from SongMatching to streamline UI
2025-08-13 16:47:51 +02:00
Geert Rademakes
58eaa50bd2
feat(config): refactor Sync & Matching panel; remove heavy Music Library tab; add Sync, Force Sync, and Clear Links + Force Sync controls; backend supports clearLinks/force
2025-08-13 16:41:59 +02:00
Geert Rademakes
862c482565
Merge branch 'feat/drag-preview-count' into main
2025-08-13 16:29:52 +02:00
Geert Rademakes
837fed81e7
feat(frontend): show drag preview for single-item drag as '1 song' badge
2025-08-13 16:23:30 +02:00
Geert Rademakes
6d2eae9c7b
feat(frontend): custom drag preview with selection count badge when dragging multiple songs
2025-08-13 16:21:51 +02:00
Geert Rademakes
febfb638b9
Merge branch 'feat/multiselect-perf' into main
2025-08-13 16:09:25 +02:00
Geert Rademakes
feac54e2e0
style(frontend): dark scrollbars for playlist sidebar and mobile drawer
2025-08-13 16:08:38 +02:00
Geert Rademakes
dd2c7d353e
style(frontend): dark scrollbars for song list, main content, and details panel to match theme
2025-08-13 16:06:02 +02:00
Geert Rademakes
017ba31d83
perf(frontend): use startTransition for selection updates to keep UI responsive on large sets
2025-08-13 16:03:26 +02:00
Geert Rademakes
1d290bdfa6
feat(frontend): shift-click range selection with optimistic checkbox feedback
2025-08-13 15:59:25 +02:00
Geert Rademakes
54b22d5cc5
perf(frontend): instant checkbox feedback via local optimistic selection in virtualized list
2025-08-13 15:57:26 +02:00
Geert Rademakes
517af140cf
Merge branch 'feat/frontend-performance-audit' into main
2025-08-13 15:48:50 +02:00
Geert Rademakes
4bab1ae3a2
fix(frontend): avoid blocking fetch by not setting loadingRef in immediate switch
2025-08-13 15:47:25 +02:00
Geert Rademakes
ebc6f31d32
perf(frontend): set loading immediately on playlist switch for instant indicator
2025-08-13 15:43:23 +02:00
Geert Rademakes
449dfc708e
perf(frontend): start playlist data load immediately on selection; useLayoutEffect for faster playlist switch
2025-08-13 15:35:27 +02:00
Geert Rademakes
52953d7e0d
feat(frontend): virtualize song list, gate DnD, remove double mapping, memoize PlaylistManager; fix TS build warnings
2025-08-13 15:20:38 +02:00
Geert Rademakes
a7ccadc8ac
fix(playlists): remove-from-playlist operates on full tree and also removes ids from custom order; reload structure after save
2025-08-08 16:50:13 +02:00
Geert Rademakes
924f36f4f7
feat(ui): adjust select-all behavior to clear then select; replace playlist menu chevron with more-horizontal icon
2025-08-08 16:32:01 +02:00
Geert Rademakes
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
2025-08-08 16:24:25 +02:00
Geert Rademakes
0073f8146d
fix(reorder): enable landing indicator and drop handling for multi-drag; start reorder on multi-select; relax guards to allow multi block moves
2025-08-08 15:39:00 +02:00
Geert Rademakes
d13fe81ade
merge: playlist reorder improvements (single+multi drag, end drop zone) and export order overlay; cleanup
2025-08-08 15:05:16 +02:00
Geert Rademakes
5f17380816
chore: remove verbose reorder/debug logs and tidy XML export logs; streamline FE reorder console noise
2025-08-08 15:05:10 +02:00
Geert Rademakes
5659dde540
feat(export): honor custom playlist order overlay when exporting Rekordbox XML (Entries + TRACK sequence)
2025-08-08 14:56:28 +02:00
Geert Rademakes
9249a5a4a7
feat(reorder): support dragging multiple selected songs to a specific position and to end (block move)
2025-08-08 14:55:06 +02:00
Geert Rademakes
ac52441dd1
fix(reorder): only show end-of-list drop zone during active reorder drag; reset hover indicators on drag end
2025-08-08 14:53:26 +02:00
Geert Rademakes
d0a83a85f5
feat(reorder): add end-of-list drop zone to move track to end; show hover indicator
2025-08-08 14:52:48 +02:00
Geert Rademakes
2d42c6da71
fix(reorder): stop overwriting server move with stale client order; just refresh after move; improve dnd effectAllowed/dropEffect
2025-08-08 14:47:20 +02:00
Geert Rademakes
e2d6d55433
chore(reorder-debug): add server/client logs for move and playlist order slice to diagnose ordering issue
2025-08-08 14:37:45 +02:00
Geert Rademakes
484d191201
fix(playlist-order): honor custom order in playlist songs endpoint by slicing trackIds and mapping results
2025-08-08 14:33:42 +02:00
Geert Rademakes
8136bbb959
fix(reorder): backend move endpoint and frontend use precise move to persist order reliably; refresh after move
2025-08-08 14:30:58 +02:00
Geert Rademakes
61d4ca16de
feat(playlists): track custom order in separate 'order' array; reading API honors 'order' while preserving 'tracks'
2025-08-08 14:25:50 +02:00