From 70005968b6547db2cdc1005f84769f0b1c0d170b Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Sat, 18 Apr 2026 01:28:19 -0700 Subject: [PATCH] Restructure version modal and What's New for v2.31 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SoulSync Standalone Library is now the first section in both the version modal and What's New popup. Auto-Import section updated with all improvements (recursive scan, singles, tag preference, AcoustID). New Downloads & Soulseek section groups download-related improvements. Recent Fixes cleaned up — feature items moved to proper sections. --- web_server.py | 50 +++++++++++++++++++++++++++++------------- webui/static/helper.js | 2 +- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/web_server.py b/web_server.py index 4c1326d2..2527ed9e 100644 --- a/web_server.py +++ b/web_server.py @@ -22486,15 +22486,31 @@ def get_version_info(): "title": "What's New in SoulSync", "subtitle": f"Version {SOULSYNC_VERSION} — Latest Changes", "sections": [ + { + "title": "SoulSync Standalone Library", + "description": "Use SoulSync without Plex, Jellyfin, or Navidrome — manage your library directly", + "features": [ + "• New 'Standalone' server option in Settings → Connections", + "• Downloads and imports write artist/album/track to the library database immediately", + "• Pre-populated enrichment IDs (Spotify, Deezer, MusicBrainz) — workers skip re-discovery", + "• Deep scan finds untracked files in Transfer → moves to Staging for processing", + "• Deep scan removes stale DB records when files are deleted from disk", + "• Sync page and sync buttons hidden automatically in standalone mode", + "• Full library page, artist detail, discography, and enhanced view all work standalone", + ], + "usage_note": "Go to Settings → Connections and click the 'Standalone' button. No media server needed." + }, { "title": "Auto-Import", "description": "Background staging folder watcher that automatically identifies and imports music into your library", "features": [ - "• Three identification strategies: audio file tags, folder name parsing, and AcoustID fingerprinting", - "• Confidence-gated processing: 90%+ auto-imports, 70-90% queued for review, below 70% left for manual", - "• Smart matching with weighted algorithm — title, artist, track number, and album signals", - "• Approve or reject pending imports from the Import page Auto tab", - "• Content hash-based deduplication prevents reprocessing the same folder", + "• Recursive scan — any folder depth (Artist/Album/tracks, Album/tracks, loose files)", + "• Single file support — loose audio files identified via tags, filename, or AcoustID", + "• Tag-based identification preferred over weak metadata matches (85% confidence for tagged files)", + "• AcoustID fingerprinting fallback for untagged or ambiguous files", + "• Stats bar, filter pills (All/Review/Imported/Failed), Scan Now, Approve All, Clear History", + "• Expandable track match details with per-track confidence scores", + "• Race condition fix prevents duplicate processing during multi-track albums", ], "usage_note": "Enable on the Import page Auto tab. Set your staging folder in Settings." }, @@ -22558,6 +22574,20 @@ def get_version_info(): "• Spotify API no longer called when Deezer/iTunes is the configured primary source", ], }, + { + "title": "Downloads & Soulseek Improvements", + "description": "Better download management, search accuracy, and queue control", + "features": [ + "• Downloads batch panel — color-coded batch cards with progress, cancel, expand, and 7-day history", + "• Soulseek search queries now include album name — reduces wrong-artist downloads", + "• Reject Soulseek results from Various Artists/VA/Unknown Artist folders", + "• Clearing wishlist now cancels the active wishlist download batch", + "• Album delete with 'Delete Files Too' option on enhanced library page", + "• Fix download modal freezing mid-download — M3U auto-save was exhausting server threads", + "• Fix Unknown Artist when adding playlist tracks to wishlist", + "• Fix slskd timeout spam when Soulseek is not the active download source", + ], + }, { "title": "Recent Fixes", "description": "Bug fixes from recent releases and community reports", @@ -22572,16 +22602,6 @@ def get_version_info(): "• Fix replace lower quality setting not persisting", "• Fix Spotify enrichment worker infinite loop on pre-matched artists", "• Reject Qobuz 30-second sample/preview downloads", - "• Fix slskd timeout spam — dashboard and download status skip slskd polling when Soulseek is not active or disconnected", - "• Fix Soulseek search queries missing album name — reduces wrong-artist downloads", - "• Downloads batch panel — color-coded batch cards with progress, cancel, expand, and 7-day history", - "• Fix Unknown Artist when adding playlist tracks to wishlist", - "• Fix download modal freezing mid-download — M3U auto-save was exhausting server threads", - "• SoulSync Standalone Library — manage library without a media server, downloads write to DB immediately", - "• Auto-Import: recursive scan, singles, tag preference, AcoustID fallback, race condition fix, stats/filters/batch actions", - "• Album delete with file removal option on enhanced library page", - "• Reject Soulseek results from Various Artists/VA/Unknown Artist folders", - "• Clearing wishlist now cancels the active wishlist download batch", ], }, { diff --git a/webui/static/helper.js b/webui/static/helper.js index beaab24f..7672af6b 100644 --- a/webui/static/helper.js +++ b/webui/static/helper.js @@ -3602,6 +3602,7 @@ const WHATS_NEW = { '2.31': [ // --- April 17, 2026 --- { date: 'April 17, 2026' }, + { title: 'SoulSync Standalone Library', desc: 'New "Standalone" server option — manage your library without Plex, Jellyfin, or Navidrome. Downloads and imports write directly to the library database with pre-populated enrichment IDs. Deep scan finds untracked files and cleans stale records. Select in Settings → Connections', page: 'settings' }, { title: 'Auto-Import', desc: 'Background staging folder watcher that automatically identifies and imports music. Three strategies: audio tags, folder name parsing, and AcoustID fingerprinting. Confidence-gated: 90%+ auto-imports, 70-90% queued for review, below 70% left for manual. Enable on the Import page Auto tab', page: 'import' }, { title: 'Wishlist Nebula', desc: 'Wishlist redesigned as an interactive artist orb visualization. Each artist is a glowing orb with their photo — album fans and single moons orbit around them. Click orbs to expand, download albums/singles directly. Processing state shows live progress', page: 'wishlist' }, { title: 'Automation Group Management', desc: 'Rename, delete, and bulk-toggle automation groups. Drag-and-drop automations between groups. Right-click group headers for context menu', page: 'automations' }, @@ -3619,7 +3620,6 @@ const WHATS_NEW = { { title: 'Downloads Batch Panel', desc: 'Downloads page now shows a batch context panel on the right side. Each active batch (wishlist, sync, album download) gets a color-coded card with progress, cancel button, and expandable track list. Color indicators on download rows link them to their batch. Completed batch history shows the last 7 days', page: 'active-downloads' }, { title: 'Fix Unknown Artist on Wishlist Downloads', desc: 'Adding tracks to wishlist from a playlist download modal was storing "Unknown Artist" as the artist context. Now resolves the artist per-track from the track\'s own metadata instead of the playlist-level artist which is only set for album downloads' }, { title: 'Fix Download Modal Freezing Mid-Download', desc: 'Download modals (wishlist, sync, album) would freeze and stop updating after the first track completed. Caused by M3U auto-save firing every 2 seconds during downloads, exhausting Flask server threads. Now saves M3U once on completion only' }, - { title: 'SoulSync Standalone Library', desc: 'New "Standalone" server option — manage your library without Plex, Jellyfin, or Navidrome. Downloads and imports write directly to the library database with pre-populated enrichment IDs. Filesystem scanner provides incremental and deep scan via Transfer folder. Select in Settings → Connections', page: 'settings' }, { title: 'Auto-Import Improvements', desc: 'Recursive staging folder scan (any folder depth), single file support, expandable track match details, stats bar with filters, Scan Now button, Approve All / Clear History batch actions. Tag-based identification preferred over weak metadata matches. AcoustID fallback for untagged files. Race condition fix prevents duplicate processing', page: 'import' }, { title: 'Album Delete with File Removal', desc: 'Enhanced library album delete now offers "Delete Files Too" option alongside "Remove from Library" — deletes audio files from disk and cleans up empty album folders', page: 'library' },