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

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

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)

File diff suppressed because one or more lines are too long