Releases: Sendspin/sendspin-dotnet
Releases · Sendspin/sendspin-dotnet
Release list
v9.3.0
Full Changelog: v9.2.0...v9.3.0
9.2.0
What's Changed
- feat: track post-anchor clock drift in TimedAudioBuffer (9.2.0) by @chrisuthe in #119
Full Changelog: v9.1.0...v9.2.0
What's Changed
- feat: track post-anchor clock drift in TimedAudioBuffer (9.2.0) by @chrisuthe in #119
Full Changelog: v9.1.0...v9.2.0
v9.1.0
What's Changed
- fix: capture output-prefill baseline on the ReadRaw path (9.1.0) by @chrisuthe in #59
- fix: grounded-timing reconnect re-capture + ResetSyncTracking window reset (9.1.0) by @chrisuthe in #60
Full Changelog: v9.0.6...v9.1.0
v9.0.6
What's Changed
- feat: pre-roll the schedule by output latency for automatic multi-room alignment (9.0.6) by @chrisuthe in #58
Full Changelog: v9.0.5...v9.0.6
v9.0.5
What's Changed
- feat: re-anchor playback timing without dumping the buffer (9.0.5) by @chrisuthe in #57
Full Changelog: v9.0.4...v9.0.5
v9.0.4
What's Changed
- fix: detect silent server drops so the client reconnects (9.0.4) by @chrisuthe in #56
Full Changelog: v9.0.3...v9.0.4
v9.0.3
What's Changed
- fix: mid-track join offset and startup stutter — timing-path fixes (9.0.3) by @chrisuthe in #55
Full Changelog: v9.0.2...v9.0.3
v9.0.2
What's Changed
- feat: diagnostic signals for sync-health classification (9.0.2) by @chrisuthe in #54
Full Changelog: v9.0.1...v9.0.2
v9.0.1
What's Changed
- artwork_url: null from the server (artless tracks, stopped playback) was silently retained by the ?? merge operator in HandleServerState. The SDK was treating explicit null and absent identically — both fell through to the existing value.
- Extended the Optional pattern from progress to all ServerMetadata fields: title, artist, album_artist, album, artwork_url, year, track, timestamp. Absent = keep existing, explicit null = clear. This matches aiosendspin's UndefinedField on every field and fixes cleared_update() on stop.
- Registered Optional<string?>, Optional<int?>, Optional<long?> in the AOT factory. Updated the "unregistered type" sentinel tests to use Optional now that string is registered.
- test: make FakeSendspinConnection connection-state-aware by @chrisuthe in #51
- Sync dev to main: connection-state test infrastructure by @chrisuthe in #52
Full Changelog: v9.0.0...v9.0.1
v9.0.0
What's Changed
- feat: add player timing capabilities and static-delay persistence by @chrisuthe in #35
- fix: read repeat/shuffle from controller state and add device mac_address by @chrisuthe in #36
- refactor: retire non-spec client/sync_offset in favor of set_static_delay by @chrisuthe in #38
- feat: complete controller role surface by @chrisuthe in #39
- feat: complete artwork role (multi-channel, channel-aware events, request-format) by @chrisuthe in #40
- feat: implement the color role by @chrisuthe in #41
- feat: implement the visualizer@v1 role by @chrisuthe in #42
- feat: isolate binary dispatch so a maturing visualizer fails gracefully by @chrisuthe in #43
- fix: perceptual volume curve and default goodbye reason to restart by @chrisuthe in #44
- feat: expose an external_source enter/exit API by @chrisuthe in #48
- feat: send pure operational-state changes as client/state deltas by @chrisuthe in #47
- feat: report client/state error and synchronized on pipeline error/recovery by @chrisuthe in #45
- feat: emit stream/request-format for the player role by @chrisuthe in #46
- Dev-> Main by @chrisuthe in #37
- chore: bump version to 9.0.0 by @chrisuthe in #49
- Dev by @chrisuthe in #50
Full Changelog: v8.0.0...v9.0.0