chore: release 2026.06.29 — Jellyfin-compatible API server
Add an audio-only Jellyfin sidecar in `crates/jellyfin/src/server/` gated
behind the new `server` cargo feature, spawned alongside Navidrome from
`crates/server/src/lib.rs`. Activation is opt-in via `jellyfin_port` in
`~/.config/rockbox.org/settings.toml`; omit the key to disable. Reuses
`subsonic_username` / `subsonic_password` as the Jellyfin credentials.
Spoofs `ProductName: "Jellyfin Server"` + `Version: 10.11.11` so the
SDK-generated clients (Finamp, Findroid, Streamyfin, Amcfy Music,
Symfonium) treat it as a real Jellyfin server. Tokens are persisted in a
new `jellyfin_tokens` table and accepted via `X-Emby-Token`, the
`MediaBrowser Token="…"` Authorization header, or `?api_key=` on
streaming URLs. Item IDs are deterministic dashed UUIDs derived from the
native `Artist/Album/Track` ids, round-tripped via a `jf_guids` lookup
table so subsequent requests resolve back to the right row.
Discovery runs in two tokio tasks: `_jellyfin._tcp.local.` mDNS plus a
UDP listener on port 7359 answering the `"Who is JellyfinServer?"`
probe.
Album art handler mirrors Navidrome's resolver: HTTP(S) URLs proxied via
reqwest, absolute paths read as-is, bare filenames resolved under
`~/.config/rockbox.org/covers/`, with the same "fall back to any track
in the album" fallback Navidrome already uses.
Also bumps deb/rpm packaging to 2026.06.29, documents the new server in
CHANGELOG/README, adds it to the mintlify reference (ports table,
settings-toml, API intro, index card, nav entry) and a new
`api-reference/jellyfin/overview.mdx` covering enabling, discovery,
tested clients, endpoint surface, and what's not supported.
chore: release 2026.06.29 — Jellyfin-compatible API server
Add an audio-only Jellyfin sidecar in `crates/jellyfin/src/server/` gated
behind the new `server` cargo feature, spawned alongside Navidrome from
`crates/server/src/lib.rs`. Activation is opt-in via `jellyfin_port` in
`~/.config/rockbox.org/settings.toml`; omit the key to disable. Reuses
`subsonic_username` / `subsonic_password` as the Jellyfin credentials.
Spoofs `ProductName: "Jellyfin Server"` + `Version: 10.11.11` so the
SDK-generated clients (Finamp, Findroid, Streamyfin, Amcfy Music,
Symfonium) treat it as a real Jellyfin server. Tokens are persisted in a
new `jellyfin_tokens` table and accepted via `X-Emby-Token`, the
`MediaBrowser Token="…"` Authorization header, or `?api_key=` on
streaming URLs. Item IDs are deterministic dashed UUIDs derived from the
native `Artist/Album/Track` ids, round-tripped via a `jf_guids` lookup
table so subsequent requests resolve back to the right row.
Discovery runs in two tokio tasks: `_jellyfin._tcp.local.` mDNS plus a
UDP listener on port 7359 answering the `"Who is JellyfinServer?"`
probe.
Album art handler mirrors Navidrome's resolver: HTTP(S) URLs proxied via
reqwest, absolute paths read as-is, bare filenames resolved under
`~/.config/rockbox.org/covers/`, with the same "fall back to any track
in the album" fallback Navidrome already uses.
Also bumps deb/rpm packaging to 2026.06.29, documents the new server in
CHANGELOG/README, adds it to the mintlify reference (ports table,
settings-toml, API intro, index card, nav entry) and a new
`api-reference/jellyfin/overview.mdx` covering enabling, discovery,
tested clients, endpoint surface, and what's not supported.
chore: release 2026.06.29 — Jellyfin-compatible API server
Add an audio-only Jellyfin sidecar in `crates/jellyfin/src/server/` gated
behind the new `server` cargo feature, spawned alongside Navidrome from
`crates/server/src/lib.rs`. Activation is opt-in via `jellyfin_port` in
`~/.config/rockbox.org/settings.toml`; omit the key to disable. Reuses
`subsonic_username` / `subsonic_password` as the Jellyfin credentials.
Spoofs `ProductName: "Jellyfin Server"` + `Version: 10.11.11` so the
SDK-generated clients (Finamp, Findroid, Streamyfin, Amcfy Music,
Symfonium) treat it as a real Jellyfin server. Tokens are persisted in a
new `jellyfin_tokens` table and accepted via `X-Emby-Token`, the
`MediaBrowser Token="…"` Authorization header, or `?api_key=` on
streaming URLs. Item IDs are deterministic dashed UUIDs derived from the
native `Artist/Album/Track` ids, round-tripped via a `jf_guids` lookup
table so subsequent requests resolve back to the right row.
Discovery runs in two tokio tasks: `_jellyfin._tcp.local.` mDNS plus a
UDP listener on port 7359 answering the `"Who is JellyfinServer?"`
probe.
Album art handler mirrors Navidrome's resolver: HTTP(S) URLs proxied via
reqwest, absolute paths read as-is, bare filenames resolved under
`~/.config/rockbox.org/covers/`, with the same "fall back to any track
in the album" fallback Navidrome already uses.
Also bumps deb/rpm packaging to 2026.06.29, documents the new server in
CHANGELOG/README, adds it to the mintlify reference (ports table,
settings-toml, API intro, index card, nav entry) and a new
`api-reference/jellyfin/overview.mdx` covering enabling, discovery,
tested clients, endpoint surface, and what's not supported.