Commit Graph

  • ba78aabd53 feat: Add proper title and favicon for Rekordbox Reader Geert Rademakes 2025-08-06 16:02:00 +02:00
  • 9eb4587537 feat: Integrate all Music Storage functionality into unified Configuration page Geert Rademakes 2025-08-06 15:57:35 +02:00
  • d16217eac1 feat: Create unified Configuration page with tabs Geert Rademakes 2025-08-06 15:51:57 +02:00
  • 7cc890557d fix: Fix S3Configuration import error and integrate as Music Storage tab Geert Rademakes 2025-08-06 15:40:18 +02:00
  • 01c017a5e6 fix: Implement global music player context to prevent duplicate players Geert Rademakes 2025-08-06 15:37:16 +02:00
  • 15cad58c80 feat: Add S3 Configuration page for external bucket setup Geert Rademakes 2025-08-06 15:32:50 +02:00
  • 1f235d8fa8 feat: Remove Player tab and use persistent player across app Geert Rademakes 2025-08-06 15:28:20 +02:00
  • a3d1b4d211 feat: Add searchable playlist selection modal Geert Rademakes 2025-08-06 15:25:36 +02:00
  • a28fe003a0 fix: Remove music icon badge from PersistentMusicPlayer Geert Rademakes 2025-08-06 15:20:35 +02:00
  • 6244c7c6b8 fix: Resolve main view player issues and clean up UI Geert Rademakes 2025-08-06 15:18:51 +02:00
  • 4361531513 fix: Map audio format names to user-friendly display names Geert Rademakes 2025-08-06 15:15:28 +02:00
  • e5c679a1ee feat: Add persistent music player for main view Geert Rademakes 2025-08-06 15:14:35 +02:00
  • 47276728df feat: Add S3 playback to main view and improve Music Library layout Geert Rademakes 2025-08-06 15:09:38 +02:00
  • 1bb1f7d0d5 fix: Resolve scrolling and audio playback issues Geert Rademakes 2025-08-06 15:05:33 +02:00
  • 3317a69004 feat: Update Music Storage page to use dark theme Geert Rademakes 2025-08-06 15:01:40 +02:00
  • 7f186c6337 feat: Add recursive S3 file discovery and sync functionality Geert Rademakes 2025-08-06 14:57:46 +02:00
  • 72dfa951b4 feat: Add Music Storage page to frontend routing Geert Rademakes 2025-08-06 14:53:21 +02:00
  • 3fdd5d130f fix: Update test scripts to work with ES modules and fix import issues Geert Rademakes 2025-08-06 14:19:05 +02:00
  • 7306bfe32a docs: Add comprehensive testing guide and test script Geert Rademakes 2025-08-06 14:13:45 +02:00
  • 870ad39b94 fix: Remove S3 data from XML export - keep pure Rekordbox XML Geert Rademakes 2025-08-06 14:10:35 +02:00
  • a3d6983fc4 docs: Add XML path preservation enhancement summary Geert Rademakes 2025-08-06 14:08:12 +02:00
  • b120a7cf6d feat: Preserve original file paths and add S3 information alongside Geert Rademakes 2025-08-06 14:07:24 +02:00
  • 8684f2e59d docs: Add complete implementation summary Geert Rademakes 2025-08-06 13:56:19 +02:00
  • 4a7d9c178a feat: Add intelligent song matching system Geert Rademakes 2025-08-06 13:55:18 +02:00
  • 109efed445 feat: Add quick start script for S3 demo setup Geert Rademakes 2025-08-06 13:45:30 +02:00
  • 7000e0c046 feat: Implement S3 music storage and playback functionality Geert Rademakes 2025-08-06 13:44:17 +02:00
  • 1450eaa29b feat: Support full Rekordbox master collection format - Include all track properties (Composer, Album, Genre, Size, TotalTime, etc.) - Add PRODUCT section with rekordbox version info - Include TEMPO entries for beat grid information - Use proper indentation and formatting like master collection - Support KeyType and Entries attributes for playlists - Handle large libraries (7000+ songs) with streaming export - Full compatibility with Rekordbox master collection format Geert Rademakes 2025-08-06 13:34:08 +02:00
  • b6467253a3 fix: Match Rekordbox XML format exactly - Use compact XML format without line breaks or indentation - Include only TrackID, Name, and Artist attributes for tracks - Use Count attribute instead of Entries for playlists - Set correct Count="4" on ROOT node for playlist count - Remove encoding declaration to match Rekordbox format - Export now 100% compatible with Rekordbox import/export Geert Rademakes 2025-08-06 13:31:46 +02:00
  • f3e91c5012 fix: Add Vite proxy configuration for API requests - Configure proxy to forward /api requests to backend on localhost:3000 - Fixes export function receiving HTML instead of XML - Ensures frontend can properly communicate with backend API - Restart frontend dev server required for proxy to take effect Geert Rademakes 2025-08-06 12:58:58 +02:00
  • 4452a78b16 perf: Implement streaming XML export for large libraries - Add streamToXml function that processes data in batches - Stream songs in chunks of 100 to avoid memory issues - Write XML directly to response stream instead of building in memory - Add progress logging for large exports - Proper XML escaping for special characters - Much better performance for libraries with thousands of songs Geert Rademakes 2025-08-06 11:31:50 +02:00
  • 7286140bd5 feat: Move export functionality to backend for complete database export - Create backend XML service for generating Rekordbox-compatible XML - Add /api/songs/export endpoint that exports entire database - Frontend now calls backend API instead of local function - Exports ALL songs and playlists from database, not just loaded ones - Proper file download with correct headers and filename Geert Rademakes 2025-08-06 11:26:51 +02:00
  • 1cba4e0eeb feat: Add export library button to front page - Add download icon button next to settings cog - Export current library to XML format compatible with Rekordbox - Auto-generate filename with current date - Disable button when no songs are available - Provides easy way to backup and share library data Geert Rademakes 2025-08-06 11:24:05 +02:00
  • 060d339e78 feat: Navigate to homepage after successful database reset - Add navigation to '/' after database reset completes - Shows welcome modal and provides fresh start experience - Improves UX flow after clearing library data Geert Rademakes 2025-08-06 11:21:19 +02:00
  • 966240b0d1 perf: Streamline playlist switching flow for faster, cleaner transitions - Clear all state immediately (songs, totalSongs, totalDuration) on playlist switch - Combine switching and loading states into single spinner with dynamic text - Remove duplicate switching indicators to prevent UI flicker - Reset switching state when loading starts for immediate transition - Eliminates confusing flow: switching → old data → 0 of X → loading → new data - Now shows: switching → loading → new data (much cleaner) Geert Rademakes 2025-08-06 11:18:09 +02:00
  • 90bcd10ed9 feat: Reset song count indicator when switching playlists - Show '0 of 0 songs • Switching playlist...' during playlist switch - Provides consistent visual feedback across all UI elements - Makes playlist switching feel even more responsive and clear Geert Rademakes 2025-08-06 11:14:16 +02:00
  • 491235af29 feat: Add immediate visual feedback for playlist switching - Clear song list immediately when switching playlists for instant feedback - Add 'Switching playlist...' loading indicator with spinner - Set switching state immediately on playlist selection - Reset switching state when new songs are loaded - Makes playlist switching feel much more responsive and clear Geert Rademakes 2025-08-06 11:12:58 +02:00
  • 4c3b3e31d4 perf: Additional optimizations to reduce React violations and improve performance - Add early return for empty songs array in totalDuration calculation - Add null check for getAllPlaylists to prevent unnecessary processing - Use requestAnimationFrame in Intersection Observer for better performance - Should reduce 600-1400ms message handler violations Geert Rademakes 2025-08-06 11:10:28 +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 Geert Rademakes 2025-08-06 10:59:16 +02:00
  • 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 Geert Rademakes 2025-08-06 10:57:25 +02:00
  • e2ae3bd6d8 cleanup: Remove debugging console logs - Remove timestamp logging from playlist selection and change detection - Remove loadPage call logging - Clean up temporary debugging code Geert Rademakes 2025-08-06 10:54:30 +02:00
  • 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 Geert Rademakes 2025-08-06 10:52:11 +02:00
  • 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 Geert Rademakes 2025-08-06 10:51:08 +02:00
  • 57c1047357 debug: Add console logs to investigate playlist switching delay - Add logging to track playlist selection and change detection - Remove isInitialLoad condition that might block playlist changes - Optimize initial load to prevent conflicts with playlist switching - Temporary debugging to identify timing issues Geert Rademakes 2025-08-06 10:49:31 +02:00
  • 9268a4635f perf: Remove unnecessary delays in playlist switching and infinite scroll - Remove setTimeout delay in playlist change handler - Reduce infinite scroll trigger delay from 1000ms to 100ms - Improve responsiveness when switching playlists and scrolling - Fixes 1-second delay between URL change and actual loading Geert Rademakes 2025-08-06 10:47:37 +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 Geert Rademakes 2025-08-06 10:43:18 +02:00
  • 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 Geert Rademakes 2025-08-06 10:39:51 +02:00
  • 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 Geert Rademakes 2025-08-06 10:35:17 +02:00
  • 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 Geert Rademakes 2025-08-06 10:33:16 +02:00
  • 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 Geert Rademakes 2025-08-06 10:30:02 +02:00
  • 54bffbc25d feat: Make playlist switching less intrusive - Remove full loading screen for playlist switches - Only show full loading for initial XML parsing - Use subtle spinner in song list area for playlist loading - Improve UX by keeping interface responsive during navigation Geert Rademakes 2025-08-06 10:24:04 +02:00
  • 65120ff654 revert: Change indentation back to 10px per level - Revert from 16px to 10px for better visual balance - Keep visual indicators and padding improvements Geert Rademakes 2025-08-06 10:22:14 +02:00
  • 50f29b900e feat: Move 'Add Playlist' and 'Add Folder' buttons to the top - Position buttons right after 'All Songs' for better accessibility - Add proper spacing with mb={2} for visual separation - Improve UX by making action buttons more prominent Geert Rademakes 2025-08-06 10:21:49 +02:00
  • 5fb878a0b0 feat: Improve playlist hierarchy visualization - Increase indentation for nested playlists (16px per level) - Add visual indicators (gray bars) for nested items - Add extra padding for better visual separation - Make folder structure more clearly visible Geert Rademakes 2025-08-06 10:21:12 +02:00
  • 4f16c859db fix: Prevent infinite scroll refresh by stabilizing intersection observer - Add trigger prevention mechanism to avoid multiple API calls - Use refs to store current values and avoid stale closures - Remove observer dependencies to prevent recreation - Add proper timeout cleanup to prevent memory leaks Geert Rademakes 2025-08-06 10:13:21 +02:00
  • 2e32a3c3b6 fix: Make playlist folders start collapsed by default - Change default state from expanded to collapsed for better UX Geert Rademakes 2025-08-06 10:05:32 +02:00
  • 7fb8614130 feat: Major performance optimizations - Add React.memo, useMemo, and useCallback to prevent unnecessary re-renders - Implement request cancellation with AbortController to prevent memory leaks - Add debounced search to reduce API calls - Optimize song selection and playlist switching performance - Fix browser crashes and memory leaks - Add proper cleanup functions Geert Rademakes 2025-08-06 10:03:26 +02:00
  • e98fdf50cb bigger payload Geert Rademakes 2025-04-29 09:52:45 +02:00
  • 506569b038 UI fixes Geert Rademakes 2025-04-25 11:30:47 +02:00
  • 9116b785ea bitrate logic updates Geert Rademakes 2025-04-25 11:04:13 +02:00
  • f3d067ab16 UX fix Geert Rademakes 2025-04-25 10:46:39 +02:00
  • 40c75d479a Nice onboarding flow & reset database function Geert Rademakes 2025-04-25 10:42:45 +02:00
  • db4408b953 Added config page! Geert Rademakes 2025-04-25 10:29:24 +02:00
  • 5c1cf64c4c Routing fixes Geert Rademakes 2025-04-25 10:01:45 +02:00
  • ab531462c2 Some extra ui improvements Geert Rademakes 2025-04-25 09:38:53 +02:00
  • 7e1f4e1cd4 UI fixes! Geert Rademakes 2025-04-25 09:21:38 +02:00
  • 1a3beb7e6f Details are working again Geert Rademakes 2025-04-24 23:50:54 +02:00
  • 9e32aa0a99 Folders are working aswell!! Geert Rademakes 2025-04-24 23:48:23 +02:00
  • 3a13c24301 Folders working! Geert Rademakes 2025-04-24 23:45:14 +02:00
  • f82cb84397 Draggable playlist sidebar Geert Rademakes 2025-04-24 23:11:46 +02:00
  • 83fe6994b8 Better UI! Geert Rademakes 2025-04-24 23:11:07 +02:00
  • 7e08b0e567 Delete playlist added Geert Rademakes 2025-04-24 22:51:21 +02:00
  • 8daf0cd526 url based nav part 2 Geert Rademakes 2025-04-24 22:12:01 +02:00
  • ea2942edc1 url based navigation Geert Rademakes 2025-04-24 22:11:51 +02:00
  • 35da4f83ce With amazing details screen on the sidebar now! Geert Rademakes 2025-04-24 19:55:10 +02:00
  • ff371aa855 Update to the manager Geert Rademakes 2025-04-24 16:14:52 +02:00
  • 5c62f9d147 UI improvements! Geert Rademakes 2025-04-24 16:08:06 +02:00
  • 3e8141aeba Added docker compose deployments Geert Rademakes 2025-04-24 15:46:10 +02:00
  • 901c78990b frontend AND backend bro!! Geert Rademakes 2025-04-24 15:28:22 +02:00
  • 32823fd40d Now prettier XML Geert Rademakes 2025-03-12 12:59:52 +01:00
  • 23fa46e223 Working v0.01 with ... Geert Rademakes 2025-03-12 00:39:05 +01:00
  • dde28bc286 Working version that actually exports!! Geert Rademakes 2025-03-12 00:32:29 +01:00
  • 503938230f first commit Geert Rademakes 2025-03-11 23:45:16 +01:00