From 8105f589ce483d7c5a88585fc3256748e6ce5ef5 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:39:23 -0700 Subject: [PATCH] Update version modal and helper What's New with all recent features Added: Track Redownload with source info and provenance tracking, Spotify API rate limit improvements (caching, auto-pause workers), YouTube Topic fix, CAA art toggle, Genius search improvements, Genius rate limit interval increase. Updated existing redownload entry to reflect final implementation (removed old blacklist-from-delete reference, added streaming source search and provenance tracking). --- web_server.py | 45 +++++++++++++++++++++++++++++++++--------- webui/static/helper.js | 3 ++- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/web_server.py b/web_server.py index 2be2dbdc..708c9032 100644 --- a/web_server.py +++ b/web_server.py @@ -20015,18 +20015,45 @@ def get_version_info(): "subtitle": f"Version {SOULSYNC_VERSION} — Latest Changes", "sections": [ { - "title": "🔄 Track Redownload & Smart Delete", - "description": "Fix mismatched downloads with manual source selection and smart file management", + "title": "🔄 Track Redownload — Fix Mismatched Downloads", + "description": "Replace wrong downloads with the correct version using manual source selection", "features": [ "• Redownload button (↻) on each track in the enhanced library view", - "• Step 1: Search Spotify, iTunes, and Deezer simultaneously for the correct metadata", - "• Step 2: Search all download sources (Soulseek, YouTube, Tidal, etc.) and pick the right file", - "• Step 3: Download replaces the old file automatically", - "• Smart Delete: choose to remove from library only, delete file too, or delete & blacklist", - "• Download Blacklist: blacklisted sources are skipped in all future downloads", - "• Blacklist integration in the download pipeline prevents re-downloading bad matches" + "• Step 1: All metadata sources (Spotify, iTunes, Deezer) searched in columns side-by-side", + "• Step 2: All download sources searched simultaneously — results stream in as each source responds", + "• Step 3: Download with real progress bar, old file deleted, DB path updated automatically", + "• Full pipeline parity — track number, album context, metadata tagging all work correctly", + "• Source Info (ℹ) button shows where each track was downloaded from", + "• Download provenance tracking — every download's source is recorded for future reference", + "• Smart Delete: choose to remove from library only or delete the file from disk too", + "• Download Blacklist: block specific sources from the Source Info popover — blacklisted sources skipped in all future downloads", + "• Blacklist viewer on dashboard Tools section with remove capability" ], - "usage_note": "In the enhanced library view, click ↻ on any track to redownload, or click ✕ to smart-delete." + "usage_note": "In the enhanced library view, click ↻ to redownload, ℹ for source info, or ✕ to delete." + }, + { + "title": "⚡ Spotify API Rate Limit Improvements", + "description": "Reduced Spotify API usage through caching and smart worker management", + "features": [ + "• get_artist_albums now cached — discography views, completion badges hit cache instead of API", + "• Watchlist scans bypass cache with skip_cache flag to always detect new releases", + "• All 5 discovery workers (Tidal, YouTube, ListenBrainz, Beatport, playlist search) now use cached search methods", + "• Eliminated duplicate API calls — discovery workers were calling sp.search() AND search_tracks() per query", + "• Auth probe cache TTL increased from 5 to 15 minutes — reduces /v1/me calls by 66%", + "• Spotify, Last.fm, and Genius enrichment workers auto-pause during active downloads to preserve rate limit headroom", + "• Dashboard shows 'Yielding for downloads' when workers are auto-paused" + ] + }, + { + "title": "🔧 Additional Fixes", + "description": "Bug fixes and quality-of-life improvements", + "features": [ + "• YouTube '- Topic' suffix stripped from auto-generated channel names (#231)", + "• Cover Art Archive album art now opt-in via Settings toggle (#232)", + "• cover.jpg now correctly uses Cover Art Archive when enabled (was silently failing)", + "• Genius artist search returns multiple results for manual matching (#233)", + "• Genius API interval increased from 1.5s to 2s to reduce 429 rate limits" + ] }, { "title": "🖥️ Server Playlist Manager — Compare & Fix Matches", diff --git a/webui/static/helper.js b/webui/static/helper.js index 857079f8..552c94d9 100644 --- a/webui/static/helper.js +++ b/webui/static/helper.js @@ -3403,7 +3403,8 @@ function closeHelperSearch() { const WHATS_NEW = { '2.1': [ // Newest features first - { title: 'Track Redownload & Smart Delete', desc: 'Fix mismatched downloads — pick metadata source, choose download source, replace old file. Smart delete with file removal and blacklist', page: 'library' }, + { title: 'Track Redownload & Source Info', desc: 'Fix mismatched downloads — search all metadata and download sources in columns, pick the right version, auto-replace. Source Info shows where tracks came from with blacklist option', page: 'library' }, + { title: 'Spotify API Rate Limit Improvements', desc: 'Cached get_artist_albums, eliminated duplicate search calls, auth probe reduced 66%, enrichment workers auto-pause during downloads' }, { title: 'Server Playlist Manager', desc: 'Compare source playlists against your media server — find missing tracks, swap wrong matches, remove extras with a dual-column editor', page: 'sync' }, { title: 'Sync History Dashboard', desc: 'Dashboard shows recent syncs as cards — click for per-track match details with confidence scores and album art' }, { title: 'Fix Japanese/CJK Soulseek Searches', desc: 'Japanese kanji no longer mangled into Chinese pinyin — searches now use original characters' },