Skip to content

v0.10.0

Choose a tag to compare

@temidaradev temidaradev released this 16 Jul 19:02
06172e2

This release is about the audio path and offline resilience: the player engine is rewritten as a single-owner actor, scrobbles now queue when you're offline and flush when connectivity returns, and multi-priority sorting lands across the library, artist, and album views.

Highlights

Player engine rewrite. The player is re-architected as a single-owner actor with a dedicated worker/sink split and its own runtime, replacing the old sprawling player.rs (#504). Source stream preparation is centralized into one path so every backend feeds the engine the same way (#500), and a new output sample rate mode lets you control the device rate from settings (#523). The rewrite ships with an extensive engine test suite.

Offline scrobbling. A scrobble that fails with a transient error (no response or a 5xx) is now persisted to a scrobble_queue table and resubmitted later with its original listen timestamp, across Last.fm, Libre.fm, and ListenBrainz. Permanent failures (4xx, e.g. bad credentials) are never queued, and one listen owed to several services is delivered independently so a single failing service never blocks the others (#511).

Multi-priority sorting. Album, library, and artist views gain configurable multi-key sorting, so you can order by several fields at once instead of a single column (#510, #522).

Features

  • Reconnect Discord Rich Presence when Discord starts late or restarts, instead of giving up on the first failed connection (#507).
  • Seek from the macOS now-playing widget / Control Center (#525).
  • Seek, shuffle and loop from the MPRIS (#504)
  • Output sample rate mode in settings for controlling the device output rate (#523).
  • Multi-priority sorting extended from albums to the library and artist views (#510, #522).
  • High-quality cover artwork requested for the home hero banner.
  • Playlist back button now returns to the playlist page.
  • Workspace and other dependency bumps (#520).

Fixes

  • server: don't split the Windows browser path on spaces during cookie import (fixes #513) (#521).
  • covers: fix YouTube Music artist thumbnails. Stop singles from dominating artist covers, split multi-artist names to the primary artist, and add a re-fetch mechanism for artist pictures (addresses #314) (#498).
  • sync: remote favorites now work correctly on remote sources (#529).

What's Changed

  • various: reconnect Discord presence when Discord starts late or restarts by @temidaradev in #507
  • various: add offline scrobbling support by @temidaradev in #511
  • player: centralize source stream preparation by @NotAShelf in #500
  • player: player engine rewrite as a single-owner actor by @UMCEKO in #504
  • various: add multi-priority sorting to the album view by @temidaradev in #510
  • various: bump workspace dependencies by @temidaradev in #520
  • various: extend multi-priority sorting to library, artists... by @temidaradev in #522
  • various: add output sample rate mode by @temidaradev in #523
  • various: support seeking from the macOS now playing widget by @temidaradev in #525
  • server/cookies: never split a browser path on spaces (fixes #513) by @UMCEKO in #521
  • fix: replace text for "radio" and "discover" in arabic by @holiday-in-cambodia in #528
  • fix(covers): fix/yt artist thumbnails by @UMCEKO in #498
  • fix: remote favorites sync by @UMCEKO in #529

New Contributors

  • @holiday-in-cambodia made their first contribution in #528

Full Changelog: v0.9.0...v0.10.0