New features
Image cache
- New controls for maximum downloaded image size and format. Image format only affects size on disk, but image size affects both disk and RAM/VRAM usage.
- Newly-downloaded images are now saved as lossy WebP instead of PNG. Lossless WebP is also offered for pixel peepers. In both cases we should see a reduction in the cache folder's size on disk as well as load/decode times.
- Euphonica now downloads album arts only once per folder. If a folder has no
cover.png/jpg/...file but the tracks therein have embedded art, the embedded art from the (usually) first track will be used for that whole folder. - New button in
Preferences->Libraryto empty the cached images folder. Useful for redownloading images after changing config, or to clean up the messy folder left by older Euphonica versions.
Keyboard shortcuts
This update brings many more keyboard shortcuts. Euphonica should now be somewhat usable with just the keyboard, but scrolling views is still scrollwheel-based for now.
The new shortcuts mostly mirror that of ncmpcpp (the one client that kickstarted my MPD journey), just with added modifier keys like Ctrl and Shift to work around the existing "type-to-search" feature, in which simply typing a letter would enter search mode, in line with other apps in the GNOME ecosystem.
Modifier keys were picked based on their English semantics. For example, actions involving moving things temporally or spatially, such as seeking, switching tracks or adjusting volume, will commonly have Shift as modifier (or one of the modifiers). Actions involving playback control will usually use Ctrl. Destructive actions, such as clearing the queue, will have more than one modifier.
For the full list of available keyboard shortcuts, please open the Keyboard Shortcuts dialog in the hamburger menu or hit Ctrl+? as usual. This dialog has also been updated to use the new libadwaita 1.8's shortcuts dialog. It's now searchable, and the shortcuts therein are grouped with quick filter-to-group toggle buttons.
RAM usage improvements
AlbumCells now actively track whether they are on-screen, lazily loads textures only when they're about to be shown on the screen, and eagerly unloads textures once off-screen. This sidesteps a longstanding issue with GTK GridViews keeping way more cells in memory than is necessary (once discussed in #99).
Will Euphonica's RAM usage drop? Most of the time, if you aren't scrolling from one end of the album grid to another repeatedly, the RAM usage should be halved. However, with enough scrolling, RAM usage will look inflated due to the textures being cached by both our LRU mechanism and GTK's inner workings. This is perfectly fine, and doesn't mean Euphonica needs that much RAM to function correctly.
As a nice little experiment, once can use cgroups to artificially limit the amount of memory Euphonica has access to:
# Soft-limits to 256MB and forces a crash at 512MB
systemd-run --user --scope \
-p MemoryHigh=268435456 \
-p MemoryMax=536870912 \
euphonicaEuphonica would then try to only use that much memory. So far it hasn't crashed on my side.
Fixes
- Fixed #285: broken image streams are now skipped.
- Type-to-search now works correctly everywhere, as long as the current view has search functionality. Just start typing to search for an album while in Album View, for example. Previously these sometimes didn't work if their view widgets weren't in focus.
- Volume knobs (in the bar and the pane) aren't synced together (#288)
Pull Requests
- v0.99.4: the RAM crisis update (+ keyboard shortcuts) by @htkhiem in #286
- Bump openssl from 0.10.78 to 0.10.80 by @dependabot[bot] in #292
Full Changelog: v0.99.3-beta...v0.99.4-beta