sx-tools: WASM kernel updates, TW/CSSX rework, content refresh, new debugging tools
Build tooling: updated OCaml bootstrapper, compile-modules, bundle.sh, sx-build-all. WASM browser: rebuilt sx_browser.bc.js/wasm, sx-platform-2.js, .sxbc bytecode files. CSSX/Tailwind: reworked cssx.sx templates and tw-layout, added tw-type support. Content: refreshed essays, plans, geography, reactive islands, docs, demos, handlers. New tools: bisect_sxbc.sh, test-spa.js, render-trace.sx, morph playwright spec. Tests: added test-match.sx, test-examples.sx, updated test-tw.sx and web tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
:id "how"
|
||||
(p "Three components:")
|
||||
(ol
|
||||
:class "space-y-2 text-stone-600 list-decimal list-inside"
|
||||
(~tw :tokens "space-y-2 text-stone-600 list-decimal list-inside")
|
||||
(li
|
||||
(strong "Server emits: ")
|
||||
"Server-rendered elements carry "
|
||||
@@ -59,7 +59,7 @@
|
||||
(p
|
||||
"Signals live in JavaScript memory (closures), not in the DOM. When htmx swaps content inside an island:")
|
||||
(ul
|
||||
:class "space-y-2 text-stone-600 list-disc pl-5"
|
||||
(~tw :tokens "space-y-2 text-stone-600 list-disc pl-5")
|
||||
(li
|
||||
(strong "Swap inside island: ")
|
||||
"Signals survive. The lake content is replaced but the island's signal closures are untouched. Effects re-bind to new DOM nodes if needed.")
|
||||
@@ -78,7 +78,7 @@
|
||||
:sx-select "#sx-content"
|
||||
:sx-swap "outerHTML"
|
||||
:sx-push-url "true"
|
||||
:class "text-violet-700 underline"
|
||||
(~tw :tokens "text-violet-700 underline")
|
||||
"named stores")
|
||||
" come in — they persist at page level, surviving island destruction.")))
|
||||
(~docs/section
|
||||
@@ -94,35 +94,35 @@
|
||||
"lisp"))
|
||||
(p "Platform interface required:")
|
||||
(div
|
||||
:class "overflow-x-auto rounded border border-stone-200 mt-2"
|
||||
(~tw :tokens "overflow-x-auto rounded border border-stone-200 mt-2")
|
||||
(table
|
||||
:class "w-full text-left text-sm"
|
||||
(~tw :tokens "w-full text-left text-sm")
|
||||
(thead
|
||||
(tr
|
||||
:class "border-b border-stone-200 bg-stone-100"
|
||||
(th :class "px-3 py-2 font-medium text-stone-600" "Function")
|
||||
(th :class "px-3 py-2 font-medium text-stone-600" "Description")))
|
||||
(~tw :tokens "border-b border-stone-200 bg-stone-100")
|
||||
(th (~tw :tokens "px-3 py-2 font-medium text-stone-600") "Function")
|
||||
(th (~tw :tokens "px-3 py-2 font-medium text-stone-600") "Description")))
|
||||
(tbody
|
||||
(tr
|
||||
:class "border-b border-stone-100"
|
||||
(~tw :tokens "border-b border-stone-100")
|
||||
(td
|
||||
:class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(~tw :tokens "px-3 py-2 font-mono text-sm text-violet-700")
|
||||
"(dom-listen el name handler)")
|
||||
(td
|
||||
:class "px-3 py-2 text-stone-700"
|
||||
(~tw :tokens "px-3 py-2 text-stone-700")
|
||||
"Attach event listener, return remove function"))
|
||||
(tr
|
||||
:class "border-b border-stone-100"
|
||||
(~tw :tokens "border-b border-stone-100")
|
||||
(td
|
||||
:class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(~tw :tokens "px-3 py-2 font-mono text-sm text-violet-700")
|
||||
"(dom-dispatch el name detail)")
|
||||
(td
|
||||
:class "px-3 py-2 text-stone-700"
|
||||
(~tw :tokens "px-3 py-2 text-stone-700")
|
||||
"Dispatch CustomEvent with detail, bubbles: true"))
|
||||
(tr
|
||||
(td
|
||||
:class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(~tw :tokens "px-3 py-2 font-mono text-sm text-violet-700")
|
||||
"(event-detail e)")
|
||||
(td
|
||||
:class "px-3 py-2 text-stone-700"
|
||||
(~tw :tokens "px-3 py-2 text-stone-700")
|
||||
"Extract .detail from CustomEvent"))))))))
|
||||
|
||||
Reference in New Issue
Block a user