Release v2026.05.16.0 — recommendations working end-to-end + cover-art uncap #50
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Accumulated batch since v2026.05.15.1 (8 commits). Device-verified on the dev stack; CI green.
Recommendations now actually work
e2432ca): scanner extracts the MusicBrainz recording MBID intotracks.mbid(was always NULL) + a one-shot backfill — unblocks the entire ListenBrainz similarity pipeline.4fca0e6): similarity client was callingapi.listenbrainz.org/1/explore/...(a website route → 404 for every request) with an invalid algorithm. Now hitslabs.api.listenbrainz.org/similar-{recordings,artists}/jsonwith a verified-valid algorithm. Confirmed live:track_similarity/artist_similarity/artist_similarity_unmatchedpopulate (Discover/suggestions view included).ca1bc5a): similarity batch 5→25/tick; track-MBID backfill uncapped (converges in one scan).2e7b81f): tiered seed (30d → all-time → liked) so For-You never silently vanishes; deeper candidate fill to reach ~100 without LB data; Rediscover & On-this-day young-library fallbacks.Cover art (#388)
005965d: removed the global 500-album cover-art backfill cap. Local sources (sidecar/embedded) run at disk speed; remote providers self-throttle per provider. Dropped the config knob, env var, and the deadcoverBackfillCapparam threaded throughserver.New/api.Mount. Admin bulk-refetch now unbounded.Also in this batch (already merged to dev earlier, first release since)
System playlists v2 (#411: registry refactor, generic endpoints, 5 discovery mixes, stop-force-refresh / shuffle-on-play / per-tile refresh, "Refreshed…" subtitle) and the offline cache rework (#427: reachability marker, two-bucket cache, settings UI, offline gating + Shuffle-all).
Migrations
0028(discovery-mix CHECK constraints — shipped in v2026.05.15.1) and0029(tracks.mbid unique→non-unique partial index, zero-risk: column was 100% NULL). Both apply on startup.Test plan
🤖 Generated with Claude Code