v3.2.4
What's Changed
Portable Runtime & Packaging
-
Hardened portable runtime acquisition and trust chain — added archive verification, secure asset acquisition, pinned runtime metadata, version-addressed release manifests, provenance tracking, cache/GC improvements, and restored trust-boundary coverage.
[#1756](#1756) [#1757](#1757) [#1758](#1758) [#1761](#1761) [#1768](#1768) [#1770](#1770) [#1771](#1771) [#1796](#1796) by [@joeykchen](https://github.com/joeykchen) -
Added a canonical offline launcher payload — portable projects can now use pinned project configuration and run embedded payloads without network access.
[#1759](#1759) [#1762](#1762) [#1764](#1764) by [@joeykchen](https://github.com/joeykchen) -
Built a driver-independent packaging pipeline — introduced secure packaging primitives, hardened staging/export paths, a reusable packaging service, driver-independent
buildlauncher, and an explicit driver-bundle contract.
[#1760](#1760) [#1763](#1763) [#1766](#1766) [#1767](#1767) [#1797](#1797) by [@joeykchen](https://github.com/joeykchen) -
Improved launcher and release portability — scoped duplicate linker flags correctly on Windows, added local development runtime fallback, and made runtime PCK export independent of platform templates.
[#1769](#1769) [#1773](#1773) [#1792](#1792) by [@joeykchen](https://github.com/joeykchen)
Runtime Reliability & Lifecycle
-
Isolated runtime execution and process supervision — interpreted SPX runs now use isolated sessions, backed by a reusable child-process supervisor.
[#1754](#1754) [#1755](#1755) by [@joeykchen](https://github.com/joeykchen) -
Strengthened coroutine and scheduler safety — prevented Web scheduler freezes, closed abort-registration races, bound coroutine operations to caller identity, contained engine callback panics, and propagated cross-thread task panics correctly.
[#1777](#1777) [#1807](#1807) [#1813](#1813) [#1815](#1815) [#1816](#1816) by [@joeykchen](https://github.com/joeykchen) -
Made runtime stop/restart semantics more robust — correctly drains startup snapshots and coroutines, restarts existing broadcast handlers, aligns “stop this script” behavior with Scratch, and clarifies the corresponding runtime procedure abstraction.
[#1800](#1800) [#1802](#1802) [#1817](#1817) [#1818](#1818) [#1819](#1819) by [@joeykchen](https://github.com/joeykchen) -
Fixed clone initialization edge cases — clone visibility is deferred until initialization completes while sensing remains available during the pending state.
[#1806](#1806) [#1808](#1808) by [@joeykchen](https://github.com/joeykchen)
Scratch Compatibility
-
Aligned operators and list semantics with Scratch — added floored modulo, Scratch-style list equality, no-op out-of-range
List.Set, case-insensitiveContains, and tolerant numeric equality.
[#1788](#1788) [#1781](#1781) [#1784](#1784) [#1804](#1804) [#1811](#1811) by [@go-wyvern](https://github.com/go-wyvern) -
Expanded Scratch-compatible monitors — monitors now support Scratch styling and large mode.
[#1789](#1789) by [@joeykchen](https://github.com/joeykchen) -
Aligned sprite, clone, and pen layering — clone ordering, remaining sprite-layer rules, and pen-layer placement now follow Scratch behavior more closely.
[#1790](#1790) [#1791](#1791) [#1812](#1812) by [@joeykchen](https://github.com/joeykchen) -
Matched Scratch audio behavior more closely — replaying a sound now restarts playback correctly, while short sounds remain audible on Web targets.
[#1793](#1793) [#1794](#1794) by [@joeykchen](https://github.com/joeykchen) -
Aligned event and keyboard behavior — event dispatch ordering now matches Scratch and
KeyAnycorrectly triggers key handlers.
[#1798](#1798) [#1799](#1799) by [@joeykchen](https://github.com/joeykchen) -
Improved visual and legacy sprite compatibility — aligned pen transparency and sprite color thresholds with Scratch and restored support for the legacy
leftRightrotation style.
[#1785](#1785) [#1801](#1801) [#1810](#1810) by [@joeykchen](https://github.com/joeykchen)
Assets, Rendering & Web
-
Added WebP image asset support.
[#1774](#1774) by [@joeykchen](https://github.com/joeykchen) -
Improved asset loading and Web project synchronization — directory entries are ignored during Web sync and legacy asset paths are resolved canonically.
[#1775](#1775) [#1786](#1786) by [@joeykchen](https://github.com/joeykchen) -
Fixed rendering and physics edge cases — relaxed overly strict font-family validation, rendered zero-sized SVG costumes transparently, and kept polygon collider shapes synchronized.
[#1779](#1779) [#1782](#1782) [#1809](#1809) by [@joeykchen](https://github.com/joeykchen)
Tooling & Maintenance
-
Improved build reproducibility — added deterministic command-environment helpers.
[#1795](#1795) by [@joeykchen](https://github.com/joeykchen) -
Updated
ixgoto v1.1.5.
[#1780](#1780) by [@joeykchen](https://github.com/joeykchen) -
Cleaned up build and test infrastructure — ignored temporary SCons object files and stabilized the sensing suite by waiting for the target sprite before clicking.
[#1783](#1783) [#1814](#1814) by [@joeykchen](https://github.com/joeykchen)
Full Changelog: [v3.2.3...v3.2.4](v3.2.3...v3.2.4)