htmx demos working: activation, fetch, swap, OOB filtering, test runner page

- htmx-boot-subtree! wired into process-elements for auto-activation
- Fixed cond compilation bug in hx-verb-info (Clojure-style flat cond)
- Platform io-fetch upgraded: method/body/headers support, full response dict
- Replaced perform IO ops with browser primitives (set-timeout, browser-confirm, etc)
- SX→HTML rendering in hx-do-swap with OOB section filtering
- hx-collect-params: collects input name/value for all methods
- Handler naming: ex-{slug} convention, removed perform IO dependencies
- Test runner page at (test.(applications.(htmx))) with iframe-based runner
- Header "test" link on every page linking to test URL
- Page file restructure: 285 files moved to URL-matching paths (a/b/c/index.sx)
- page-functions.sx: ~100 component name references updated
- _test added to skip_dirs, test- file prefix convention for test files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-15 11:56:15 +00:00
parent 4f02f82f4e
commit 4aa49e42e8
16 changed files with 3201 additions and 1562 deletions

View File

@@ -415,6 +415,14 @@
(swap-dom-nodes t oob s)
(post-swap t)))
(hoist-head-elements container)
(let
((manifest-el (dom-query-in container "script[data-sx-manifest]")))
(when
manifest-el
(host-call
(host-global "Sx")
"mergeManifest"
manifest-el)))
(let
((html (select-from-container container select-sel)))
(with-transition
@@ -1547,7 +1555,8 @@
(process-sse root)
(bind-inline-handlers root)
(process-emit-elements root)
(hs-boot-subtree! (or root (host-global "document")))))
(hs-boot-subtree! (or root (host-global "document")))
(htmx-boot-subtree! (or root (host-global "document")))))
(define
process-one
:effects (mutation io)
@@ -1622,9 +1631,11 @@
(pathname (url-pathname url)))
(when
target
(let
((headers (dict "SX-Request" "true")))
(fetch-and-restore target url headers scrollY))))))
(when
(not (try-client-route pathname target-sel))
(let
((headers (build-request-headers target (loaded-component-names))))
(fetch-and-restore target url headers scrollY)))))))
(define
engine-init
:effects (mutation io)