Skip to content

fix(syndesmos): correct Last.fm and Tidal integrations - #481

Merged
forkwright merged 1 commit into
mainfrom
fix/syndesmos-scrobble-sync
Jul 1, 2026
Merged

fix(syndesmos): correct Last.fm and Tidal integrations#481
forkwright merged 1 commit into
mainfrom
fix/syndesmos-scrobble-sync

Conversation

@forkwright

Copy link
Copy Markdown
Owner

Closes #390, #391, #392, #421, #422, #423.

Changes

Verification

kanon gate --full green (fmt, check, advisory-parity, cargo-deny, clippy workspace, nextest 1192 tests, kanon lint). Test HTTP interactions use an in-crate one-shot TCP server (no new workspace deps beyond md5).

Note

The Tidal-favorite→want persistence uses status='searching'; no acquisition poller consumes searching-wants yet, so this populates the want baseline without triggering downloads (the intended semantics until a search loop lands).

- #390: md5_hex computes a real MD5 digest; it was hex-encoding the raw
  input bytes, so api_sig reversibly leaked the shared_secret.
- #391: submit_scrobble includes the api_sig form parameter; Last.fm
  rejected every scrobble (error 13) without it.
- #392: sync_tidal_want_list diffs favorites against persisted wants and
  now persists fresh favorites as wants (source='tidal_sync', source_ref
  = tidal_id), closing the re-add-on-every-sync loop. Adds apotheke
  list_want_source_refs + a wants(source, source_ref) index migration.
- #421: error_for_status at the four external HTTP call sites; 4xx/5xx
  bodies were treated as success.
- #422: scrobble() resolves and submits the track's real artist/title/
  album; it hardcoded an empty artist on every scrobble.
- #423: the scrobble test asserts the submitted artist.

Closes #390
Closes #391
Closes #392
Closes #421
Closes #422
Closes #423

Gate-Passed: kanon 0.1.5 +stages:fmt,check,clippy,nextest,lint sha:33c8623da9f866574be81200ba191ca83c0fb438
@forkwright
forkwright merged commit da2afc3 into main Jul 1, 2026
11 checks passed
@forkwright
forkwright deleted the fix/syndesmos-scrobble-sync branch July 1, 2026 22:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

md5_hex hex-encodes raw bytes instead of computing MD5 — breaks Last.fm auth and exposes shared_secret reversibly

1 participant