a Jellyfin & Subsonic client for the terminal — powered by mpv, Chromecast and UPnP MediaRenderer
mpv
chromecast
mpris
navidrome
jellyfin
upnp
tui
5.5 kB
Changelog#
All notable changes to fin are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]#
Added#
- Built-in UPnP MediaRenderer (
fin-mediarenderer) — fin now advertises itself as a cast target on the LAN while the TUI runs. Any UPnP control point (BubbleUPnP, Kodi, Jellyfin's "Play On", …) can push streams at this machine: audio decodes in-process via symphonia, video is handed to mpv, and the pushed track shows up in the Now Playing bar with a⇊ UPnPbadge plus a status-line notice naming what arrived. Includes SSDP presence (alive/byebye + M-SEARCH answers), AVTransport / RenderingControl / ConnectionManager SOAP control, and GENALastChangeeventing. On by default; disable with--no-media-renderer,FIN_NO_MEDIA_RENDERER=1, ormedia_renderer.enabled = false.media_renderer.friendly_name/.portare also configurable, and the device UDN is generated once and persisted so control points recognize the machine across restarts.
Fixed#
- Idle volume readback —
LocalRendererreported 100% volume while idle even after a volume change; it now mirrors the audio player's actual volume, so the TUI slider and UPnPGetVolumestay truthful between tracks.
0.3.1 - 2026-07-05#
Added#
- Shuffle-play shortcut —
Shift+Xplays the highlighted container (album, artist, playlist, series) or, on flat views, everything in the current list (all favorite tracks, all videos, an open album/playlist's tracks) in random order. The pool is shuffled up front so the first track is random too, and shuffle mode is switched on for whatever joins the queue later.
Changed#
- Videos tab is now Jellyfin-only — Subsonic has no video API, so on a
Subsonic server the tab is hidden from the bar,
Tab/Shift+Tabskip it, and2shows a hint. Switching servers while on Videos bounces to Music. - ReplayGain now runs in the Rockbox DSP — upgraded
rockbox-dspto 0.2.0 and moved gain application into its pre-gain (PGA) stage, the same fixed-point pipeline as the EQ and tone controls. Tag extraction stays in fin; the old f32 multiplier survives only as a fallback for paths the PGA can't reach (crossfade-incoming track, non-stereo output, first primed packet).
0.3.0 - 2026-07-05#
Added#
- Subsonic backend with auto-detection at login — point
fin loginat a Jellyfin or Subsonic server (Navidrome, Airsonic, Gonic, Astiga, …) and the flavour is probed automatically. Multiple servers of either kind can be saved side by side. - Favorites tab (
♥, key4) listing everything you've liked — Jellyfin favorites and Subsonic stars alike. Supports the usual actions (Enter to play/drill,aenqueue,nplay next,xplay container,rrefresh). - Like / dislike shortcuts —
Shift+Lfavorites (stars) the highlighted item,Shift+Dremoves it. Both fall back to the now-playing track on screens without a library selection, so you can like a song from anywhere while it plays. Disliking from the Favorites tab drops the row immediately. - Server-backend badge — the header shows
◈ Jellyfin/≋ Subsonicfor the active server, and each row in the Settings server list shows its backend between the name and URL. - In-process audio path — HTTP streaming,
symphoniadecode, resampling, andcpaloutput all run in-process; mpv is now used only for video. - 10-band Rockbox equalizer with interactive band selection and per-band gain nudging on the Settings screen.
- Bass & treble shelves (Rockbox tone controls),
b/Shift+Bandy/Shift+Y. - ReplayGain (off / track / album) and crossfade (crossfade / mixed modes, cyclable duration).
- Queue persistence, shuffle, repeat, and queue-management keys; Enter on the Queue screen jumps the playhead instead of collapsing the queue.
- Album detail view with disc grouping, track numbers, year, and a client-side sort safety net.
?keyboard-shortcuts help modal.
Changed#
- Screen tab shortcuts: Music
1, Videos2, Playlists3, Favorites4, Queue5, Search6, Devices7, Settings8. - README, in-app header, and help modal describe fin as a Jellyfin and Subsonic client rather than Jellyfin-only.
Fixed#
- "Recent listens not updated" on the Jellyfin/Subsonic scrobble path.
- Scrobble/session errors now stay warn-only instead of interrupting playback.
- Now-playing marker no longer shifts by one after a play-triggered crossfade.
0.2.0 - 2026-07-03#
Added#
- UPnP MediaRenderer discovery and streaming (Sonos, Kodi, Roon endpoints, Samsung/LG TVs, gmediarender, …) alongside the existing local and Chromecast renderers.
0.1.0 - 2026-07-03#
Added#
- Initial release — a Ratatui TUI plus one-shot CLI for Jellyfin.
- Local mpv playback and Chromecast streaming.
- fzf-style instant search, playlist browsing, and drill-in navigation.
- Full pagination of the Items endpoint so large libraries load completely.