Releases: dhonus/jellyfin-tui
v1.3.0 - Custom Themes
This update got a little out of hand 😁. A full theme engine, improved performance and database migrations and many UX upgrades everywhere :) Enjoy the new features!
I'm open to hearing your feedback on some of these UI decisions and the default theme colors. Do open a discussion/issue if you have an opinion to share.
! Back up your local DB before upgrading if you rely on offline mode.
This release also adds Jellyfin 10.11+ support including working around currently broken API fields, although I still would not recommend upgrading yet.
If you get a 500 server error when logging in on Jellyfin 10.11+, try restarting it. Jellyfin's password login is currently not working well.
What's Changed
Theme engine
- massive visual overhaul with fully customizable themes
- 16 bundled presets (Nord, Kanagawa, Gruvbox, Tokyo Night, etc.)
- the transitions between album cover colors are now smoothly interpolated. Set the duration of the animation with
auto_color_fade_ms: 400 - customizable UI palette (borders, selections, text roles, progress bars)
- borders are now rounded by default. Change this by setting
rounded_corners: false
You can write your own themes by overriding one of the default options in the configuration file. For example:
themes:
- name: "Monochrome Dark (Tweaked)"
base: "Monochrome Dark"
# remove background and album header backgrounds
background: "none"
album_header_background: "none"
# make progress bar follow album accent
progress_fill: "auto"
# high contrast row selection
selected_active_background: "#eeeeee"
selected_active_foreground: "black"Full theming docs included in the README.
UX improvements
- reduced CPU usage during idle playback
- you will now see a spinner next to the name of an open discography to tell whether you're seeing locally cached or fresh tracks
- lists now update in-place, you won't have to press
yto refresh them anymore h / lnavigation for pane switching- better queue display: pinned previous track + smoother scrolling
- the global search bar now auto-clears
- show hearts in
Add to playlistpopups - cover art is now downloaded in the background thread to reduce lag
- the config file is now hot reloaded. This will make it easier to make your own themes and adjust settings
- visually separated the player section and now show all artists of a track instead of only the main album artist like before
Database updates
- introduced a migration system that will make extending the app easier in the future
- added support for library switching - you can limit which libraries are visible
- improved automatic deletion logic using counters which should prevent accidental wipes when jellyfin responds incorrectly
Track Disliking
- you can now dislike tracks using the track popup
- disliked tracks are dimmed across the UI and are excluded from playback unless you specifically play them
Network modes
- jellyfin-tui now adapts to slow or unreliable connections and adjusts in real time to speed changes
- detects very slow networks (like trains in the czech republic) and reduces or pauses heavy background work automatically
Lyrics Improvements
- lyrics lines before the current line are dimmed for better legibility
- slightly adjusted timing of lyrics for hopefully higher time accuracy
always_show_lyricshas been changed tolyricsand lets you hide the lyrics pane entirely if you don't personally use it
lyrics: 'never' # options: 'always', 'never', 'auto'Fixed bugs
- panicking due to negative float for 'Duration' #102
- fixed freeze when seeking while discord thread was active
- fixed database commiting logic to avoid some light corruption on app quit
Full Changelog: v1.2.6...v1.3.0
v1.2.6
Hey everyone, this is mostly a bug-fix release to clear the backlog. I've been working on theme support but haven't had much time recently. Hopefully I can finish it soon 😊 In the meantime these are some changes by me any a few new contributors.
What's Changed
Features
- you can now customize the window title when running jellyfin-tui. A new default has been added to show the current track and artist.
# Customize the title of the terminal window
window_title: true # default -> {title} – {artist} ({year})
# window_title: false # disable
# Custom title: choose from current track's {title} {artist} {album} {year}
# window_title: "\"{title}\" by {artist} ({year}) – jellyfin-tui"- Added a config option to server read password from password file by @mcpar-land in #90
servers:
- name: Password File
url: 'http:/jellyfin.example2.com'
username: 'username'
password_file: /home/myusername/.jellyfin-tui-password # use a file containing the password-
your state is now saved every 10 seconds. This mean you can close the app by force and your last played track and position will be more recent, not just at the last manual exit.
-
discord status now says
Listening to {track}instead ofListening to jellyfin-tui
Fixed bugs
- playing a playlist while shuffle is on didn't work correctly
- playlist rename didn't work
- I now use album_id instead of parent_id for album art. Some albums didn't load artwork beacause of this.
- re-fetch cover art now updates the file in-place so you can see the new artwork immeditely
- MPRIS position wasn't being emitted while playing
- wavpack playback support by @AyaseFile in #88
- use rustls rather than openssl by @tehmatt in #87
- Handle non-existent cache folder in the CrossesDevices case by @DerVerruckteFuchs in #93
New Contributors
- @tehmatt made their first contribution in #87
- @AyaseFile made their first contribution in #88
- @mcpar-land made their first contribution in #90
- @DerVerruckteFuchs made their first contribution in #93
Full Changelog: v1.2.5...v1.2.6
v1.2.5
You can find 3 weeks of general changes in this update. Some QoL features and visual tweaks. Enjoy the update! 🪼
What's Changed
Features
- added PageUp | PageDown keybindings
- you can now customize Artist discography album order to any of the following options
- added discord integration - by @RubberDuckShobe in #78 Use it by specifying
discord: TOKENin the configuration file. Read the README for more details.
- added a
Re-fetch cover artoption to the discography track popup
Visual changes
-
penalized orange and brown in the
auto_colorranking algorithm (brown is kind not a pleasing color). Purely brown and orange albums still pick those colors, but better colors are preferred. Boosted the final saturation of the colors as well. -
the
>>album offset was changed to the release year of the album instead for a cleaner look
-
moved the ♥ icons in front of list items for consistency and use ♪ to mark lyrics in the track table
-
merged
lyrics,favorite,downloadedandCD sideinto one thin column to help with smaller window sizes. Also made theCD sizecolumn not appear unless necessary
- added a
always_show_lyrics: falseconfiguration option to hide the "No lyrics available" section if lyrics is missing
Fixed bugs
- Couple quick fixes to the .desktop file by @matthewarmand in #69
- the
a/Alist navigation keys now also ignore articles likeaandthe - the scrollbar didn't work on the Albums tab
- corrupted cover art automatically re-downloads again
- fixed a panic on an unknown image type
New Contributors
- @matthewarmand made their first contribution in #69
- @RubberDuckShobe made their first contribution in #78
Full Changelog: v1.2.4...v1.2.5
v1.2.4
Small update for all the window manager users with a few extra bug fixes :)
What's Changed
- You can now resize the in-app sections to your desired width with
Ctrl+Left / Ctrl + Right, orCtrl+h / Ctrl+l
- Added a .desktop file
- Added the option to globally shuffle only favorite tracks
Fixed bugs
- fix: crash when hitting enter on empty queue by @GKHWB in #62
- Cache and reuse tokens on login to avoid duplicating entries in the jellyfin device list #67
- Fixed delay while opening the help page
- Stopped scrobbling on quit (caused duplicates)
- Updated all dependencies
Full Changelog: v1.2.3...v1.2.4
v1.2.3
Small update with a few bug fixes 🪲
What's Changed
- Artists and albums are now sorted ignoring articles, The Beatles under "B" by @joeedev in #59
- Does not ask for your password twice during initial setup anymore
Fixed bugs
- When you opened a playlist, it disappeared from the list on next startup.
- Authorization header format arguments were in the wrong order, which caused various issues with multiple users, fixed by @joeedev in #60
New Contributors
Full Changelog: v1.2.2...v1.2.3
v1.2.2
A new jellyfin-tui version with some Bug fixes & improvements 🧐
What's Changed
-
Added a
Randomsort order to artists, albums and playlists. And aDate Createdoption to playlists.
-
Added an "Append to queue" to the Album list popup for both queue types
Fixed bugs
- The progress bar showed wrong percentages.
- The
mpvoption in the configuration file didn't work. - Jellyfin playback reports are now sent from the background thread to limit main thread http freezes
- Migration panic on some exotic systems #55
- The colored highlight now matches over the artist name in case it fails to match over ID (this is a jellyfin limitation)
Full Changelog: v1.2.1...v1.2.2
v1.2.1
A minor bugfix release for jellyfin-tui.
What's Changed
- now uses album artists instead of regular artists in the main library list. This makes more sense in a discography view like this music player. If you disagree do open an issue.
- moved all persistent data to $XDG_DATA_HOME (or equivalent), avoiding cache clearing issues
- added a command to repair offline downloads you can use if something is off (it also runs automatically if it detects something wrong)
- the database self-corrects when it sees a file it didn't think was downloaded
- improved seeking to last known position in a song when you reopen
- fixed a bug that caused 100% CPU usage (oops)
- when playing transcoded songs, the "NN:NN / MM:MM" duration meter now doesn't change around while the file loads up
- scrobble on quit
- and a load of other small bugs with playback, background playlist updates and all sorts of other jazz
New Contributors
- @throwaway-lmao made their first contribution in #47
Full Changelog: v1.2.0...v1.2.1
1.2.0 - Offline Mode
Enjoy this new jellyfin-tui version! A lot of stuff has been added. I have decided to deal with the potential influx of bug reports instead of hoping that 2 people try a pre-release version :). Fingers crossed.
What's Changed
-
Switched to an offline-first architecture. This means massively faster (<1s) load times (everything is saved locally automatically), faster in-app navigation and the option to use the app offline
-
You can now download a song, album or playlist simply by pressing the
dkey on the item you want to download. You will see the progress of the download in the ⇊ column. ◴ means queued, ◰ means downloading and ⇊ means downloaded. You can also quit and come back and you won't lose any queued downloads.
-
You will also see the progress of downloads in the bottom corner.
-
You can delete or cancel downloads while they're ongoing (of course) with
dagain and there is a global command to stop everything too
-
Every 10 minutes, an update runs in the background and refreshes your library. It will show if any new music has been added
-
If you are offline, or by passing the
--offlineflag, you can use the fully offline mode. It will not connect to the internet and you can play any music you downloaded, lyrics and cover art included of course! :) -
Multi-server support, you can now define more than 1 server in the configuration file. You will be asked to pick one at startup! You can mark a server as default = true to avoid this and use
--select-serverinstead. -
New initial setup questionaire. Much prettier and actually connects to the server before letting you save it.
-
All operations are offloaded to a background task now to make the UI more responsive and faster.
-
The bitrate of a song now updates dynamically while playing and the a more readable channel format is shown (2 channels -> stereo)
-
Added a key binding to seek +-1 minute with
,and.like in CMUS.
Fixed bugs
- Preferences are now saved separately from server state. This means you won't keep losing your preferred List filters / order and similar in-app options like Large cover art.
- Repeat mode didn't work after a restart.
- Transcoding is now saved in-app and is remembered, instead of being defined in the config. #41
eto add to queue didn't work on the Album tab #40- Crashes on login #38
- MPRIS metadata not updating on the playlist view #39
- Playlists over 300 items were being truncated. Now they are fetched in the background #44
Full Changelog: v1.1.3...v1.2.0
v1.1.3
Hi all, this is just a small, mostly bug-fix release. Feature updates are in the works. Enjoy :)
What's Changed
- added artist names to the Album list
- fixed the Reload library action (didn't work in 1.1.2)
- fixed broken album search in the Search tab
- lowered CPU usage (rendering only visible items in lists)
Full Changelog: v1.1.2...v1.1.3
v1.1.2
An update that should have been very simple, but turned out taking a bit more time than I'd like 😥. Either way, enjoy this new version of jellyfin-tui :)
What's Changed
- Added an Album tab. You can look through your albums and search through them a bit faster than before!
- You can sort your albums by name, or by date added. This means you can now listen to all the new music you have :)
- Albums and Artists now have their respective total duration shown just like Playlists do.
- Fixed
a/Alist movement. Used to panic on japanese or similar unicode characters. Now it should work as expected. - Updating the program now won't delete your state. Hopefully.
- Fixed a few inconsistent keybinds.
- And some visual changes, for example list items now have a darker background.
Have fun and report any bugs you find :)
Full Changelog: v1.1.1...v1.1.2