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