Uncommitted sx-tools changes: WASM bundles, Playwright specs, engine fixes

WASM browser bundles rebuilt with latest kernel. Playwright test specs
updated (helpers, navigation, handler-responses, hypermedia-handlers,
isomorphic, SPA navigation). Engine/boot/orchestration SX files updated.
Handler examples and not-found page refreshed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 18:58:38 +00:00
parent 14d5158b06
commit 6d5c410d68
28 changed files with 375 additions and 171 deletions

View File

@@ -358,7 +358,39 @@
content
(dom-set-inner-html main (host-get content "innerHTML"))
(dom-set-inner-html main text)))
(dom-set-inner-html main text)))
(let
((container (dom-create-element "div")))
(let
((rendered (sx-render text)))
(when
rendered
(dom-append container rendered)
(process-oob-swaps
container
(fn
(t oob (s :as string))
(dispose-islands-in t)
(swap-dom-nodes
t
(if
(= s "innerHTML")
(children-to-fragment oob)
oob)
s)
(post-swap t)))
(let
((content (select-from-container container "#sx-content")))
(if
content
(do
(dispose-islands-in main)
(dom-set-inner-html main "")
(dom-append main content))
(do
(dispose-islands-in main)
(dom-set-inner-html
main
(dom-get-inner-html container))))))))))
(post-swap main)
(host-call (dom-window) "scrollTo" 0 scroll-y)))
(fn (err) (log-warn (str "fetch-and-restore error: " err))))))

File diff suppressed because one or more lines are too long

View File

@@ -361,9 +361,14 @@
(=
(dom-get-attr old-node "data-sx-island")
(dom-get-attr new-node "data-sx-island")))
(do
(let
((old-state (dom-get-attr old-node "data-sx-state"))
(new-state (dom-get-attr new-node "data-sx-state")))
(sync-attrs old-node new-node)
(morph-island-children old-node new-node))
(if
(and new-state (not (= old-state new-state)))
(do (dispose-island old-node) (hydrate-island old-node))
(morph-island-children old-node new-node)))
(or
(not (= (dom-node-type old-node) (dom-node-type new-node)))
(not (= (dom-node-name old-node) (dom-node-name new-node))))

File diff suppressed because one or more lines are too long

View File

@@ -572,9 +572,7 @@
(and settle-expr (not (empty? settle-expr)))
(let
((exprs (sx-parse settle-expr)))
(for-each
(fn (expr) (eval-expr expr (env-extend (dict))))
exprs))))))
(for-each (fn (expr) (cek-eval expr)) exprs))))))
(define
activate-scripts
@@ -1585,12 +1583,9 @@
(pathname (url-pathname url)))
(when
target
(if
(try-client-route pathname target-sel)
(browser-scroll-to 0 scrollY)
(let
((headers (dict "SX-History-Restore" "true")))
(fetch-and-restore target url headers scrollY)))))))
(let
((headers (dict "SX-Request" "true")))
(fetch-and-restore target url headers scrollY))))))
(define
engine-init

File diff suppressed because one or more lines are too long