Introduces timestamp-based stuck-flag detection and auto-recovery for both wishlist auto-processing and watchlist auto-scanning, preventing indefinite blocking if a process crashes. Refactors watchlist auto-scanning to use a timer-based system (mirroring wishlist), adds smart mutual exclusion between wishlist and watchlist automation, and ensures flags are always reset on completion or error. Improves startup diagnostics to recover stuck flags, and enhances logging and scheduling for both automation systems.
Implements manual track matching (discovery fix modal) for YouTube, Tidal, and Beatport platforms, allowing users to search and select Spotify tracks for unmatched results. Adds backend endpoints and frontend logic for updating matches, improves conversion of discovery results for sync/download, and updates Dockerfile/entrypoint for dynamic PUID/PGID/UMASK support. Includes a new DOCKER_PERMISSIONS.md guide.
Introduces backend scraping and API endpoint for Beatport genre Top 10 and Hype Top 10 tracks, with 1-hour caching. Updates frontend to load and display these lists in the genre browser modal, matching main page structure and click handling for chart discovery.
Introduces a new API endpoint to scrape tracks from multiple Beatport release URLs and integrates hero slider click handling on the rebuild page. The frontend now extracts release URLs from the hero slider and fetches track data using the new backend endpoint, improving rebuild page functionality.