Changelog#
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.3.3] - 2026-06-11#
Fixed#
OMPE-91975:
observe_and_dispatchno longer silently swallows non-TypeError/ValueErrorexceptions raised by handlers. Any exception (e.g.AttributeError,KeyError,RuntimeError,FileNotFoundError,json.JSONDecodeError, database/USD errors) is now logged viacarb.log_errorand a correlated error response carryingid,error, anderror_typeis queued on the response channel so the client receives a deterministic error rather than hanging indefinitely waiting for a response that never arrives.
[1.3.2] - 2026-05-14#
Fixed#
OMPE-91274: Resolved wire-format mismatch between
docs/Overview.md,python/large/_extension.py, and the large-messaging tests. The canonical wire format is the FLAT envelope (id,part,numPartsat the envelope top level alongsideevent_typeandpayload) — docs, tests, and implementation now agree.
Changed#
_dispatch_message_partnow explicitly recognises the legacy NESTED envelope (transport fields insidepayload), translates it to the canonical FLAT envelope before dispatch, and emits a one-shotDeprecationWarningper event type (plus acarb.log_warnentry) so legacy clients are visible to operators.python/tests/test_livestream_messaging_large.pyrewritten to exercise the canonical FLAT request and FLAT response in both the small and large (>64 KiB) cases.New regression test
test_legacy_nested_envelope_is_accepted_and_warnsprotects the backward-compatibility path for older clients.omni.kit.livestream.messaging.largenow re-exportsMESSAGE_KEYandPAYLOAD_KEYfor clients that need to construct the legacy envelope shape symbolically (e.g. compatibility test suites).
Documentation#
docs/Overview.mdadds a “Deprecated: legacy NESTED envelope” section documenting the backward-compatibility receive path and clarifying that outgoing messages are always emitted in the canonical FLAT shape.
[1.3.1] - 2026-05-06#
Fixed#
observe_and_dispatchno longer drops repeated no-id messages from legacy clients. The 1.3.0 deduplication step keyed on the messageid; when an older client omitted the id,Nonewas added to the_seen_idsset on the first message and every subsequent no-id message of the same observed event type was treated as a duplicate. Dedupe is now skipped entirely whenid_valueisNone, so no-id requests are processed independently. (NVBug 6134051 / OMPE-92428)
[1.3.0] - 2026-02-19#
Added#
Added
omni.kit.livestream.messaging.largesubpackage for splitting, reassembling, and correlating large messages.Large message handling is active automatically in the base extension — no extra imports or configuration required.
Changed#
All outgoing messages now use a flat envelope where
id,part, andnumPartsare top-level fields alongsideevent_typeandpayload. Single-part messages omitpart/numPartsand carry the application dict directly inpayload; larger payloads are split intoMESSAGE_PART_SIZE_BYTES(≈16 KiB) chunks wherepayloadis a JSON-string chunk of the serialised application payload.Incoming messages carrying
id,part, andnumPartsat the envelope top level are buffered and reassembled before being dispatched; legacy clients that send a plain{ event_type, payload }envelope continue to work unchanged.
[1.2.1] - 2025-11-05#
Changed#
Added major.minor.patch kit lock version.
[1.2.0] - 2025-08-15#
Changed#
Added support for migration to Events 2.0, retaining backward compatibility.
Updated tests
[1.1.1] - 2024-04-17#
Changed#
Added support_level = “Enterprise”.
[1.1.0] - 2023-12-19#
Changed#
Split out webrtc setup to omni.kit.livestream.webrtc.setup
Forward API calls at module-level
[1.0.1] - 2023-12-15#
Added#
Fix resizing app window in USD Composer
[1.0.0] - 2023-12-13#
Added#
Initial version