diff --git a/web_server.py b/web_server.py index 303db8a5..4dfa8b01 100644 --- a/web_server.py +++ b/web_server.py @@ -20974,16 +20974,75 @@ def get_version_info(): "subtitle": f"Version {SOULSYNC_VERSION} β€” Latest Changes", "sections": [ { - "title": "πŸ“‹ Download History β€” Source Provenance", - "description": "Download history now tracks the original source file info for every download", + "title": "🎡 Deezer User Playlists β€” Browse & Download Your Library", + "description": "New Deezer tab on the Sync page shows your personal playlists via ARL token β€” same flow as Spotify", "features": [ - "β€’ Source filename, track ID, and original track title saved with each download", - "β€’ AcoustID verification result (Verified/Failed/Skipped/Off) shown as a badge per entry", - "β€’ Source details displayed in monospace under each history entry for easy debugging", - "β€’ Settings Connections tab redesigned with collapsible accordion services and brand-colored dots" + "β€’ Click Refresh to load all your Deezer playlists with track counts", + "β€’ Click any playlist to view tracks, then Download Missing or Sync β€” no discovery step needed", + "β€’ Existing Deezer URL import moved to 'Deezer Link' tab (unchanged)", + "β€’ ARL token field added to Connections tab alongside Downloads tab with bidirectional sync", + "β€’ Album release dates fetched for proper $year template variable support" + ], + "usage_note": "Configure your ARL token in Settings > Connections or Downloads, then open the Deezer tab on the Sync page." + }, + { + "title": "πŸ”’ Qobuz Token Auth β€” CAPTCHA Bypass", + "description": "Qobuz added reCAPTCHA to their login β€” token auth lets you paste your session token directly", + "features": [ + "β€’ New 'Auth Token' field on both Connections and Downloads tabs for Qobuz", + "β€’ Log into play.qobuz.com in your browser, copy X-User-Auth-Token from DevTools, paste it in", + "β€’ Bypasses the CAPTCHA entirely β€” existing email/password login still works if your session is active", + "β€’ Token is validated and saved as a normal session β€” identical to email/password login" + ], + "usage_note": "If Qobuz email/password login fails, use the Auth Token field instead." + }, + { + "title": "πŸ›‘οΈ Streaming Source Matching β€” Artist Gate", + "description": "Tidal, Qobuz, HiFi, and Deezer downloads no longer match to wrong artists", + "features": [ + "β€’ Artist similarity gate rejects candidates below 0.4 match threshold", + "β€’ Streaming source threshold raised from 0.55 to 0.60", + "β€’ No more fallback to lenient Soulseek filename matcher for structured API sources", + "β€’ Fixed single-char artist containment bug (e.g. 'B小町' no longer matches 'B.B. King')", + "β€’ YouTube and Soulseek matching completely unchanged" + ], + "usage_note": "Downloads from official sources are now much more accurate. Check Download History for verification details." + }, + { + "title": "πŸ“‹ Download History β€” Source Provenance", + "description": "Collapsible download history with full source tracking and AcoustID verification badges", + "features": [ + "β€’ Expected vs Downloaded comparison β€” shows what you asked for vs what the source provided", + "β€’ Mismatched downloads highlighted in red for easy identification", + "β€’ AcoustID verification badge per entry: Verified (green), Failed (red), Skipped (orange), Off (gray)", + "β€’ Source filename, track ID, and artist saved with every download", + "β€’ Click anywhere on an entry to expand/collapse details" ], "usage_note": "Click 'Download History' on the Dashboard to see source provenance for new downloads." }, + { + "title": "πŸ”§ Fixes & Improvements", + "description": "Bug fixes, quality of life improvements, and new settings", + "features": [ + "β€’ Artist names no longer stored as lowercase β€” fixed static method shadowing instance method. Run a database update to fix existing names.", + "β€’ Watchlist scanner skips future/unreleased albums β€” no more garbage downloads from albums not yet out", + "β€’ Playlist sync tracks now tagged with correct track numbers instead of always 01", + "β€’ Emby playlist sync fixed β€” integer IDs now accepted alongside Jellyfin GUIDs", + "β€’ Discovery fix search now tries all metadata sources (Spotify β†’ Deezer β†’ iTunes) with automatic fallback", + "β€’ Album completeness scanner skips zero-track albums to prevent auto-fill errors", + "β€’ Global search string escaping fixed β€” albums with newlines in metadata no longer crash", + "β€’ Download history timestamps fixed β€” no longer always showing 'Just now'", + "β€’ Discogs added to enrichment service whitelist β€” Enrich button now works for Discogs", + "β€’ Settings Connections tab redesigned with collapsible accordion services and brand-colored dots", + "β€’ Metadata source filter on Library page β€” filter artists by matched/unmatched to any service", + "β€’ Database Maintenance UI β€” VACUUM and incremental vacuum in Settings > Advanced", + "β€’ Music Library Paths setting β€” configure where your music files live for tag writing and file detection", + "β€’ Replace lower quality files on import β€” opt-in toggle in Settings > Library", + "β€’ HiFi API instance health check in Settings > Downloads", + "β€’ Debug test activity feed message removed from startup", + "β€’ Global search downloads now create bubble snapshots on Dashboard and Search page" + ] + }, { "title": "πŸ—ΊοΈ Artist Map β€” Visualize Your Music Universe", "description": "Three interactive canvas-based visualization modes on the Discover page", diff --git a/webui/static/docs.js b/webui/static/docs.js index 6b80bfb2..59c1ba58 100644 --- a/webui/static/docs.js +++ b/webui/static/docs.js @@ -79,7 +79,7 @@ const DOCS_SECTIONS = [ Soulseek (slskd)Download source — P2P network, best for lossless and rare musicURL + API key YouTubeDownload source — audio extraction via yt-dlpNone (optional cookies browser) TidalDownload source + playlist import + enrichmentOAuth — Client ID + Secret - QobuzDownload source + enrichmentUsername + Password (app ID auto-fetched) + QobuzDownload source + enrichmentUsername + Password, or Auth Token (from browser DevTools) HiFiDownload source — free lossless via community APINone DeezerDownload source + metadata fallback + user playlistsARL cookie token DiscogsEnrichment — genres, styles, labels, catalog numbers, community ratingsPersonal Access Token (free) @@ -1395,7 +1395,7 @@ const DOCS_SECTIONS = [
  • Tidal — Client ID + Secret, then Authenticate via OAuth
  • Last.fm — API key from last.fm/api
  • Genius — Access token from genius.com/api-clients
  • -
  • Qobuz — Username + Password (app ID is auto-fetched)
  • +
  • Qobuz — Username + Password (app ID auto-fetched), or paste an Auth Token from browser DevTools if login fails due to CAPTCHA
  • HiFi — No credentials needed, uses community-run API instances. Test Connection to verify.
  • Deezer — ARL cookie token from your browser (log into deezer.com → DevTools → Cookies → copy arl). Used for downloads AND user playlist access.
  • Discogs — Personal Access Token from discogs.com/settings/developers (free, no app registration needed). Provides genres, styles, labels, catalog numbers, and community ratings.
  • @@ -1460,6 +1460,9 @@ const DOCS_SECTIONS = [
  • Path Templates — Configure how files are organized in your library. The default template is Artist/Album/TrackNum - Title.ext
  • Log Level — Set the application log verbosity (DEBUG, INFO, WARNING, ERROR) from the Settings page. Changes take effect immediately without restart. Useful for troubleshooting issues.
  • WebSocket — Real-time status updates are delivered via WebSocket. All downloads, enrichment progress, scan status, and system events push to the UI without polling.
  • +
  • Music Library Paths — In Settings > Library, add folder paths where your music files live. Required for tag writing, streaming, and file detection when your media server stores files at a different path than SoulSync can see. Docker users: mount your music folder(s) with read-write access, then add the container-side path.
  • +
  • Replace Lower Quality on Import — Opt-in toggle in Settings > Library. When importing from Staging, if a track already exists at lower quality (e.g. MP3), it gets replaced with the higher quality version (e.g. FLAC). Disabled by default.
  • +
  • HiFi Instance Health — In Settings > Downloads > HiFi, click "Check All Instances" to see which community API instances are online, searchable, or able to download.