Update What's New modal and Help docs for all recent changes

What's New: Added Deezer user playlists, Qobuz token auth, streaming
source artist gate, download history provenance, and comprehensive
fixes section covering artist name casing, future album skip, track
number fix, Emby sync, discovery fix fallback, and all new settings.

Help docs: Updated Qobuz auth to mention token option, added Music
Library Paths, Replace Lower Quality, and HiFi Instance Health to
Other Settings section.
This commit is contained in:
Broque Thomas 2026-04-08 13:30:21 -07:00
parent f603f92868
commit 163498e142
2 changed files with 70 additions and 8 deletions

View file

@ -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",

View file

@ -79,7 +79,7 @@ const DOCS_SECTIONS = [
<tr><td><strong>Soulseek (slskd)</strong></td><td>Download source &mdash; P2P network, best for lossless and rare music</td><td>URL + API key</td></tr>
<tr><td><strong>YouTube</strong></td><td>Download source &mdash; audio extraction via yt-dlp</td><td>None (optional cookies browser)</td></tr>
<tr><td><strong>Tidal</strong></td><td>Download source + playlist import + enrichment</td><td>OAuth &mdash; Client ID + Secret</td></tr>
<tr><td><strong>Qobuz</strong></td><td>Download source + enrichment</td><td>Username + Password (app ID auto-fetched)</td></tr>
<tr><td><strong>Qobuz</strong></td><td>Download source + enrichment</td><td>Username + Password, or Auth Token (from browser DevTools)</td></tr>
<tr><td><strong>HiFi</strong></td><td>Download source &mdash; free lossless via community API</td><td>None</td></tr>
<tr><td><strong>Deezer</strong></td><td>Download source + metadata fallback + user playlists</td><td>ARL cookie token</td></tr>
<tr><td><strong>Discogs</strong></td><td>Enrichment &mdash; genres, styles, labels, catalog numbers, community ratings</td><td>Personal Access Token (free)</td></tr>
@ -1395,7 +1395,7 @@ const DOCS_SECTIONS = [
<li><strong>Tidal</strong> &mdash; Client ID + Secret, then Authenticate via OAuth</li>
<li><strong>Last.fm</strong> &mdash; API key from last.fm/api</li>
<li><strong>Genius</strong> &mdash; Access token from genius.com/api-clients</li>
<li><strong>Qobuz</strong> &mdash; Username + Password (app ID is auto-fetched)</li>
<li><strong>Qobuz</strong> &mdash; Username + Password (app ID auto-fetched), or paste an Auth Token from browser DevTools if login fails due to CAPTCHA</li>
<li><strong>HiFi</strong> &mdash; No credentials needed, uses community-run API instances. Test Connection to verify.</li>
<li><strong>Deezer</strong> &mdash; ARL cookie token from your browser (log into deezer.com &rarr; DevTools &rarr; Cookies &rarr; copy <code>arl</code>). Used for downloads AND user playlist access.</li>
<li><strong>Discogs</strong> &mdash; Personal Access Token from discogs.com/settings/developers (free, no app registration needed). Provides genres, styles, labels, catalog numbers, and community ratings.</li>
@ -1460,6 +1460,9 @@ const DOCS_SECTIONS = [
<li><strong>Path Templates</strong> &mdash; Configure how files are organized in your library. The default template is <code>Artist/Album/TrackNum - Title.ext</code></li>
<li><strong>Log Level</strong> &mdash; Set the application log verbosity (DEBUG, INFO, WARNING, ERROR) from the Settings page. Changes take effect immediately without restart. Useful for troubleshooting issues.</li>
<li><strong>WebSocket</strong> &mdash; Real-time status updates are delivered via WebSocket. All downloads, enrichment progress, scan status, and system events push to the UI without polling.</li>
<li><strong>Music Library Paths</strong> &mdash; In Settings &gt; 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.</li>
<li><strong>Replace Lower Quality on Import</strong> &mdash; Opt-in toggle in Settings &gt; 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.</li>
<li><strong>HiFi Instance Health</strong> &mdash; In Settings &gt; Downloads &gt; HiFi, click "Check All Instances" to see which community API instances are online, searchable, or able to download.</li>
</ul>
</div>
<div class="docs-subsection" id="set-db-maintenance">