Merged
Conversation
…n task Region: Code generation pipeline - Add new ObsWebSocket.Codegen.Tasks project as the protocol-driven generator. - Generate protocol artifacts into ObsWebSocket.Core/Generated and include them in solution flow. - Remove legacy ObsWebSocket.SourceGenerators project and its emitters/diagnostics. - Update solution to reference the new codegen workflow.
Region: Runtime serialization and protocol envelopes - Switch JSON serializer usage to context-backed options and typed metadata flow. - Update client request-data serialization path to use generated context options with clearer AOT failure messaging. - Move MsgPack runtime to generated resolver chain and byte-preserving payload handling. - Add MsgPack annotations to protocol wire records and stub classes, including extension-data handling strategy.
…on changes Region: Unit/integration test updates - Add targeted JSON serializer tests for context-backed payload handling. - Add MsgPack serializer behavior tests for byte-backed typed payloads, stubs, filters, and extension data. - Update existing client/event tests to align with new message serialization flow.
…k validation Region: Documentation and sample app - Refresh README guidance for current AOT/serialization workflow. - Extend example app configuration and runtime flow to exercise both JSON and MsgPack paths. - Add sample validation options and related appsettings wiring.
…e publish Region: Serializer hardening and verification - Add MsgPack JsonElement formatter resolver and register it in serializer options chain. - Expand serializer behavior tests with typed request/response/event/nested scenarios and malformed-shape checks. - Add CI Native AOT smoke publish step for ObsWebSocket.Core on linux-x64.
Region: MsgPack runtime handshake/envelope handling - DeserializeAsync now manually parses incoming MsgPack envelope and captures 'd' as raw bytes even when OBS sends a map. - Avoid custom IncomingMessage formatter registration conflict with MessagePack SG (duplicate formatter key). - Add regression coverage for incoming map payload capture and downstream payload deserialization.
Region: MsgPack wrapper handling + example transport validation - Map Event/RequestResponse/Batch wrapper deserialization through ReadOnlyMemory<byte> so inner payloads survive for typed deserialization. - Strengthen run-transport-tests with strict value checks and CustomEvent roundtrip validation for JSON and MsgPack.
… shape Region: run-transport-tests validation - Accept both direct and nested CustomEvent payload shapes from OBS while still enforcing strict testId/content checks. - Prevent false negatives where CustomEvent is received but shape differs between transports/server behavior.
…ation - Replace JSON-bridge formatter emission with known-type maps that delegate to SourceGeneratedFormatterResolver - Split generated resolver output into fixed/request/response/event/nested files for maintainability - Keep MsgPack serializer on resolver-chain approach and add StandardResolver fallback for enum/primitive coverage - Add resolver coverage test over generated + core protocol types - Regenerate serialization artifacts and wire codegen outputs into project
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.