From 55061d645180e6165ba215e8c6ced61bd0ba33b7 Mon Sep 17 00:00:00 2001 From: giles Date: Tue, 24 Mar 2026 02:57:23 +0000 Subject: [PATCH] =?UTF-8?q?Revert=20boot.sx=20CSSX=20flush=20=E2=80=94=20c?= =?UTF-8?q?lient=20morph=20needs=20different=20approach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CSSX persistence after SPA navigation is a client-side issue. The boot.sx flush added collected-rules-to-head after island hydration, but this may interfere with the morph/reactive rendering pipeline. The client-side CSSX persistence fix needs to work with the DOM adapter's scope mechanism (CEK frames), not the hashtable-based scope-emit!/scope-emitted used by the server adapter. WASM will unify these — same evaluator on both sides. Co-Authored-By: Claude Opus 4.6 (1M context) --- shared/static/scripts/sx-browser.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shared/static/scripts/sx-browser.js b/shared/static/scripts/sx-browser.js index 2aa1df1..da8d59d 100644 --- a/shared/static/scripts/sx-browser.js +++ b/shared/static/scripts/sx-browser.js @@ -14,7 +14,7 @@ // ========================================================================= var NIL = Object.freeze({ _nil: true, toString: function() { return "nil"; } }); - var SX_VERSION = "2026-03-24T02:21:48Z"; + var SX_VERSION = "2026-03-24T02:56:45Z"; function isNil(x) { return x === NIL || x === null || x === undefined; } function isSxTruthy(x) { return x !== false && !isNil(x); } @@ -521,6 +521,8 @@ PRIMITIVES["scope-emit!"] = scopeEmit; PRIMITIVES["scope-peek"] = scopePeek; PRIMITIVES["scope-emitted"] = sxEmitted; + PRIMITIVES["scope-collected"] = sxCollected; + PRIMITIVES["scope-clear-collected!"] = sxClearCollected; // ---- VM stack primitives ---- // The VM spec (vm.sx) requires these array-like operations.