Fix island hydration double-render bug, add marshes plan

Client-rendered islands were re-hydrated by boot.sx because
renderDomIsland didn't mark them as processed. Hydration read
empty data-sx-state, overwriting kwargs (e.g. path) with NIL.
Fix: mark-processed! in adapter-dom.sx so boot skips them.

New plan: marshes — where reactivity and hypermedia interpenetrate.
Three patterns: server writes to signals, reactive marsh zones with
transforms, and signal-bound hypermedia interpretation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 15:53:44 +00:00
parent b8c5426093
commit e149dfe968
5 changed files with 282 additions and 2 deletions

View File

@@ -637,8 +637,9 @@
(let ((container (dom-create-element "span" nil))
(disposers (list)))
;; Mark as island
;; Mark as island + already hydrated (so boot.sx skips it)
(dom-set-attr container "data-sx-island" island-name)
(mark-processed! container "island-hydrated")
;; Render island body inside a scope that tracks disposers
(let ((body-dom