← Changelog
Daily2026-07-09

Plugin host architecture + Play mode fixes + Keyboard shortcut forwarding + Game-video QTE timeline

The interface has been rebuilt around a plugin-host architecture with typed EventBus, CommandsRegistry, ContextKeys, and a PluginLoader with topological setup. Play mode received critical fixes — equirect HDR skybox loading, animation plugin SSOT, scene GUID resolution, and pointer-capture no longer conflicts with pointer-lock. Global keyboard shortcuts now forward from iframes. The game-video workbench introduces a QTE timeline with appear/hit/vanish moments and an extension protocol for graph-first editing.

Plugin-host architecture

The interface layer has been rebuilt around a formal plugin-host architecture. Key components include:

  • EventBus with typed events, middleware, and destroy semantics
  • CommandsRegistry with when-predicates and registration hooks
  • ContextKeys with observable change subscriptions
  • PluginLoader with topological dependency sorting and capability-gated pending
  • StorageApi and CapabilityRegistry for persistent state and plugin capabilities

This foundation replaces the previous monolithic store with a composable, testable plugin system. Panels (editor, chat, agents, files, settings, dashboard) are now contributed by individual plugins rather than hardcoded in the app shell.

Play mode: critical fixes

Several bugs that prevented Play mode from working correctly have been fixed:

  • HDR skybox: equirect .hdr files now bake with kind:'equirect' so the skybox loads properly at runtime.
  • Animation SSOT: the animation plugin now self-owns its AnimationAssetResolver, eliminating duplicate ticking.
  • Scene GUID resolution: the Play button routes the default scene through AssetRegistry.instantiate, preventing "SharedRefReleasedError" on repeated plays.
  • Pointer-capture vs pointer-lock: setPointerCapture is no longer called while the pointer is locked, fixing the top-down camera lock bug in game templates.
  • Exit game view: pressing G or Esc now correctly exits the game view when in edit mode.

Keyboard shortcut forwarding

Global shortcuts (Cmd+K / Ctrl+Shift+* / Esc) are now forwarded from edit and play iframes into the main editor, so command palette and panel toggles work regardless of which frame has focus. Editor edit-domain shortcuts (Delete, F2, Ctrl+D, Ctrl+A, G) are also registered through the new keyboard router.

Game-video workbench: QTE timeline

The game-video workbench (wb-game-video) introduces a QTE (Quick Time Event) timeline that converges to three discrete moments — appear, hit, and vanish — replacing the previous continuous qte_window track. The workbench also adopts a graph-first editing surface with an extension protocol, enabling third-party node types to be registered at runtime.

Streamed chat text micro-batching

The AI chat now micro-batches streamed text and thinking tokens using requestAnimationFrame, resulting in smoother rendering during long responses. Large pastes are automatically folded into a collapsible pill to keep the conversation view clean.

Engine startup failure detection

bun fx start now detects and reports engine startup failures instead of silently returning 500 errors. If the engine process crashes or fails to bind its port, the CLI surfaces a clear error message.

← All daily updates