- 🌟 feat: add crossfade support to the switching audio source ac280ac @NomanV
- 🌟 feat: expose crossfade_duration configuration option e0a7092 @NomanV
- ⛑ test: add SwitchingAudioSource crossfade test suite f244c14 @NomanV
- 🐞 fix: recognize prefetched streams for relinked tracks ca3f10c @NomanV
- 🐞 fix: keep the prefetched next track consistent with the playback plan 0e1427d @NomanV
- 🌟 feat: respect
Retry-Afteron 429 responses c9960c1 @devgianlu - 🌟 feat: coalesce state PUT requests to avoid rate-limits 8331ce9 @devgianlu
- 🐞 fix: don't clip the start of a track on the pulseaudio backend bd41ed5 @plisker
- 🐞 fix: don't strand the track list at pos -1 when unshuffle re-fetch fails 4afa96e @devgianlu
- 🐞 fix: Retry on Spotify HTTP 50x Status e50a5f4 @devgianlu
- 🌟 feat: cache encrypted audio files on disk e24a6af @claude
- 🐞 fix: persist cache access time to disk so LRU order survives restarts ff5ec78 @claude
- 🐝 refactor: address review — disable cache by default, use XDG cache dir 5c7407a @claude
- 💄 chore: add feature list to README 2202658 @devgianlu
- 🌟 feat: support starting playback at a position via POST /player/play 4f392cf @claude
- 🐞 fix: clamp samples before integer conversion in the pipe output ed80617 @molchalih
- 🐞 fix: normalise FLAC samples by 2^(bps-1) instead of 2^bps 068e1a7 @molchalih
- 🐞 fix: dispatch zeroconf addUser from the current user bfa4a35 @molchalih
- 🌟 feat: add /player/output to reopen audio output live 9df6d5c @claude
- 🐞 fix: re-resolve ALSA device aliases from the current config on every open 7cdfae3 @claude
- 🌟 feat: support resuming podcasts 6a3c8a9 @devgianlu