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.