Fix signal-add-sub! losing subscribers after remove, fix build pipeline
signal-add-sub! used (append! subscribers f) which returns a new list for immutable List but discards the result — after signal-remove-sub! replaces the subscribers list via dict-set!, re-adding subscribers silently fails. Counter island only worked once (0→1 then stuck). Fix: use (dict-set! s "subscribers" (append ...)) to explicitly update the dict field, matching signal-remove-sub!'s pattern. Build pipeline fixes: - sx-build-all.sh now bundles spec→dist and recompiles .sxbc bytecode - compile-modules.js syncs .sx source files alongside .sxbc to wasm/sx/ - Per-file cache busting: wasm, platform JS, and sxbc each get own hash - bundle.sh adds cssx.sx to dist Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -190,7 +190,8 @@ class OcamlBridge:
|
||||
# Only inject small, safe values as kernel variables.
|
||||
# Large/complex blobs use placeholder tokens at render time.
|
||||
for key in ("component_hash", "sx_css_classes", "asset_url",
|
||||
"sx_js_hash", "body_js_hash", "wasm_hash"):
|
||||
"sx_js_hash", "body_js_hash", "wasm_hash",
|
||||
"platform_hash", "sxbc_hash"):
|
||||
val = static.get(key) or ""
|
||||
var = f"__shell-{key.replace('_', '-')}"
|
||||
defn = f'(define {var} "{_escape(str(val))}")'
|
||||
@@ -269,6 +270,7 @@ class OcamlBridge:
|
||||
placeholders = {}
|
||||
static_keys = {"component_hash", "sx_css_classes", "asset_url",
|
||||
"sx_js_hash", "body_js_hash", "wasm_hash",
|
||||
"platform_hash", "sxbc_hash",
|
||||
"head_scripts", "body_scripts"}
|
||||
# page_source is SX wire format that may contain \" escapes.
|
||||
# Send via binary blob protocol to avoid double-escaping
|
||||
|
||||
Reference in New Issue
Block a user