diff --git a/web_server.py b/web_server.py index 6df479cf..8f4e882c 100644 --- a/web_server.py +++ b/web_server.py @@ -22529,6 +22529,7 @@ def get_version_info(): "• Reject Qobuz 30-second sample/preview downloads", "• Fix library page crash on All filter — non-string soul_id broke card rendering", "• Auto Wing It fallback for failed discovery — unmatched tracks download via Soulseek with raw metadata", + "• Fix downloads badge dropping to 300 after opening Downloads page", "• Fix server playlist Find & Add inserting at wrong position on Plex", "• Smarter Fix modal results — standard album versions sorted above live/remix/cover/soundtrack variants", "• Unmatch discovery tracks — red ✕ button to remove bad matches from playlist discovery", diff --git a/webui/static/helper.js b/webui/static/helper.js index 2ab2ea92..422f4ecb 100644 --- a/webui/static/helper.js +++ b/webui/static/helper.js @@ -3602,6 +3602,7 @@ const WHATS_NEW = { '2.33': [ // --- April 19, 2026 --- { date: 'April 19, 2026' }, + { title: 'Fix Downloads Badge Dropping to 300', desc: 'Downloads nav badge showed the correct count from WebSocket but dropped to max 300 after opening the Downloads page because it recounted from a truncated local array. Badge now stays accurate from the server-side count' }, { title: 'Fix Server Playlist Find & Add Position', desc: 'When using "Find & add" on server playlists with Plex, the track was always appended to the end instead of inserted at the correct position. Now moves the track to the right slot after adding' }, { title: 'Smarter Fix Modal Search Results', desc: 'The discovery Fix modal now sorts search results to prioritize standard album versions over live recordings, remixes, covers, soundtracks, remasters, and deluxe editions. Previously the first result was often a live or remix version instead of the original studio track' }, { title: 'Unmatch Discovery Tracks', desc: 'Found tracks in playlist discovery now have a red ✕ button to remove the match. Sets the track back to Not Found so it won\'t be downloaded. For mirrored playlists, the unmatch persists in the DB and is respected on re-discovery runs' }, diff --git a/webui/static/script.js b/webui/static/script.js index c70c0755..8d6754ca 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -76172,7 +76172,9 @@ async function _adlFetch() { _adlBatches = data.batches || []; _adlRender(); _adlRenderBatchPanel(); - _adlUpdateBadge(); + // Don't call _adlUpdateBadge() here — it counts the truncated + // 300-item local array. The WebSocket status push already + // maintains the badge with the real server-side active count. } } catch (e) { console.error('Downloads page fetch error:', e);