- π 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