This is a mid-sized release that focuses mostly on fixes and refining existing features, but we also have several new features. I also have a buymeacoffee page now!
-
Accessibility improvements: A new reduce-animation toggle has been added. You can also select various new display options, such as alternate color rows, larger/smaller columns from Customize menu. The typography setting for lyrics now applies separately to the sidebar and fullscreen mode.
-
In-app artwork editing: The Edit Metadata popup now has a tab for replacing artwork. You can also save artwork that Rufin automatically fetched or search for alternatives from within this tab. This also applies to playlists and smart playlists. Additionally, you can regenerate mosaics used in these collections.
-
JXL images and animated GIFs are now supported as covers. Covers are also stored in their original format, except for thumbnails when required.
-
You can now drag and drop folders and files into Rufin. You can choose to import them as a playlist or as regular folders that can be watched for changes.
-
Better integration with the system: Rufin can now be used to open audio files or playlists directly. This also works from the CLI with
rufin track.mp4orflatpak run io.github.screwys.Rufin playlist.m3u8. -
New columns, such as codec, folder path, bitrate, and more, can be enabled from the Customize menu.
-
Long texts in the bottom bar and showcase entries now slide instead of wrapping.
-
The search dropdown now dismisses when necessary (e.g., for context menu actions like editing metadata).
-
For local, WebDAV, and Samba sources, subfolders are browsable in the Folders route. You can now exclude subfolders from the library.
-
Metadata editing has more fields available for both server and file sources.
-
Artist images are now fetched online instead of using album fallbacks when they are missing.
-
Listening overview PNG exports are now independent of the current window size.
-
Streaming manifests, such as HLS, are recognized separately from ordinary local .m3u/.m3u8 playlists.
-
Several fixes for Rufin Connect, mostly related to reducing the amount of resources the feature uses.
-
Fixed an issue with the Customize button not applying new column settings to routes.
-
Fixed an issue with track info getting clipped based on the fallback font used for CJK text.
-
Fixed several issues with WebDAV and Samba sources regarding refresh and separated .cue tracks.
-
And several other smaller fixes and improvements.
Changelog
- fix(icons): use PNGs for Plex and Emby source icons by @screwys in #1179
- chore(i18n): update translations by @weblate, @aguhadug in #1177
- fix(lyrics): stop instrumental label taking over real lyrics by @screwys in #1180
- chore(rpm): remove debuginfo from rpm spec by @screwys in #1181
- fix(library): more sqlx fixes by @screwys in #1182
- chore(android): crate organization & catalog extraction prep by @screwys in #1183
- fix(ui): make play icon dismiss after hover by @screwys in #1189
- fix(ui): make customize settings apply to album detail layout by @screwys in #1190
- chore: simplify CI and make it faster by @screwys in #1191
- chore(deps): update rust crate tray-icon to 0.25.0 by @rufin-renovate, @screwys in #1119
- fix(bottom-bar): center text directly by @screwys in #1193
- fix(i18n): extract month/year to .po by @screwys in #1194
- chore(i18n): update translations by @weblate in #1195
- fix(ui): use an icon instead of text button for connect by @screwys in #1196
- fix(files): remote folder scanning, cue handling and folders route fixes by @screwys in #1197
- chore(i18n): update translations by @weblate, @aguhadug in #1199
- chore(deps): update rust crate rustix to v1.1.5 by @rufin-renovate in #1200
- chore(i18n): update translations by @weblate in #1203
- chore(deps): update rust crate lofty to v0.25.3 by @rufin-renovate in #1207
- chore(ui): use built-in windows controls for dialogs by @screwys in #1208
- feat(artwork): simplify selection, store images in original format and support animated covers & jxl by @screwys in #1209
- chore(i18n): update translations by @weblate in #1210
- feat(folders): support subfolder exclusion and browsing for file sources by @screwys in #1211
- feat: add artwork editing and improve metadata and playlist editors by @screwys in #1214
- chore(i18n): update translations by @weblate in #1212
- fix(ui): dismiss search dropdown properly by @screwys in #1215
- feat: support dragging to import tracks and cleanup unavailable tracks by @screwys in #1220
- chore(i18n): update translations by @weblate, @aguhadug in #1221
- fix(playback): harden live transport and audio updates by @screwys in #1222
- fix(ui): prevent radio submenu stealing click by @screwys in #1225
- chore(deps): clear redundant packages by @screwys in #1226
- feat(connect): serve media files with verified range transfers by @screwys in #1227
- chore(deps): update rust crate gtk to v0.11.5 by @rufin-renovate, @screwys in #1224
- chore(deps): update rust crate glib to v0.22.10 by @rufin-renovate, @screwys in #1223
- chore: add buy me a coffe link by @screwys in #1228
- chore(deps): update rust crate syn to v3.0.6 by @rufin-renovate, @screwys in #1117
- chore(deps): update rust crate lofty to v0.25.4 by @rufin-renovate in #1231
- chore(deps): update renovatebot/github-action action to v46.3.2 by @rufin-renovate, @screwys in #1230
- fix(performance): attempt on reducing queries, mainly connect by @screwys in #1229
- chore(i18n): update translations by @weblate in #1233
- feat(accessibility): improve app accessibility and refine ui by @screwys in #1234
- feat(listening-overview): make exports independent of the app window by @screwys in #1236
- chore: update bug report by @screwys in #1237
- chore(i18n): update translations by @weblate in #1235
- chore(deps): update rust crate mdns-sd to v0.21.4 by @rufin-renovate, @screwys in #1232
- feat(playback): register rufin as a system level music player by @screwys in #1238
- chore: change flathub donation link by @screwys in #1239
- fix: no way by @screwys in #1241
- chore(i18n): update translations by @weblate in #1240
Full Changelog: v0.16.0...v0.16.5