Spawn
playmakespawnjam
⌘K
visitorclaim namesign in
sign up
playmake
spawn / aboutwhat we're building

pinned

start herewhat spawn isfaqfrequently asked questionsthe betthe spawn bet

updates

engine v5.2LumeJul 10, 2026engine v5.1ConnectionJun 18, 2026engine v5.0For RealJun 4, 2026engine v4.6AtelierJun 1, 2026engine v4.5Surface TensionMay 22, 2026engine v4.4SolidMay 15, 2026engine v4.3GroovyMay 13, 2026engine v4.2ContinuumMay 9, 2026engine v4.1FoundationsMay 4, 2026engine v0.1GenesisApr 29, 2026

pinned

what spawn isstart herefrequently asked questionsfaqthe spawn betthe bet

updates

Lumeengine v5.24w agoConnectionengine v5.11mo agoFor Realengine v5.02mo agoAtelierengine v4.62mo agoSurface Tensionengine v4.52mo agoSolidengine v4.42mo agoGroovyengine v4.32mo agoContinuumengine v4.23mo agoFoundationsengine v4.13mo agoGenesisengine v0.13mo ago
← All posts
← All posts

engine v5.2.21

Engine v5.2.21

August 7, 2026

A patch in the Lume line.

what's new

  • When a database operation takes a moment longer than a script run allows, Savi now gets a plain explanation — the database is answering, nothing hung, just re-run — instead of a scary "hung await" error that used to send her hunting for a bug that wasn't there.
  • Physics (mantle worlds): characters and objects no longer catch on invisible snags while moving across smooth terrain and mesh seams, and worlds full of settled objects now truly go to sleep — an idle pile costs almost nothing, so big physics scenes stay fast.
  • Fixed a case where "I've reported this to the team" was wrong: in some multiplayer rooms, engine bug reports Savi filed looked sent but quietly went nowhere. Now she's told straight away when a report can't leave that room, so she can tell you the truth — and reports that CAN be sent still go through exactly as before.
›technical notes
  • Exec budget abort with api.sql in flight names the fact — never "a hung await" (#12441, ledger 2092 fork B). sql-api.ts grows a register→settle in-flight lifetime (separate from the drain's take-and-clear pending set, whose taken-but-unsettled entries are exactly the invisible case); buildAsyncSettleAbortError probes listInFlightExecSqlWork at mint and, when non-empty, mints the honest verdict: call named, lane's bounded window stated (relay reply deadline 30s, direct door fetch 10s), rollback fact stands, action = re-run once settled. The 5000ms budget itself is untouched; the fire-and-forget drain abort already named its sql fact and is untouched. Origin: dump 339d9450 — published call shapes blew the budget by ~5ms, then settled after rollback, and the "hung await" text got the planned event filed as an engine hang.
  • mantle: box3d-guided fixes + frontier optimizations (#12311). Trimesh weld probes neighbor cells (box3d b3SpatialHash shape, 8-cell probe at cellSize = 2×tolerance) — seam vertices 2e-8 apart no longer cook to distinct representatives that read coplanar seams as boundary edges; 200k-tri mesh cook 946→475ms vs the 27-probe draft. Near-parallel edge-axis rejection at box3d's relative tolerance; face manifolds never stripped by edge axes in box-tri. Broadphase goes O(degree) per moved body. Sleeping worlds cost nothing (island-granular sleep; per-axis sleep extents). New pinned suites: wake-seam purity, sticky-zero scratch, tick-pair set, plane-lock extent, near-parallel edge rejection. Full box3d HEAD re-comparison recorded in docs/physics-native/box3d-harvest-notes.md (zero solver-constant drift; ζ=5 warm-start re-run rejected on new grounds; solver-sets rejection superseded by the derived-frontier design). frozen-receipts.ts retired.
  • reportEngineBug: ok:true must imply a lane (#12436, ledger 2089 — intake-death mechanism #2). resolveEngineBugDispatchLane resolves rail | sp-forward | none BEFORE the verb returns; sp-forward requires client + singleplayer + POSITIVELY-sniffed kernel wire + live connection (isGameDbForwardEligible's gate shape — an undetermined pre-sniff wire refuses rather than gambling, since a fire-and-forget command has no typed reject at the relay egress). Exec snapshots can't see lane facts (all live-channel), so the exec host stamps the live verdict into the snapshot-riding config mirror at snapshot cut (the lastReportAtMs pattern). Lane "none" returns the throttle-style structured failure Savi already relays; nothing minted, no floor consumed. dispatchEngineBugReport now returns whether the report left, and the belt-and-suspenders no-lane warn carries networkingMode + wire. Test table covers every session shape: each row either lands the incident in a store or returns the honest refusal — zero silent-drop paths. Completes postmortem 2026-08-07-relay-sp-dead-db-lane §4.1; the kiln RPC lane for relay filings stays §6.2's owned follow-up.