engine v5.0.11
Engine v5.0.11
June 11, 2026
A patch in the For Real line.
what's new
- Savi's script tools work again in solo games with mouse-look cameras — a 5.0.10 regression broke her ability to run scripts there.
›technical notes
- The exec worker's snapshot rebuild now registers the client-runtime components for client-mode worlds (ledger #595, 5.0.10 regression). 5.0.10 moved run_script off the sim thread into an exec worker that rebuilds the world from a WorldSnapshot, with a registry built from
game.schema(...)+ feature glue only — but the client runtime worker registers pointer-lock intent and the selection components OUTSIDE that path (runtime-worker.tsdefine). In singleplayer the client world is the authority, so any mouse-look game's snapshot shipped aninput/pointer-lock-intentcolumn and every run_script faulted deterministically with "snapshot component 'input/pointer-lock-intent' is not registered in the worker schema — game module mismatch" (field hit: app 463cbf9c, creator rolled back to 5.0.9). - One source of truth: the registrations are extracted into
registerClientRuntimeComponents(engine/components/client-runtime.ts), called by BOTH the runtime worker'sdefineandcreateSnapshotWorld. The snapshot rebuild registers them forworldMode === "client"only — server snapshots never carry these rows and server registries are byte-for-byte unchanged. The loud unknown-column throw stays for genuinely unknown components (no silent column skipping). - New real-path pin
client-runtime-components.test.ts: a singleplayer-shaped client world built through the exact runtime-worker registration split, a pointer-lock row on the camera, run_script throughcreateExecEndpoint→createSnapshotWorld— red on the unfixed build with the field's exact signature; plus a selection-row case and a still-throws case for unknown columns.