A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic

chore: release 2026.06.29 — Jellyfin-compatible API server master

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.