You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Highlights
Added deterministic Web frame capture with input recording and replay, plus a complete integration guide for capture-based regression testing.
Improved runtime scheduling and startup semantics with coroutine-based synchronous event dispatch, safer wake-ups, eager-start yielding, bootstrap timing fixes, and main execution timeout diagnostics.
Refined rendering and sprite behavior with smaller emoji fallback assets, improved SVG font handling, preserved hidden-sprite bounds, corrected fence limits, and more consistent edge bouncing.
Published the SPX Web runtime to npm and added configurable runtime usernames.
Switched warp execution to the XGo @ decorator model and migrated the Go module from github.com/goplus/spx/v2 to github.com/goplus/spx/v3.
What's Changed
Features
Published the SPX Web runtime to npm by @nighca in #1660
Added deterministic frame capture support by @joeykchen in #1663
Added input recording and replay for Web capture regression testing by @joeykchen in #1679
Switched warp execution to the XGo decorator model by @joeykchen in #1693
Fixes
Packaged SVG symbol and emoji fallback fonts by @joeykchen in #1651
Trimmed the bundled emoji fallback and removed the symbols font by @joeykchen in #1654
Cleared graphic effects when stopping all scripts by @joeykchen in #1655
Reduced the bundled emoji fallback to the required heart glyph by @joeykchen in #1658
Preserved hidden sprite bounds and clamped edge bouncing by @joeykchen in #1659
Aligned sprite fence handling and size limits by @joeykchen in #1662
Aligned bootstrap sprite startup timing by @joeykchen in #1669
Yielded callers during eager coroutine startup by @joeykchen in #1670
Warned when main execution exceeds its timeout by @joeykchen in #1671
Preserved ZOrder while releasing bootstrap after the initial Main yield by @joeykchen in #1672
Disabled GDExtensions during Godot imports by @joeykchen in #1680
Hardened coroutine wake-ups and shared state handling by @joeykchen in #1682
Enhanced ResolveCostumeIndex behavior and added unit tests by @go-wyvern in #1685
Correctly guarded the action-pressed callback by @joeykchen in #1686
Trimmed trailing whitespace from generated Godot JavaScript by @joeykchen in #1692
Compatibility
Migrated the Go module and import paths from github.com/goplus/spx/v2 to github.com/goplus/spx/v3. Downstream Go and XGo projects must update their module references and imports accordingly.
Replaced the reflection-based warp wrapper with XGo decorator support. Projects should use the new @spx.Warp form.
Temporarily excluded Builder AI integration from the v3 Web interpreter because its current upstream module still depends on SPX v2.
Bundled the spx2.2.6 Godot runtime, including glyph-aware SVG fallback selection, color emoji rendering, Scratch-compatible SVG MIP scaling, and refreshed generated Web bindings.
Refactors
Routed synchronous event dispatch through coroutines by @joeykchen in #1664
Simplified deterministic frame capture flow by @joeykchen in #1666