2.37.0
(feat): Replace separate deserialization and serialization tests with a single round-trip
serialization test using JsonAssert.Roundtrips<T>(inputJson). The helper deserializes
JSON to T, re-serializes, and compares to the original JSON via JsonElement deep
equality, producing diff-reportable failures.
2.36.0
(feat): Add UsingObjectDictionaryComparer to test comparers for handling
Dictionary<string, object?> fields. System.Text.Json deserializes
object? values as JsonElement, so structural equality comparisons
need to serialize both sides before comparing. The UsingDefaults()
chain now includes this comparer automatically.
2.35.1
(fix): Add ReadAsPropertyName and WriteAsPropertyName overrides to the generated
IStringEnum JsonConverter. Without these overrides, System.Text.Json throws
NotSupportedException at runtime when serializing or deserializing a
Dictionary<TStringEnum, TValue>. This is applied to all generated IStringEnum
types so dictionary-key usage works without requiring regeneration.
2.35.0
(fix): Fix WebSocket binary message sending. Binary messages (e.g. audio bytes) are now
sent as raw bytes instead of being JSON-serialized, which caused servers to reject
them with CONFIG_DENIED.
(fix): Fix WebSocket incoming message deserialization. TryDeserialize now passes
JsonSerializerOptions so the generated literal property setters correctly
validate const discriminator fields (e.g. type: "transcript" vs type: "flushed")
during deserialization.
(feat): Add forward-compatible UnknownMessage event to WebSocket clients. When the server
sends an event type not recognized by the SDK, it is now dispatched to the
UnknownMessage event handler (as a JsonElement) instead of raising an exception.
This allows SDKs to gracefully handle new server event types without requiring
regeneration.