You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This sample documents the target API; it is not runnable yet. The Rust-side
140
-
session entrance is now executable: strict `hello`/`welcome` DTOs negotiate the
141
-
renderer, capabilities, debug channels, one in-flight render, and a JSON
142
-
payload limit no larger than 16 MiB; incremental and blocking codecs enforce a
143
-
little-endian `u32` length prefix and reject empty, oversized, truncated,
144
-
invalid UTF-8, duplicate-field, unknown-kind, and unsupported-protocol input
145
-
before a session is bound. The remaining design keeps component state and callbacks in Node,
146
-
keeps platform/GPU handles inside a separate Rust process, reuses resolved
147
-
`ProtocolUiFrameV1` records, and sends complete frames so Rust remains the only
148
-
native reconciler. Read the
139
+
session boundary is now executable in Rust: strict `hello`/`welcome` DTOs
140
+
negotiate the renderer, capabilities, debug channels, one in-flight render,
141
+
and a JSON payload limit no larger than 16 MiB. Strict `render`, `committed`,
142
+
and ordered multi-invocation `event` messages reuse resolved
143
+
`ProtocolUiFrameV1` input while keeping legacy planned-widget responses out of
144
+
the TSX wire contract. `TsxHostApplicationSessionV1` validates message,
145
+
render, host-frame, and event sequences before mutation, preserves the active
146
+
revision after a rejected frame, and maps self-drawn snapshots and dispatches
147
+
directly. Incremental and blocking codecs enforce a little-endian `u32` length
148
+
prefix and reject empty, oversized, truncated, invalid UTF-8, duplicate-field,
149
+
unknown-kind, and unsupported-protocol input. Canonical hello, counter render,
150
+
commit, and event fixtures plus a Rust RSX/TSX Native IR and accessibility
151
+
parity test pin this slice. Actual process I/O, TypeScript declarations, JSX
152
+
runtime, callback registry, and packages remain. The design keeps component
153
+
state and callbacks in Node, platform/GPU handles inside a separate Rust
154
+
process, and Rust as the only native reconciler. Read the
149
155
[TSX native runtime architecture](docs/tsx-native-runtime.md) for protocol,
150
156
identity, failure recovery, packaging, and T0-T5 delivery gates.
151
157
@@ -355,7 +361,7 @@ independently.
355
361
| M4 · Text and interaction cutover | In progress | Stable-id raw input, long press, move, typed and collection drag/drop, timed drop activation, and fail-closed dynamic drop policy resolution landed; shaping, glyphs, editing/IME, accessibility bridges, overlays, and complete calculator scenarios remain |
356
362
| M5 · Default cutover | Planned | Make self-drawn content the default, then delete the three legacy widget renderers |
357
363
| H0-H5 · Thin platform hosts | H0 complete; H1 in progress | Atomic frames, lifecycle recovery, stable-id raw input/reducers, long press, captured move, typed drag/drop negotiation and timed target activation, zero-toolkit firewalls, and an interactive calculator landed; the Graphics raw-surface edge remains |
358
-
| T0-T5 · TSX native authoring | T1 Rust foundation in progress | Strict handshake, bounded length-prefixed framing, message sequencing, and revision-scoped drop-policy DTO/resolver bridge landed; render/event messages, TypeScript declarations, JSX runtime, Node callback transport, state runtime, self-drawn native window, packages, and stable SDK remain |
364
+
| T0-T5 · TSX native authoring | T1 Rust foundation in progress | Strict handshake/framing, transactional render/commit/event messages, self-drawn snapshot/dispatch adapters, counter golden/parity fixtures, and revision-scoped drop-policy bridge landed; process I/O, TypeScript declarations, JSX runtime, Node callback registry/state, packages, and stable SDK remain |
0 commit comments