diff --git a/web_server.py b/web_server.py index 81c67b72..6b7b100f 100644 --- a/web_server.py +++ b/web_server.py @@ -17801,6 +17801,90 @@ def get_version_info(): "title": "What's New in SoulSync", "subtitle": f"Version {SOULSYNC_VERSION} — Latest Changes", "sections": [ + { + "title": "🔍 Multi-Source Search Tabs", + "description": "View search results from Spotify, iTunes, and Deezer side by side", + "features": [ + "• Enhanced search now fires parallel queries against all available metadata sources", + "• Switchable tabs above results — click to view results from Spotify, Apple Music, or Deezer", + "• Tabs load progressively — primary source shows instantly, alternates appear as they complete", + "• Click an artist or album from any tab to browse that source's data temporarily", + "• Downloads use the metadata from whichever source tab you're viewing", + "• Similar artists always use your primary source — no accidental cross-source mixing" + ] + }, + { + "title": "👥 Per-Profile Service Credentials", + "description": "Each profile can connect their own Spotify, Tidal, and media server library", + "features": [ + "• Non-admin profiles can enter their own Spotify credentials and authenticate their own account", + "• Per-profile Tidal authentication — connect your own Tidal account through the shared app", + "• Per-profile media server library selection — choose which Plex library or Jellyfin user playlists sync to", + "• Tabbed personal settings modal: Music Services, Server, and Scrobbling tabs", + "• Server tab auto-detects active server and shows library name dropdowns (not raw IDs)", + "• All credentials encrypted. Admin users see zero change — fully backwards compatible" + ] + }, + { + "title": "⚙️ Modern Settings Redesign", + "description": "Settings page rebuilt with tabbed single-column layout", + "features": [ + "• Horizontal tab bar: Connections, Downloads, Library, Appearance, Advanced", + "• Single centered column replaces 3-column wall of cards", + "• Clean row layout — label left, control right", + "• Custom styled dropdowns with SVG arrows and hover states", + "• Mobile responsive — rows stack, tab bar scrolls" + ] + }, + { + "title": "🔄 Hybrid N-Source Download Priority", + "description": "Hybrid mode now supports all 5 download sources with drag-to-reorder priority", + "features": [ + "• Enable/disable any combination of Soulseek, YouTube, Tidal, Qobuz, and HiFi", + "• Up/down arrows to reorder source priority — downloads try each enabled source in order", + "• Source icons with toggle switches and priority numbers", + "• Configurable download timeout and max peer queue length for Soulseek", + "• Peer quality (upload speed, free slots, queue length) now factors into result ranking" + ] + }, + { + "title": "🚀 Automation Hub Pipelines", + "description": "One-click deployment of multi-automation pipelines", + "features": [ + "• 11 pre-built pipelines: Release Radar, Discovery Weekly, Playlist Auto-Sync, Nightly Operations, and more", + "• Each pipeline deploys 2-5 linked automations with signal chaining in one click", + "• Visual pipeline cards with connected flow nodes and accent-colored design", + "• Pipeline detail modal shows full WHEN/DO/THEN breakdown for each automation", + "• Deploy prompts for notification config (Discord/Telegram/Pushbullet) when pipeline includes alerts" + ] + }, + { + "title": "📂 Staging Folder Pre-Download Check", + "description": "Check your staging folder for existing files before downloading", + "features": [ + "• Before searching Soulseek/YouTube, checks the staging folder for a matching file", + "• Tag-based matching (Mutagen) with filename parsing fallback", + "• On match, copies the file to transfer and runs normal post-processing", + "• Staging scan cached per batch — only scans once for the entire download" + ] + }, + { + "title": "🛡️ Library Safety & Repair Fixes", + "description": "Critical fixes for library maintenance jobs and safety guards", + "features": [ + "• Mass orphan safety guard — 'witness me' confirmation required when >50% of files flagged as orphans", + "• Tag-based orphan fallback — reads file metadata before marking as orphan to prevent false positives", + "• Album Completeness expanded to support iTunes and Deezer (was Spotify-only)", + "• Album Completeness min completion % filter — skip playlist imports, catch real failed downloads", + "• Fix Track Number Repair returning 400 on fix (entity_id was NULL for file-based findings)", + "• Fix Library Reorganize producing (_) in paths when year is empty", + "• Fix Fix All ignoring Single/Album Dedup findings", + "• Fix enrichment workers looping infinitely on tracks with NULL IDs", + "• Fix Tidal token refresh hammering API when credentials removed", + "• Fix YouTube playlist parsing capped at ~100 tracks", + "• Allow re-sync from download_complete state with Rediscover button" + ] + }, { "title": "🎵 Deezer Metadata Source", "description": "Deezer added as a configurable free metadata fallback alongside iTunes/Apple Music",