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
-**Validation API** — actionable TPS format diagnostics
41
-
-**Parser API** — TPS document model generation
42
-
-**Compiler API** — JSON-friendly timed state machine generation with a stable wire contract
43
-
-**Player API** — deterministic state resolution plus stand-alone playback control for embeddable hosts
44
-
45
-
All six active runtimes participate in repo-wide build/test CI and now have separate `90%+` coverage gates.
46
-
47
-
The active SDKs now split playback into three layers:
48
-
49
-
-**`TpsPlayer`** — pure resolver for `GetState(elapsed)` / sampling
50
-
-**`TpsPlaybackSession`** — timer-driven runtime controller with `play`, `pause`, `seek`, `advanceBy`, `nextWord`, `previousWord`, `nextBlock`, `previousBlock`, and speed correction
51
-
-**`TpsStandalonePlayer`** — compile-and-play wrapper that starts from raw TPS source and exposes bindable runtime snapshots, commands, and transport events
This lets a UI receive the current runtime model immediately and then keep rendering on every playback update.
90
-
91
-
On .NET, `ObserveSnapshot(...)` and runtime events can be dispatched through `TpsPlaybackSessionOptions.EventSynchronizationContext`, and callback failures are surfaced through `ListenerException` instead of being silently swallowed.
When a .NET standalone player starts from compiled JSON instead of raw TPS source, `HasSourceCompilation` is `false` and `Document` is a projected structural view of the compiled graph. That projected document is suitable for host UI labels and navigation, but it does not recreate original authoring text content.
142
-
143
-
## UI Integration Contract
144
-
145
-
TPS SDKs are intentionally renderer-agnostic. They do not own your HTML, Razor, MAUI, WPF, WinUI, React, or canvas UI. Instead, the embeddable playback layer exposes a host-facing contract:
-**Events**: runtime state change events plus `snapshotChanged` for UI rerender
152
-
153
-
Recommended host flow:
154
-
155
-
1. Compile TPS into a state machine.
156
-
2. Bind your buttons and shortcuts to the playback commands.
157
-
3. Render the current screen from the snapshot object, not from ad-hoc derived state.
158
-
4. Use `controls.*` to enable or disable UI affordances consistently across platforms.
159
-
160
-
On .NET hosts with a UI thread, configure `TpsPlaybackSessionOptions.EventSynchronizationContext` or create the player on the target UI thread so `SnapshotChanged` arrives on the correct dispatcher. For deterministic tests or host-controlled time, use `TpsPlaybackSessionOptions.TimeProvider`.
0 commit comments