Skip to content

Navidrome v0.64 compatibility - #284

Merged
benders merged 2 commits into
mainfrom
feature/283-navidrome-064-compat
Sep 14, 2026
Merged

benders merged 2 commits into
mainfrom
feature/283-navidrome-064-compat

Conversation

@benders

@benders benders commented Sep 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

Fixes the federation CI job, which fails on every PR since Navidrome v0.64.0 (2026-09-12) was published as deluan/navidrome:latest, and documents what 0.64 means for hubs.

  • Cause: 0.64 omits coverArt for items its artwork pipeline marks ImageAbsent. The fixture albums have no art, so test_get_cover_art fell back to a bare album id and got a 400. The hub's behavior (no art → no coverArt) is correct.
  • Fixtures: one cover.jpg per hub library.
  • Test: picks an album that reports coverArt.
  • NAVIDROME_IMAGE: new override in docker-compose.yml for testing or pinning a release. The default stays latest; whether to pin is an open question on Navidrome v0.64 compatibility #283.
  • Docs: docs/pitfalls.md (Navidrome ops) and docs/hub-internals.md, covering the 0.64 upgrade window, Share ID format, and backing up navidrome-data first.

The ID migration was checked end to end on an isolated stack: unified ids, stars, play counts and Share IDs survive. Streams fail until the hub re-syncs. Full notes are on #283. Follow-up: #285 (a stream error envelope is relayed as a 200).

Testing

  • pnpm verify: green
  • NAVIDROME_IMAGE=deluan/navidrome:0.64.0 pnpm test:federation: 84 passed, all assertions pass
  • pnpm test:federation (local latest = 0.63.2): 84 passed, all assertions pass
  • CI unit + federation (0.64.0): green

closes #283

🤖 Generated with Claude Code

https://claude.ai/code/session_01CNTqdCoTsmaZ6cqH1x5VRn

Navidrome 0.64.0 (released 2026-09-12) builds `coverArt` through
`coverArtOrEmpty`: once its background artwork pipeline marks an item
ImageAbsent, getAlbum, getArtist, songs and getAlbumList2 all leave the
field out. 0.63 always returned `al-<id>`, backed by a placeholder image.

None of the federation fixtures has art, so the hub (correctly) stores
no cover_art_id. test_get_cover_art then fell back to the bare album id,
which the hub rejects with 400. Every PR's federation job failed because
compose pulls the unpinned `latest` tag.

- Add a 64x64 cover.jpg to one fixture album per hub.
- The test now fetches art for an album that reports coverArt, instead
  of guessing an id.
- `NAVIDROME_IMAGE` overrides the Navidrome image, so a specific release
  can be tested or pinned without retagging `latest`.

The federation suite passes locally against both 0.63.2 and 0.64.0.

refs #283

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNTqdCoTsmaZ6cqH1x5VRn
Checked end to end on an isolated stack (0.63.2 -> 0.64.0 on the same
navidrome-data volume). All track ids were re-encoded; album ids stayed
the same. Unified ids, stars, play counts and album Share IDs survived.
Streams failed until auto-sync re-synced the local library, about 30s on
the fixture library.

refs #283

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNTqdCoTsmaZ6cqH1x5VRn
@benders
benders marked this pull request as ready for review September 14, 2026 17:09
@benders
benders merged commit 80d1f76 into main Sep 14, 2026
2 checks passed
@benders
benders deleted the feature/283-navidrome-064-compat branch September 14, 2026 17:09
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.

Navidrome v0.64 compatibility

1 participant