Fix thunk handling for island SSR + effect no-op on server
- trampoline resolves Thunk values (sf-letrec returns them for TCO) - render-to-html handles "thunk" type by unwrapping expr+env - effect overridden to no-op after loading signals.sx (prevents reactive loops during SSR — effects are DOM side-effects) - Added thunk?/thunk-expr/thunk-env primitives - Added DOM API stubs for SSR (dom-query, schedule-idle, etc.) Header island renders fully with styling. Stepper island still fails SSR (letrec + complex body hits "Undefined symbol: div" in eval path — render mode not active during CEK letrec eval). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -439,6 +439,15 @@ class OcamlBridge:
|
||||
skipped += 1
|
||||
_logger.warning("OCaml load skipped %s: %s",
|
||||
filepath, e)
|
||||
# SSR overrides: effect is a no-op on the server (prevents
|
||||
# reactive loops during island SSR — effects are DOM side-effects)
|
||||
try:
|
||||
noop_dispose = '(fn () nil)'
|
||||
await self._send(f'(load-source "(define effect (fn (f) {noop_dispose}))")')
|
||||
await self._read_until_ok(ctx=None)
|
||||
except OcamlBridgeError:
|
||||
pass
|
||||
|
||||
# Register JIT hook — lambdas compile on first call
|
||||
try:
|
||||
await self._send('(vm-compile-adapter)')
|
||||
|
||||
Reference in New Issue
Block a user