Commit Graph

  • 383f3476f0 Optimize PaginatedSongList performance to prevent re-renders frontend-ux-improvements Geert Rademakes 2025-09-19 11:05:16 +02:00
  • 4c63228619 Fix song selection performance issue Geert Rademakes 2025-09-19 11:01:38 +02:00
  • aa04849442 feat: UX improvements for frontend main Geert Rademakes 2025-09-19 10:19:40 +02:00
  • e58d42bea2 Fix WebDAV music seeking functionality Geert Rademakes 2025-09-18 08:58:49 +02:00
  • 9de7564c18 Fix WebDAV file listing issue and add AIFF support Geert Rademakes 2025-09-17 22:52:15 +02:00
  • d747830384 Working webdav backend! Geert Rademakes 2025-09-17 13:22:19 +02:00
  • 7065247277 More webdav compatiblity Geert Rademakes 2025-09-17 11:30:03 +02:00
  • 218046ec4f webdav setup Geert Rademakes 2025-09-17 10:55:35 +02:00
  • 11c714124b fix: Fix critical syntax error in renderer.js that was blocking UI updates - Remove extra closing brace in updateSyncStatus method - Fix 'Unexpected token this' error that prevented renderer execution - Restore real-time sync status display in UI - Sync functionality was working perfectly, only UI rendering was broken feature/desktop-sync Geert Rademakes 2025-08-28 13:45:24 +02:00
  • b6e961dc84 feat: Fix header button functionality and improve UI conciseness - Add working minimize/close/settings buttons in header - Implement window control IPC handlers - Simplify status display (Status, Files, Mode instead of verbose text) - Remove unused lastSync element references - Add window control channels to preload script Geert Rademakes 2025-08-28 11:42:27 +02:00
  • 39b7fb59aa feat: Improve UI spacing and layout - Increase window size from 1200x800 to 1400x900 - Add more padding and gaps between UI elements - Improve button sizing and spacing - Better status panel layout with flex distribution - Enhanced activity log readability - Remove unnecessary start/stop buttons (auto-sync only) - Remove progress bar (not needed for continuous sync) - Clean up unused sync methods Geert Rademakes 2025-08-28 11:38:14 +02:00
  • 73d9a41ca8 feat: Complete cleanup of desktop sync tool - Remove unused services (minio, syncEngine, rclone) - Clean up excessive debugging and logging - Remove sync queue functionality (not needed for AWS CLI) - Update SyncConfig interface and fix type conflicts - Replace mc commands with AWS CLI equivalents - Improve code organization and readability Geert Rademakes 2025-08-28 11:26:18 +02:00
  • dc8254772c feat(ux): improve song details panel UX - hide panel by default, show only when song selected, add close button with X icon Geert Rademakes 2025-08-15 13:38:45 +02:00
  • 96fdf64060 fix(upload): add missing 'id' field to 'To Be Scanned' playlist creation for proper frontend rendering Geert Rademakes 2025-08-14 14:12:32 +02:00
  • 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 Geert Rademakes 2025-08-14 13:15:53 +02:00
  • 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 Geert Rademakes 2025-08-14 11:55:54 +02:00
  • 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 Geert Rademakes 2025-08-14 09:17:54 +02:00
  • 10e38fae4d feat(upload): replace dropdown with tree-based folder browser for better S3 folder selection UX Geert Rademakes 2025-08-14 09:12:37 +02:00
  • a49e628d93 fix: resolve TypeScript syntax error in music routes - use spread operator instead of invalid 'as string[]' syntax Geert Rademakes 2025-08-14 09:08:50 +02:00
  • e4ee7230d1 feat(upload): include root folder option in S3 folder dropdown and support empty targetFolder (root) on backend Geert Rademakes 2025-08-13 17:04:20 +02:00
  • 762ae0730a feat(upload): add S3 folder dropdown (backend /api/music/folders) and use selected folder for uploads; keep text input as fallback Geert Rademakes 2025-08-13 17:02:58 +02:00
  • aae57ec55f feat(upload): allow selecting target S3 folder and auto-add uploaded files to 'To Be Scanned' playlist via stub songs for XML export Geert Rademakes 2025-08-13 17:00:59 +02:00
  • 6c879987bf Merge branch 'feat/config-sync-refactor' into main Geert Rademakes 2025-08-13 16:54:39 +02:00
  • d87d83eaf6 fix(config): improve auto-link UX; fix song update in background job; upsert MusicFile on complex matching Geert Rademakes 2025-08-13 16:54:38 +02:00
  • fe3a7abf32 fix(backend): avoid duplicate key errors during complex matching by upserting MusicFile by s3Key Geert Rademakes 2025-08-13 16:48:34 +02:00
  • 1560e614dc chore(matching): remove heavy matched/songs-with-files lists from SongMatching to streamline UI Geert Rademakes 2025-08-13 16:47:51 +02:00
  • 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 Geert Rademakes 2025-08-13 16:41:59 +02:00
  • 862c482565 Merge branch 'feat/drag-preview-count' into main Geert Rademakes 2025-08-13 16:29:52 +02:00
  • 837fed81e7 feat(frontend): show drag preview for single-item drag as '1 song' badge Geert Rademakes 2025-08-13 16:23:30 +02:00
  • 6d2eae9c7b feat(frontend): custom drag preview with selection count badge when dragging multiple songs Geert Rademakes 2025-08-13 16:21:51 +02:00
  • febfb638b9 Merge branch 'feat/multiselect-perf' into main Geert Rademakes 2025-08-13 16:09:25 +02:00
  • feac54e2e0 style(frontend): dark scrollbars for playlist sidebar and mobile drawer Geert Rademakes 2025-08-13 16:08:38 +02:00
  • dd2c7d353e style(frontend): dark scrollbars for song list, main content, and details panel to match theme Geert Rademakes 2025-08-13 16:06:02 +02:00
  • 017ba31d83 perf(frontend): use startTransition for selection updates to keep UI responsive on large sets Geert Rademakes 2025-08-13 16:03:26 +02:00
  • 1d290bdfa6 feat(frontend): shift-click range selection with optimistic checkbox feedback Geert Rademakes 2025-08-13 15:59:25 +02:00
  • 54b22d5cc5 perf(frontend): instant checkbox feedback via local optimistic selection in virtualized list Geert Rademakes 2025-08-13 15:57:26 +02:00
  • 517af140cf Merge branch 'feat/frontend-performance-audit' into main Geert Rademakes 2025-08-13 15:48:50 +02:00
  • 4bab1ae3a2 fix(frontend): avoid blocking fetch by not setting loadingRef in immediate switch Geert Rademakes 2025-08-13 15:47:25 +02:00
  • ebc6f31d32 perf(frontend): set loading immediately on playlist switch for instant indicator Geert Rademakes 2025-08-13 15:43:23 +02:00
  • 449dfc708e perf(frontend): start playlist data load immediately on selection; useLayoutEffect for faster playlist switch Geert Rademakes 2025-08-13 15:35:27 +02:00
  • 52953d7e0d feat(frontend): virtualize song list, gate DnD, remove double mapping, memoize PlaylistManager; fix TS build warnings Geert Rademakes 2025-08-13 15:20:38 +02:00
  • a7ccadc8ac fix(playlists): remove-from-playlist operates on full tree and also removes ids from custom order; reload structure after save Geert Rademakes 2025-08-08 16:50:13 +02:00
  • 924f36f4f7 feat(ui): adjust select-all behavior to clear then select; replace playlist menu chevron with more-horizontal icon Geert Rademakes 2025-08-08 16:32:01 +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 Geert Rademakes 2025-08-08 16:24:25 +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 Geert Rademakes 2025-08-08 15:39:00 +02:00
  • d13fe81ade merge: playlist reorder improvements (single+multi drag, end drop zone) and export order overlay; cleanup Geert Rademakes 2025-08-08 15:05:16 +02:00
  • 5f17380816 chore: remove verbose reorder/debug logs and tidy XML export logs; streamline FE reorder console noise Geert Rademakes 2025-08-08 15:05:10 +02:00
  • 5659dde540 feat(export): honor custom playlist order overlay when exporting Rekordbox XML (Entries + TRACK sequence) Geert Rademakes 2025-08-08 14:56:28 +02:00
  • 9249a5a4a7 feat(reorder): support dragging multiple selected songs to a specific position and to end (block move) Geert Rademakes 2025-08-08 14:55:06 +02:00
  • ac52441dd1 fix(reorder): only show end-of-list drop zone during active reorder drag; reset hover indicators on drag end Geert Rademakes 2025-08-08 14:53:26 +02:00
  • d0a83a85f5 feat(reorder): add end-of-list drop zone to move track to end; show hover indicator Geert Rademakes 2025-08-08 14:52:48 +02:00
  • 2d42c6da71 fix(reorder): stop overwriting server move with stale client order; just refresh after move; improve dnd effectAllowed/dropEffect Geert Rademakes 2025-08-08 14:47:20 +02:00
  • e2d6d55433 chore(reorder-debug): add server/client logs for move and playlist order slice to diagnose ordering issue Geert Rademakes 2025-08-08 14:37:45 +02:00
  • 484d191201 fix(playlist-order): honor custom order in playlist songs endpoint by slicing trackIds and mapping results Geert Rademakes 2025-08-08 14:33:42 +02:00
  • 8136bbb959 fix(reorder): backend move endpoint and frontend use precise move to persist order reliably; refresh after move Geert Rademakes 2025-08-08 14:30:58 +02:00
  • 61d4ca16de feat(playlists): track custom order in separate 'order' array; reading API honors 'order' while preserving 'tracks' Geert Rademakes 2025-08-08 14:25:50 +02:00
  • 5a396d774e fix(playlists): markModified on children/tracks to persist order; API response confirms update Geert Rademakes 2025-08-08 14:20:48 +02:00
  • 5a21243f5b chore(reorder): add client debug logs; refresh playlist after reorder; backend keeps missing ids at end when reordering Geert Rademakes 2025-08-08 14:15:55 +02:00
  • 50a486f6d8 feat(playlist-reorder): enable intra-playlist row drag&drop with landing indicator; persist order via backend Geert Rademakes 2025-08-08 14:09:36 +02:00
  • 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 Geert Rademakes 2025-08-08 14:03:03 +02:00
  • b3b2808508 Merge branch 'feature/dnd-playlist' Geert Rademakes 2025-08-08 13:54:02 +02:00
  • 91fd5077d4 chore(dnd): remove debug logs and globals; keep clean drag/drop with proper handlers and UX; no functional changes Geert Rademakes 2025-08-08 13:52:32 +02:00
  • e622219e12 fix(dnd): pass onDropSongs into top-level PlaylistItem instances as well (not only nested) Geert Rademakes 2025-08-08 13:48:23 +02:00
  • dc11487a9f fix(dnd): bubble drop handler through nested folders; add debug log on handler invoke; harden /playlists/batch insertMany Geert Rademakes 2025-08-08 13:39:39 +02:00
  • 6eabfdedd0 perf(jobs): adaptive polling (2s with active jobs, 10s when idle) Geert Rademakes 2025-08-08 13:36:50 +02:00
  • 3f57904dd7 fix(dnd): ensure drop triggers by preventing default and stopping propagation; set dropEffect=copy on dragover Geert Rademakes 2025-08-08 13:35:54 +02:00
  • 0c8e00389b fix(playlists): modify full playlist tree when adding tracks (avoid structure-only overwrite); then reload structure for counters Geert Rademakes 2025-08-08 13:29:58 +02:00
  • 5a6710b0eb fix(dnd): robust drop parsing with window fallback; keep previous sidebar border look; add global payload for reliability Geert Rademakes 2025-08-08 13:27:46 +02:00
  • 8394f4b42f ui(playlists): restore subtle borders; use box-shadow for drag highlight without altering base border styles Geert Rademakes 2025-08-08 13:25:16 +02:00
  • 4e123d2597 fix(dnd): avoid parsing during dragover; only inspect types; parse on drop with guards and log raw length Geert Rademakes 2025-08-08 13:24:13 +02:00
  • b534485bde chore(dnd-debug): add console.debug logs for dragover/drop, fix highlighting conditions, log drag payload Geert Rademakes 2025-08-08 13:22:20 +02:00
  • 8a9f51a0c6 fix(dnd): align drop flow with modal add; use same backend save and show success toast; improve payload parsing for drop targets Geert Rademakes 2025-08-08 13:17:15 +02:00
  • c7dd2e6d33 fix(dnd): ensure drop detects payload; set text/plain fallback; refresh playlist structure after add Geert Rademakes 2025-08-08 13:11:40 +02:00
  • 597c8f994f feat(dnd): highlight playlist drop target; show drag count badge; refine drag payload and lifecycle Geert Rademakes 2025-08-08 13:08:22 +02:00
  • 6917c22b94 feat(dnd): drag songs (with multiselect) into sidebar playlists; drop handler adds to playlist with duplicate confirm (allow or skip) Geert Rademakes 2025-08-08 13:00:40 +02:00
  • 083eca58cf Merge branch 'chore/refactor-cleanup' Geert Rademakes 2025-08-08 12:53:18 +02:00
  • 3bd110884c feat(admin): add /api/music/fix-content-types to correct MIME types; ensure sync sets proper contentType for FLAC and others Geert Rademakes 2025-08-08 12:04:05 +02:00
  • 5144df2e93 fix(flac): set correct contentType for FLAC and other types in S3 sync; include contentType hint in stream endpoint response Geert Rademakes 2025-08-08 12:02:03 +02:00
  • 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 Geert Rademakes 2025-08-08 11:30:59 +02:00
  • 70485e8808 fix(player): prevent audio element from stealing focus while playing (blur and tabIndex=-1) so search input remains usable Geert Rademakes 2025-08-08 11:15:47 +02:00
  • 2e21c3b5f5 fix(matching): strip diacritics in matching and quick match so accented letters (e.g., é) match plain equivalents Geert Rademakes 2025-08-08 11:06:48 +02:00
  • 07044c7594 fix(matching): URL-decode filenames and Rekordbox locations during quick match and location matching (%20, %27 etc.) Geert Rademakes 2025-08-08 11:00:08 +02:00
  • fe282bf34f feat(frontend): show Rekordbox path in SongDetails for selected song Geert Rademakes 2025-08-08 10:52:38 +02:00
  • 9c8bf11986 fix(background-jobs): poll job list continuously so newly started jobs appear immediately in the floating widget Geert Rademakes 2025-08-08 10:20:30 +02:00
  • 7618c40a77 fix(frontend): center loading spinner on large screens by using full-viewport container and removing #root max-width constraint Geert Rademakes 2025-08-08 09:49:02 +02:00
  • 4f440267bd feat(frontend): start S3 sync via background job API and rely on progress widget instead of direct endpoint; remove unused MusicStorage page Geert Rademakes 2025-08-08 09:37:41 +02:00
  • 31a420cf5c perf(backend): reduce projection for playlist total duration calculation; fewer fields fetched Geert Rademakes 2025-08-08 09:18:48 +02:00
  • 940469ba52 chore(refactor): remove unused files (TwoPhaseSyncService, unused frontend types) Geert Rademakes 2025-08-08 09:18:06 +02:00
  • f6ecd07d98 feat(duplicates): add filter to show only groups where at least one song is in a playlist Geert Rademakes 2025-08-08 09:09:31 +02:00
  • f7f44f2c48 feat(duplicates): add backend delete-duplicates and UI action to delete redundant songs after merging playlists Geert Rademakes 2025-08-08 09:07:45 +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 Geert Rademakes 2025-08-08 08:59:54 +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() Geert Rademakes 2025-08-08 08:51:23 +02:00
  • 83b4682b0e chore(frontend): remove live song-list refresh during S3 sync per request; refresh now only on manual actions/page reload Geert Rademakes 2025-08-08 08:47:39 +02:00
  • 482460a8b7 feat(frontend): live-refresh song list during S3 sync so newly matched tracks show play button immediately Geert Rademakes 2025-08-07 23:47:58 +02:00
  • d231073fe0 feat(frontend/config): UX improvements Geert Rademakes 2025-08-07 23:41:33 +02:00
  • b436d1dabc feat: implement immediate song document updates for perfect sync resilience Geert Rademakes 2025-08-07 23:36:30 +02:00
  • 96c43dbcff feat: implement infinite scroll with 100 songs per page Geert Rademakes 2025-08-07 20:23:05 +02:00
  • 3cd83ff2b5 feat: improve S3 sync and song matching with better FLAC support, NaN validation, and enhanced logging Geert Rademakes 2025-08-07 17:14:57 +02:00
  • 050e31288a chore: Remove debug endpoint after playlist issue resolution Geert Rademakes 2025-08-07 08:57:10 +02:00
  • 176c2b1574 feat: Add debug endpoint for playlist troubleshooting Geert Rademakes 2025-08-06 16:04:44 +02:00