Releases: htkhiem/euphonica
v0.99.2-beta
- Fix: Queue View sometimes not refreshing.
- Fix: Album ratings not being retrieved.
- Fix: DP album rating filter rule not working correctly.
- Fix: Force-light UI mode not remembered between starts.
v0.99.1-beta
Bugfixes
- Fix: Refresh (F5) not working.
- Fix: Reconnecting to a different server while already connected to one doesn't proceed.
- Fix: Recent View blanking out after refresh.
- Fix: Queue View now no longer fully refreshes on every visit.
Pull Requests
Full Changelog: v0.99.0-beta...v0.99.1-beta
v0.99.0-beta: Full async rewrite, better accent colour detection, performance improvements, etc
This release marks a major architectural overhaul and rewrite of the codebase into async Rust.
Of the many user-facing benefits are SIGNIFICANT smoothness improvements with the UI no longer ever blocked by any network operation (especially noticeable when connected to a remote MPD server) and the addition of loading spinners in many more places of the UI.
On the developer side, the codebase should now be vastly simplified (at least in terms of control flow) and easier to contribute to.
In addition to this rewrite, the release also comes with a few new features and a lot of bugfixes:
New features
- Album art: Every image now features loading spinners with smooth fade transitions.
- Loading states: Main screens include their own overall loading spinners as they populate, plus
AdwStatusplaceholders for empty states. - Reliability: Automatic retrying for metadata fetches, plus error toasts instead of silent failures.
- New "pending tasks" popover, visible on the top-left of the window when there are more than 3 running background operations.
Improvements
- Significantly smoother UI thanks to all network operations being moved off the main thread and exposed as async operations to UI thread.
- Accent colour detection has been significantly improved. It now prefers the most saturated swatch and automatically adjusts brightness to ensure legibility in both dark and light modes.
Bugfixes
We've fixed some important issues with the metadata fetching process. Artist avatar hit rates are improved, and album art downloading is back to normal levels.
You can re-attempt metadata fetching for specific albums or artists directly from the app. Alternatively, you can remove the cache folder, but be aware this will trigger a full redownload and erase all user-set images!
- Fix: MusicBrainz album art fetching now works correctly, improving hit rate.
- Fix: Artist avatar fetching now works correctly (again).
- Fix: Dynamic Playlists are now correctly hidden when the MPD server does not advertise stickers support.
- Fix: Songs from other albums with the same name string appearing in content view.
- Fix: SQLite metadata conflicts.
- Fix: Embedded album art not correctly rendered on first boot.
Pull Requests
- Refactor/async client & UI tweaks by @htkhiem in #204
- Fix album fetch for musicbrainz by @ShadiestGoat in #225
- Bump oneshot from 0.1.11 to 0.1.12 by @dependabot[bot] in #234
- Bump time from 0.3.44 to 0.3.47 by @dependabot[bot] in #235
- Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #236
- Fix behaviour when stickers DB is not enabled by @htkhiem in #241
- Stricter album content fetch query + reformat by @htkhiem in #240
- Fix SQL Conflicts by @ShadiestGoat in #227
- Fix initial album fetch + cleanup by @ShadiestGoat in #232
- Metadata fetch retry logic by @htkhiem in #242
New Contributors
A huge shout-out to @ShadiestGoat for her rigorous testing and invaluable support. This release was the most taxing technically and mentally we've faced. Her assistance was tremendous in catching the inevitable regressions and bugs that come with a refactor of this scale.
- @ShadiestGoat made their first contribution in #225
Full Changelog: v0.98.1-beta.1...v0.99.0-beta
v0.98.1-beta.1 (hotfix)
Hotfix: Add missing icon files.
This only affects the GitHub release and packages depending on it. v0.98.1 on Flathub already contains this fix, as should the AUR -git package.
What's Changed
- metadata: Add vcs-browser URL by @yakushabb in #215
New Contributors
- @yakushabb made their first contribution in #215
Full Changelog: v0.98.1-beta...v0.98.1-beta-1
v0.98.1-beta
AlbumView sorting
- Re-add sort by rating.
- Fix misaligned sort option names. Sort by albumartist now really sorts by
albumartistsort, release date byoriginaldate, and so on.
Artist Content View
Avoid including songs/albums with tags containing substrings matching the current artist's name without actually referring to them.
Icons
Apparently newer GTK versions decided to change how SVG icons are rendered. This PR does the following:
- Re-export ReplayGain and audio quality symbols. I could reproduce the ReplayGain symbol scale issues but not the audio quality ones. Both seemed to stem from the fact that their SVGs' scaling parameters were not set to 1. The new optimised SVGs with scaling = 1 seemed to fix that.
- Pack in the sort direction and sidepane icons as not all DEs come with all the GNOME icon names by default.
Pull Requests
- Restore volume after unmute by @htkhiem in #207
- Add more checks to artist song/album fetching + fix icons by @htkhiem in #213
Full Changelog: v0.98.0-beta...v0.98.1-beta
v0.98.0: Dynamic playlists, playlist images, song ratings, play/skip count keeping & more
Dynamic Playlists
The main new feature of this version is Dynamic Playlists (DPs). Instead of a fixed list of songs, you can now set filter/ordering rules and query all matching songs. These rules may be dynamic, for example "sort by descending listen count" and "limit to songs played in the last 30 days".
With DPs, one can create things like a "personal top-10", "newly-added songs", "songs I hate and skip all the time", etc.
Initial capabilities:
- Supports both stickers-based (ratings, last play, play count, skip count) and query-based (tags, URIs) rules with one UI. This is in contrast with existing designs such as myMPD's (one needs to select a "rule type" beforehand, and that DP is then
- Zero, one or many of the above rules. If no filtering rules are added, you'll be fetching the entire library at once.
- Zero, one or many ordering clauses, with a special "random" clause that would trigger a shuffle on every queue.
- Real-time error checking & dynamically limited options. For example: if the "random" ordering clause is specified, then no other ordering clause may be added; rating filter rules must be within 0-5; etc. Any detected misconfiguration will prevent saving.
- Scheduled refresh based on system time and a user-configurable frequency (refresh once on the first load of every new day, for example).
- Optional fetch limit to get first N songs only (to facilitate things like "top 10 most listened songs". Note that this does not (and cannot) limit the number of songs actually fetched to the local machine as we have to resolve rule intersections locally.
- JSON import & export for backup or sharing
- Cover images
- Conversion to fixed playlist by freezing the current queried results and saving them as a new MPD-side playlist.
UI tweaks
- Increase max blur radius to 2048px (#180).
- Refactor sorting and filtering logic to rely more on expressions & their UI widgets to be more compact.
- Full-size bottom bar now requires a minimum window height of 680px (minified bar will be shown instead for lower heights).
Refactors & optimisations
- Implement a unified SongRow widget for use everywhere (cuts down 2700 SLoC)
- Reduce dependence on async channels in metadata cache code where possible.
- Cut down on unnecessary async polls (e.g., the loops for awaiting ashpd file selectors opened by album art/artist avatar/playlist cover selection).
Bugfixes
- Hide "Read more" link widget when no wiki/bio text entry is available (currently erroneously pointing to last album/artist with wiki/bio).
- Fix various quirks in existing UIs.
- Fix hanging after wake-from-suspend when connected to a remote server (requires
systemddistributions)
Pull Requests
- Redesign audio output widget to fit in bottom bar by @htkhiem in #191
- Proactively disconnect before suspend and reconnect after wake by @htkhiem in #194
- v0.98.0: Dynamic playlists, playlist images, song ratings, play/skip count keeping & more by @htkhiem in #179
Full Changelog: v0.97.2-beta...v0.98.0-beta
v0.97.2-beta: Theme selector, more queue perf improvements & bugfixes
New
Refactors
- Queuing is now done in the background to avoid blocking UI on large queuing operations & slow servers.
- Queue updates are now also asynchronous and windowed.
Bugfixes
- Folder view state bugs, esp. after resurfacing from background mode.
- Crashing when attempting to refresh connection in some cases.
- Albums of the same name getting merged together.
- Wiki & bio text not clearing upon switching to another album/artist.
Pull Requests
- Disambiguate albums by albumartist tag by @htkhiem in #174
- v0.97.2: Theme selection & paged incremental queue updating by @htkhiem in #176
Full Changelog: v0.97.1-beta...v0.97.2-beta
v0.97.1-beta: Metadata re-fetch support & bugfixes
Notice
Artist avatars bug
v0.97.0 had a bug that prevented artist avatars from loading properly. While v0.97.1 contains fixes for future avatar downloads, affected artists won't have avatars downloaded again automatically. Please see this PR comment for a remedy.
Regarding Flatpak manifests
We are pleased to announce that Euphonica is now officially available on Flathub, beginning with version 0.97.0. Releases will be deployed to Flathub in parallel with these GitHub releases, typically within a few hours.
As such, GitHub releases will no longer contain Flatpak manifest JSONs. Self-building Flatpaks from source is still supported but is now only recommended for development and testing purposes. The project's README has been updated to point a dedicated dev manifest, configured to build from the latest commit on the main branch.
Changelog
- New: Option to re-fetch metadata. Will also re-attempt artist avatar fetching.
- Refactor: Basic album/artist info is now shown early instead of being hidden until external wiki loads.
- Fix: Repeated inits causing duplicate albums and artists after exiting background mode.
- Fix: Album wiki text and artist avatars not loading.
- Fix: Consume mode resetting on new window opens.
- Fix: Sorting now prefers *sort tags before normal ones.
Pull Requests
- Fix metadata fetching issues by @htkhiem in #166
- Respect albumsort, artistsort and albumartistsort by @htkhiem in #167
Full Changelog: v0.97.0-beta...v0.97.1-beta
v0.97.0-beta
Libsecret
NOTE: This update will change how Euphonica store passwords, necessitating entering your password again. The old password entry is still there in your default keyring and can be safely deleted afterwards.
Previously Euphonica was using keyring to communicate with the host system's secrets store backend (on Linux that'll be secret_service). Over time it's become pretty much Linux-only and so there's no point using this heavyweight crate anymore. Switching to libsecret also gives us native Flatpak compatibility without having to specify a DBus talk-name fixed permission.
Global busy spinner
Add a spinner to the top left of the window to indicate presence of running background tasks. Hovering over it will show the number of remaining tasks. This isn't a progress bar as background tasks get added all the time.
This should help clarify what Euphonica is doing behind the scenes especially for slower MPD server hardware, slow connections, large libraries or mass album art downloads on cold starts. Related to #145.
Lazy init
Views are now initialised only upon the first time they're navigated to. This spreads the startup init workload over a longer period of time, reducing stutter and reducing costs of repeated reconnections. Testing shows this to provide a pretty nice improvement in overall smoothness on startup.
Better connection error handling
The MPD-facing code has been significantly revamped to handle errors more gracefully. Connection errors will now trigger reconnection attempts. Most of the panic!() and expect() have been replaced with proper error handling now, so Euphonica should crash frequently.
Should fix #146.
Other changes
- Lyrics box now expands to the remaining available space after the album art has grown to its maximum size in the player pane. It'll also shrink down to 32px to fit in the minimum window height. This fixes the player bar overflowing when lyrics are enabled.
- Fixed playlist editor's Apply button remaining disabled after one save.
Pull Requests
- v0.97.0: Switch to libsecret, better connection error handling, lazy init & more by @htkhiem in #148
Full Changelog: v0.96.4-beta...v0.97.0-beta
Further queue performance improvements & bugfixes
Queue performance improvements
With this release all queue operations, including ones performed by other players, will be handled asynchronously on Euphonica's side. There should be very little blocking logic left, and as such there should be even fewer stuttering on older systems or slower connections.
For any remaining performance hiccups, bug reports are especially welcome.
Lyrics-based seeking
For songs with synced lyrics, clicking on a lyric line will seek to its timestamp.
Bugfixes
- Fixed a crash when newlines are included as artist tag delimiters & there are UTF-8 characters.
- Fixed a crash caused by the PipeWire visualiser backend when changing tracks via MPRIS (including playerctl).
- Fixed volume knob not reflecting remote changes.
- Changed MPRIS play command behaviour to start playing again from the last-played track in the queue while in the stopped state.
- Empty album & artist tags are now properly included in the Album & Artist views.
PRs
- Improve handling of empty album & artist tags by @htkhiem in #132
- Safely ignore invalid Aho-Corasick matches by @htkhiem in #137
- Make queue updates asynchronous by @htkhiem in #133
- Seek to timestamp when lyric line is clicked by @htkhiem in #139
- More queue & playlist view performance improvements by @htkhiem in #140
- Change MPRIS play behaviour & implement remote volume change UI update by @htkhiem in #141
Full Changelog: v0.96.3-beta...v0.96.4-beta
