Engine Tier 2 runtime + Single-realm editor + Gateway asset/component surface + Asset-resident plugins
The editor completes its single-realm migration — all legacy iframe protocol projections, VAG telemetry bridges, and dead EditSurface hosts are retired, replaced by a typed PanelBridge and shared dock layout. The Gateway API gains a full asset and component read surface, converged import/delete, and asset-resident game plugins that load their components in Edit and systems in Play. Active-world query routing, scene-asset placement, and a persistent DEV diagnostics bridge round out the release.
Single-realm editor: legacy protocol retirement
The editor completes its single-realm migration. All communication that previously tunnelled through legacy iframe projections is now handled in-process:
- Typed PanelBridge replaces
VAG_ASSETS_CHANGEDand all anonymous broadcast messages - Edit runtime VAG telemetry bridge removed — asset change notifications now flow through the typed channel
- EditSurface iframe host retired —
VAG_SPAWN_ENTITYand the associated dead edit preview-control receiver are removed - Legacy surface terminology cleaned up across the entire editor surface
- Shared dock layout injected across all editor panels, replacing per-panel layout duplication
Gateway: asset and component read surface
The editor Gateway API (the AI agent's programmatic door into the editor) gains major new capabilities:
- Asset read surface: list and inspect catalogued assets by type, path, and GUID
- Asset import + delete: converged on one canonical door —
importAsset/deleteAsset - Component read surface:
describeComponentandlistComponents— AI agents can now enumerate and inspect ECS components on any entity addSceneAssetToSceneoperation: place a catalogued scene GUID directly into the active scene- Active-world query routing: queries now follow
activeWorld, so play-world reads work correctly through the gateway door during Play mode argsSchemaenforcement on all defined document operations for safer agent dispatch- Query serialization fix:
variable array<T>fields are now serialized as an enumerable list, not a count
Asset-resident game plugins
Plugins can now ship their logic inside a game asset directory. Components are loaded in Edit mode for authoring, while systems are loaded in Play mode for runtime execution. This removes the requirement to pre-register all plugin logic in the editor bundle.
DEV diagnostics bridge: persistent through Play
The in-process editor diagnostics bridge (DEV bridge) now stays alive during Play mode, enabling continuous editor diagnostics without interruption when the game starts or stops.
Engine: Tier 2 runtime decomposition
The engine runtime is split into three independent subsystems:
- assets-runtime: asset loading, registry, and lifecycle management decoupled from the core render loop
- picking: GPU-backed entity picking as a standalone subsystem
- graphics-extras: post-process effects, HDR resolve, and graphics utilities extracted from the monolithic renderer
Engine: component batch vec-collapse + field-transient
ECS component fields across Lights, Camera, Glyph, Tilemap, and Collider components have been updated with:
- Batch vec-collapse: vector fields are stored and transmitted as compact arrays, reducing serialization overhead
- Field-level transient: per-field transient annotations prevent ephemeral runtime state from being persisted to disk
Transform serialization also gains vec fields and field-level transient support.
Engine: instantiateSceneFlat
A new instantiateSceneFlat API opens a scene without inserting a synthetic hierarchy root entity. This matches how scenes authored in the editor appear — entities appear at the top of the scene graph exactly as placed.
Engine: post-process resize fix
Post-process bind groups are now keyed on TextureView identity rather than texture dimensions. Resizing the viewport no longer leaves stale bind groups from the previous resolution, eliminating post-process corruption on window resize.
Engine: CSM cross-world fix
Directional cascade shadow maps (CSM) are recomputed at the merge layer when a cross-world camera + light configuration is detected, fixing shadow rendering in split-world scenes.
Engine: RHI debug idle fast-path
FORGEAX_ENGINE_RHI_DEBUG=1 now has a near-zero cost idle path when no capture is in progress. The debug instrumentation can be left enabled without affecting frame rate during normal gameplay.
Engine: sprite frustum cull fix
Restored BUILTIN_QUAD AABB and M2.5 dispatch pairing, fixing sprites being incorrectly culled when partially outside the frustum.
Engine: FBX loader fix
The fbx-wasm package now ships as a .tar.gz that includes the Emscripten-generated .mjs glue file, fixing FBX import failures caused by the missing loader module.
Fixes
- Viewport: prevent
render-system-no-camerafalse positive on game create - Query routing: play-world reads correctly route through the active world gateway