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
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
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
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
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
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
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
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
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
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
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
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
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
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
5a21243f5b
chore(reorder): add client debug logs; refresh playlist after reorder; backend keeps missing ids at end when reordering
2025-08-08 14:15:55 +02:00
Geert Rademakes
50a486f6d8
feat(playlist-reorder): enable intra-playlist row drag&drop with landing indicator; persist order via backend
2025-08-08 14:09:36 +02:00
Geert Rademakes
32d545959d
feat(playlists): support custom per-playlist track order; backend /playlists/reorder; playlist songs endpoint honors order; frontend intra-playlist row DnD with reorder persist
2025-08-08 14:03:03 +02:00
Geert Rademakes
91fd5077d4
chore(dnd): remove debug logs and globals; keep clean drag/drop with proper handlers and UX; no functional changes
2025-08-08 13:52:32 +02:00
Geert Rademakes
e622219e12
fix(dnd): pass onDropSongs into top-level PlaylistItem instances as well (not only nested)
2025-08-08 13:48:23 +02:00
Geert Rademakes
dc11487a9f
fix(dnd): bubble drop handler through nested folders; add debug log on handler invoke; harden /playlists/batch insertMany
2025-08-08 13:39:39 +02:00
Geert Rademakes
6eabfdedd0
perf(jobs): adaptive polling (2s with active jobs, 10s when idle)
2025-08-08 13:36:50 +02:00
Geert Rademakes
3f57904dd7
fix(dnd): ensure drop triggers by preventing default and stopping propagation; set dropEffect=copy on dragover
2025-08-08 13:35:54 +02:00
Geert Rademakes
0c8e00389b
fix(playlists): modify full playlist tree when adding tracks (avoid structure-only overwrite); then reload structure for counters
2025-08-08 13:29:58 +02:00
Geert Rademakes
5a6710b0eb
fix(dnd): robust drop parsing with window fallback; keep previous sidebar border look; add global payload for reliability
2025-08-08 13:27:46 +02:00
Geert Rademakes
8394f4b42f
ui(playlists): restore subtle borders; use box-shadow for drag highlight without altering base border styles
2025-08-08 13:25:16 +02:00
Geert Rademakes
4e123d2597
fix(dnd): avoid parsing during dragover; only inspect types; parse on drop with guards and log raw length
2025-08-08 13:24:13 +02:00
Geert Rademakes
b534485bde
chore(dnd-debug): add console.debug logs for dragover/drop, fix highlighting conditions, log drag payload
2025-08-08 13:22:20 +02:00
Geert Rademakes
8a9f51a0c6
fix(dnd): align drop flow with modal add; use same backend save and show success toast; improve payload parsing for drop targets
2025-08-08 13:17:15 +02:00