Releases: htkhiem/euphonica
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
v0.96.3-beta
New features
- Lyrics import, export and clear features. Currently we only support basic LRC, without per-word timings or any tags except
offset. - PipeWire visualiser backend can now select specific devices to capture audio from.
Refactors & fixes
- Fixed seekbar occasionally not updating itself
- PipeWire visualiser backend's autoconnection should now be smarter (works on more setups out of the box). In case it still triggers microphones, potentially forcing Bluetooth devices into headset mode, please select a specific device manually.
- Fixed album arts not falling back to embedded art automatically in Album View.
- Bump dependencies to fix security bulletins.
Pull Requests
- Lyrics import, export and clear by @htkhiem in #91
- Greatly simplify seekbar logic by @htkhiem in #123
- Bump slab from 0.4.10 to 0.4.11 by @dependabot[bot] in #128
- FFT backends rework by @htkhiem in #127
- Add MPD folder->embedded fallback path by @htkhiem in #129
Full Changelog: v0.96.2-beta...v0.96.3-beta
v0.96.2-beta: Performance improvements for large libraries & bugfixes
Important notice
This release will cause existing artist avatars to be invalidated to fix a database bug. You'll have to download or set them again. My sincere apologies for the inconvenience.
Performance improvements
This release should enable Euphonica to work with larger libraries. It now runs well on a 30,000-song, 2,000-album, 1,000-artist synthetic library.
- Fixed a breaking bug that causes the app to hang forever when its in-memory texture cache hits max capacity.
- Switched the internal SQLite DB to use WAL journaling.
- Moved more SQLite operations off the main thread. All writes now happen in a new threadpool that contains just one thread to avoid overloading the filesystem. This thread is parked after 15 seconds of inactivity.
Bugfixes
- Crashing when asked to queue inaccessible songs (on unmounted storage for example)
- Confusing artist avatar and album art when an album and an artist share the same name (think debut releases).
PRs
- Fix typos by @kianmeng in #97
- v0.96.2: Improve performance with larger collections & bugfixes by @htkhiem in #101
New Contributors
Full Changelog: v0.96.1-beta...v0.96.2-beta
v0.96.1-beta
- Fix: crash on startup for new installations
- Change: Flatpak builds now use release profile instead of debug
Full Changelog: v0.96.0-beta...v0.96.1-beta
