Summary
Release v0.9 fixes the SquidWTF Qobuz 403 caused by the new ALTCHA proof-of-work captcha, adds release-type metadata across all providers (Deezer, SquidWTF, Yandex), introduces customizable SquidWTF Tidal instance/registry URLs, and ships an admin account for server-to-server actions.
What's New in v0.9
SquidWTF Qobuz: ALTCHA Captcha Solver
- Automatic Captcha Bypass: New
SquidWTFCaptchaSolverservice solves the ALTCHA v2 proof-of-work challenge that recently started gating/api/download-music. The captcha cookie is cached for 28 minutes and automatically refreshed on 403. - Transparent Retry: Download requests automatically retry once with a fresh captcha cookie when the server returns "Captcha required".
SquidWTF Tidal Improvements
- Custom Instance/Registry URL: New settings to point at a custom SquidWTF Tidal instance and registry instead of the bundled default.
- Default Registry Switch: Switched from removed Monochrome registry to
tidal-uptime; now also supports the object response format. - Song Version in Titles: Tidal song versions (e.g. remixes) are now appended to track titles instead of being lost.
- Deduplication: Filters out duplicate songs/albums and ensures consistent album artist IDs.
Release Type Metadata
- End-to-End Support: Album/single/EP/compilation type is now fetched from Deezer, SquidWTF (Qobuz & Tidal), and Yandex, then written to file tags (
MusicBrainzReleaseType) and exposed via the OpenSubsonicreleaseTypesfield — letting clients group albums by release type. - Yandex Track/Album Versions: Yandex
versionfield is appended to track and album titles (e.g.Track Name (Deluxe Edition)).
Admin Account
- Server-to-Server Actions: New
SUBSONIC_ADMIN_USERNAME/SUBSONIC_ADMIN_PASSWORDsettings let octo-fiesta perform admin-only actions against Navidrome (library scan, user lookup) without depending on the current user being an admin. - Password-Based Auth: Subsonic credential capture now supports password-based authentication in addition to token-based.
Deezer
- Paginated Tracklists: Albums with more than 25 tracks now load completely via the paginated
tracklistendpoint instead of being silently truncated. - Cover Art Propagation: Track cover URLs are now populated from album-level metadata when the paginated tracklist returns lightweight track objects.
Bug Fixes
- Fix
getTranscodeDecisionreturning errors for external songs - Fix scrobble requests for unresolved external songs (silent success instead of error)
- Fix playlists losing entries when cached songs are promoted to permanent storage
- Fix external songs added to a playlist not being permanently saved (#198)
Refactoring
- Replaced ad-hoc
Dictionary<string, string>credential passing with a typedSubsonicCredentialsrecord
Contributors
- @V1ck3s: ALTCHA captcha solver, Tidal custom instance/registry, transcode decision fix, password-based auth, playlist cache promotion fix, scrobble fix
- @m8tec: Release type metadata (Deezer/Tidal/Qobuz), Tidal song version in titles, SquidWTF duplicate filtering, album artist ID consistency
- @Flobenki: Admin account & server-to-server actions, playlist external song persistence, typed credentials refactor
- @Wolle-Lukas: Deezer paginated tracklist, album cover propagation
- @kamaeff: Yandex Music release type, Yandex track/album version metadata