Restructure SX docs nav into 4 top-level sections with nested routing
New hierarchy: Geography (Reactive Islands, Hypermedia Lakes, Marshes, Isomorphism), Language (Docs, Specs, Bootstrappers, Testing), Applications (CSSX, Protocols), Etc (Essays, Philosophy, Plans). All routes updated to match: /reactive/* → /geography/reactive/*, /docs/* → /language/docs/*, /essays/* → /etc/essays/*, etc. Updates nav-data.sx, all defpage routes, API endpoints, internal links across 43 files. Enhanced find-nav-match for nested group resolution. Also includes: page-helpers-demo sf-total fix (reduce instead of set!), rebootstrapped sx-browser.js and sx_ref.py, defensive slice/rest guards. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -28,36 +28,36 @@
|
||||
(tbody
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/parser" :class "hover:underline"
|
||||
:sx-get "/specs/parser" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/parser" :class "hover:underline"
|
||||
:sx-get "/language/specs/parser" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"parser.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Tokenization and parsing of SX source text into AST"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/evaluator" :class "hover:underline"
|
||||
:sx-get "/specs/evaluator" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/evaluator" :class "hover:underline"
|
||||
:sx-get "/language/specs/evaluator" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"eval.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Tree-walking evaluation of SX expressions"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/primitives" :class "hover:underline"
|
||||
:sx-get "/specs/primitives" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/primitives" :class "hover:underline"
|
||||
:sx-get "/language/specs/primitives" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"primitives.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "All built-in pure functions and their signatures"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/special-forms" :class "hover:underline"
|
||||
:sx-get "/specs/special-forms" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/special-forms" :class "hover:underline"
|
||||
:sx-get "/language/specs/special-forms" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"special-forms.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "All special forms — syntactic constructs with custom evaluation rules"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/renderer" :class "hover:underline"
|
||||
:sx-get "/specs/renderer" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/renderer" :class "hover:underline"
|
||||
:sx-get "/language/specs/renderer" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"render.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Shared rendering registries and utilities used by all adapters"))))))
|
||||
@@ -75,24 +75,24 @@
|
||||
(tbody
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/adapter-dom" :class "hover:underline"
|
||||
:sx-get "/specs/adapter-dom" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/adapter-dom" :class "hover:underline"
|
||||
:sx-get "/language/specs/adapter-dom" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"adapter-dom.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Live DOM nodes")
|
||||
(td :class "px-3 py-2 text-stone-500" "Browser"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/adapter-html" :class "hover:underline"
|
||||
:sx-get "/specs/adapter-html" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/adapter-html" :class "hover:underline"
|
||||
:sx-get "/language/specs/adapter-html" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"adapter-html.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "HTML strings")
|
||||
(td :class "px-3 py-2 text-stone-500" "Server"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/adapter-sx" :class "hover:underline"
|
||||
:sx-get "/specs/adapter-sx" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/adapter-sx" :class "hover:underline"
|
||||
:sx-get "/language/specs/adapter-sx" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"adapter-sx.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "SX wire format")
|
||||
@@ -116,15 +116,15 @@
|
||||
(tbody
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/engine" :class "hover:underline"
|
||||
:sx-get "/specs/engine" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/engine" :class "hover:underline"
|
||||
:sx-get "/language/specs/engine" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"engine.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Pure logic — trigger parsing, swap algorithms, morph, history, SSE, indicators"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/orchestration" :class "hover:underline"
|
||||
:sx-get "/specs/orchestration" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/orchestration" :class "hover:underline"
|
||||
:sx-get "/language/specs/orchestration" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"orchestration.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Browser wiring — binds engine to DOM events, fetch, request lifecycle"))))))
|
||||
@@ -145,15 +145,15 @@
|
||||
(tbody
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/boot" :class "hover:underline"
|
||||
:sx-get "/specs/boot" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/boot" :class "hover:underline"
|
||||
:sx-get "/language/specs/boot" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"boot.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Browser startup lifecycle — mount, hydrate, script processing, head hoisting"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/cssx" :class "hover:underline"
|
||||
:sx-get "/specs/cssx" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/cssx" :class "hover:underline"
|
||||
:sx-get "/language/specs/cssx" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"cssx.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "On-demand CSS — style dictionary, keyword resolution, rule injection"))))))
|
||||
@@ -198,16 +198,16 @@ router.sx (standalone — pure string/list ops)")))
|
||||
(tbody
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/continuations" :class "hover:underline"
|
||||
:sx-get "/specs/continuations" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/continuations" :class "hover:underline"
|
||||
:sx-get "/language/specs/continuations" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"continuations.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Delimited continuations — shift/reset")
|
||||
(td :class "px-3 py-2 text-stone-500" "All targets"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/specs/callcc" :class "hover:underline"
|
||||
:sx-get "/specs/callcc" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
(a :href "/language/specs/callcc" :class "hover:underline"
|
||||
:sx-get "/language/specs/callcc" :sx-target "#main-panel" :sx-select "#main-panel"
|
||||
:sx-swap "outerHTML" :sx-push-url "true"
|
||||
"callcc.sx"))
|
||||
(td :class "px-3 py-2 text-stone-700" "Full first-class continuations — call/cc")
|
||||
@@ -306,21 +306,21 @@ router.sx (standalone — pure string/list ops)")))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 text-stone-700" "JavaScript")
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/bootstrappers/javascript" :class "hover:underline"
|
||||
(a :href "/language/bootstrappers/javascript" :class "hover:underline"
|
||||
"bootstrap_js.py"))
|
||||
(td :class "px-3 py-2 font-mono text-sm text-stone-500" "sx-browser.js")
|
||||
(td :class "px-3 py-2 text-green-600" "Live"))
|
||||
(tr :class "border-b border-stone-100"
|
||||
(td :class "px-3 py-2 text-stone-700" "Python")
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/bootstrappers/python" :class "hover:underline"
|
||||
(a :href "/language/bootstrappers/python" :class "hover:underline"
|
||||
"bootstrap_py.py"))
|
||||
(td :class "px-3 py-2 font-mono text-sm text-stone-500" "sx_ref.py")
|
||||
(td :class "px-3 py-2 text-green-600" "Live"))
|
||||
(tr :class "border-b border-stone-100 bg-green-50"
|
||||
(td :class "px-3 py-2 text-stone-700" "Python (self-hosting)")
|
||||
(td :class "px-3 py-2 font-mono text-sm text-violet-700"
|
||||
(a :href "/bootstrappers/self-hosting" :class "hover:underline"
|
||||
(a :href "/language/bootstrappers/self-hosting" :class "hover:underline"
|
||||
"py.sx"))
|
||||
(td :class "px-3 py-2 font-mono text-sm text-stone-500" "sx_ref.py")
|
||||
(td :class "px-3 py-2 text-green-600" "G0 == G1"))
|
||||
|
||||
Reference in New Issue
Block a user