engine v5.0.2
Engine v5.0.2
June 6, 2026
A patch in the For Real line.
what's new
- The editor cursor finally feels like your real mouse — pixel-for-pixel, no more laggy ghost trailing your hand in god mode
- Joining a world that's mid-wake retries automatically instead of sometimes sitting on a silent loading screen
›technical notes
- Overlay fake cursor rebuilt for native feel: the game iframe relays pointer position from pointerrawupdate (input-device rate, dispatched on arrival instead of rAF-aligned — kills the structural ~2-frame postMessage delay), and the parent writes translate3d directly in the event handler on a compositor layer; hover mirroring, edge push, and the cursor store publish read the accumulated position once per frame, never blocking the write
- join.failed closes the socket with an explicit retryable app code (4430) — the previous bare close reached browsers as code 1000, which the client reconnect guard reads as a clean close and never retries (a silently dead loader when a room was mid-hydration)
- The spec-hydration retry heals a partial apply: a world holding a spec whose ready flip was interrupted now flips ready on the next retry tick instead of holding every joiner in Loading forever; a retry that declines to arm logs its cause
- Regression pin: 161 same-GLB objects with per-object scale/yaw instance into exactly 6 batches (the "5.0 not instancing" report's refutation, kept as a guard)