github V1ck3s/octo-fiesta v0.9

6 hours ago

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 SquidWTFCaptchaSolver service 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 OpenSubsonic releaseTypes field — letting clients group albums by release type.
  • Yandex Track/Album Versions: Yandex version field 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_PASSWORD settings 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 tracklist endpoint 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 getTranscodeDecision returning 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 typed SubsonicCredentials record

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

Don't miss a new octo-fiesta release

NewReleases is sending notifications on new releases.