Added
- In-App Auto-Update (requested by @netherguy4): Psysonic now checks for new releases automatically on startup (3 s delay). On macOS and Windows a native install-and-relaunch flow is available directly in the app — no browser needed. On Linux, a download link to the GitHub release page is shown instead (AppImage is not built due to WebKitGTK incompatibility with Arch/Fedora). The updater uses Tauri's signed updater plugin with minisign signatures verified against a bundled public key.
- Configurable Home Page: Users can now choose which sections appear on the home page. A new "Home Page" block in Settings → Library lets you toggle each section individually (Featured, Recently Added, Discover, Discover Artists, Recently Played, Personal Favorites, Most Played) with a reset-to-default button. Hidden sections are skipped entirely.
- Consistent icon language (requested by @netherguy4): Favorites (local star/heart) now use a filled Heart icon everywhere — Player Bar, Album Detail, Artist Detail, Tracklist, Context Menu. Last.fm love always uses the Last.fm logo. Previously the two were mixed up in several places.
Fixed
- Radio broken from context menu (reported by @netherguy4): "Start Radio" in the track and queue-item context menus had no effect. The handler was passing the artist name as the artist ID to
getSimilarSongs2, which returned an empty result — so no tracks were queued and no error was shown. Now correctly passessong.artistId. - Album Detail hero background not loading: The blurred album art background in Album Detail only appeared after a track change, never on first visit. Root cause:
buildCoverArtUrlwas called withoutuseMemo, generating a new salt on every re-render — causinguseCachedUrlto cancel and restart its fetch endlessly. Fixed by memoising both the URL and cache key onalbum.coverArt. Same fix applied to Hero and Playlist Detail backgrounds. - CI: auto-update signing pipeline: Signing keys were not being passed correctly during the build, and macOS
.sigfiles were uploaded with a generic name the manifest generator couldn't match. Fixed the post-build signing step to upload arch-specific names (Psysonic_aarch64.app.tar.gz.sig,Psysonic_x64.app.tar.gz.sig). First release where the in-app updater is fully functional on macOS and Windows. - CI: Windows NSIS upload: The release workflow was not correctly uploading Windows artifacts. Resolved by letting
tauri-actionhandle NSIS bundle detection and upload directly — it only searches for what was actually built, so there is no MSI conflict with--bundles nsisbuilds. - CI: npm + Cargo caching (contributed by @netherguy4): Added
actions/cachefor npm andSwatinem/rust-cachefor Cargo across all build jobs. Warm-cache builds will be significantly faster on subsequent releases. - Linux/AUR build: ring linker error: Builds on Arch/CachyOS failed with
rust-lld: undefined symbol: ring_core_*after the Tauri updater was added. Arch'srustpackage bakes-fuse-ld=lldinto the default rustflags; ring's C/asm objects are incompatible with lld. Fixed via.cargo/config.toml— forcesccas linker driver with-fuse-ld=bfdto override the hardcoded lld flag. Addedclangto the AURmakedepends(required by ring's bindgen step).