- Use get_seasonal_discovery_service(spotify_client, database) instead
of broken SeasonalDiscoveryService(database) in both auto-sync and
track_count paths
- Replace nonexistent get_current_season_playlist() with working
get_current_season() + get_curated_seasonal_playlist() pattern
- Use generic track_id field for personalized playlist auto-sync
instead of hardcoded spotify_track_id (fixes Deezer/iTunes)
- Replace fixed 400ms setTimeout in _applySyncTabAction with polling
loop that waits for target element (up to 4s)
Replace the misleading Force DL toggle on the Sync page Discover tab with
a disabled Any Quality toggle. Stop sending force_download_all from
discover sync so discover playlists run ownership analysis instead of
blindly re-downloading owned tracks.
Adds PLAN-download-quality-flags.md describing the full refactor plan.
Adds a full Discover Sync tab to the Sync page with:
- Core UI scaffolding, playlist modal, empty-state handling
- ListenBrainz playlist integration with auto-update toggle persistence
- Sync progress tracking with matched/total counts on cards
- Navidrome playlist push on batch completion (V1 and V2 paths)
- Active download state display with polling resume on page reload
- Stuck-download detection for downloading and catch-all states
- Serialized sync queue to prevent concurrent backend contention
- Source badges, compact card layout, URL fixes