Prefix all SX URLs with /sx/ for WhatsApp-safe sharing
All routes moved under /sx/ prefix: - / redirects to /sx/ - /sx/ serves home page - /sx/<path:expr> is the catch-all for SX expression URLs - Bare /(...) and /~... redirect to /sx/(...) and /sx/~... - All ~600 hrefs, sx-get attrs, defhandler paths, redirect targets, and blueprint routes updated across 44 files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
:path "/language/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(language)"))
|
||||
:content (~sx-doc :path "/sx/(language)"))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Docs section (under Language)
|
||||
@@ -31,13 +31,13 @@
|
||||
:path "/language/docs/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(language.(doc))" (~docs-introduction-content)))
|
||||
:content (~sx-doc :path "/sx/(language.(doc))" (~docs-introduction-content)))
|
||||
|
||||
(defpage docs-page
|
||||
:path "/language/docs/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(language.(doc." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(language.(doc." slug "))")
|
||||
(case slug
|
||||
"introduction" (~docs-introduction-content)
|
||||
"getting-started" (~docs-getting-started-content)
|
||||
@@ -58,20 +58,20 @@
|
||||
:path "/geography/hypermedia/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(hypermedia))"))
|
||||
:content (~sx-doc :path "/sx/(geography.(hypermedia))"))
|
||||
|
||||
(defpage reference-index
|
||||
:path "/geography/hypermedia/reference/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(hypermedia.(reference)))" (~reference-index-content)))
|
||||
:content (~sx-doc :path "/sx/(geography.(hypermedia.(reference)))" (~reference-index-content)))
|
||||
|
||||
(defpage reference-page
|
||||
:path "/geography/hypermedia/reference/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (reference-data slug)
|
||||
:content (~sx-doc :path (str "/(geography.(hypermedia.(reference." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(hypermedia.(reference." slug ")))")
|
||||
(case slug
|
||||
"attributes" (~reference-attrs-content
|
||||
:req-table (~doc-attr-table-from-data :title "Request Attributes" :attrs req-attrs)
|
||||
@@ -98,7 +98,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (attr-detail-data slug)
|
||||
:content (~sx-doc :path (str "/(geography.(hypermedia.(reference-detail.attributes." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(hypermedia.(reference-detail.attributes." slug ")))")
|
||||
(if attr-not-found
|
||||
(~reference-attr-not-found :slug slug)
|
||||
(~reference-attr-detail-content
|
||||
@@ -114,7 +114,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (header-detail-data slug)
|
||||
:content (~sx-doc :path (str "/(geography.(hypermedia.(reference-detail.headers." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(hypermedia.(reference-detail.headers." slug ")))")
|
||||
(if header-not-found
|
||||
(~reference-attr-not-found :slug slug)
|
||||
(~reference-header-detail-content
|
||||
@@ -129,7 +129,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (event-detail-data slug)
|
||||
:content (~sx-doc :path (str "/(geography.(hypermedia.(reference-detail.events." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(hypermedia.(reference-detail.events." slug ")))")
|
||||
(if event-not-found
|
||||
(~reference-attr-not-found :slug slug)
|
||||
(~reference-event-detail-content
|
||||
@@ -146,7 +146,7 @@
|
||||
:path "/applications/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(applications)"))
|
||||
:content (~sx-doc :path "/sx/(applications)"))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Protocols section (under Applications)
|
||||
@@ -156,13 +156,13 @@
|
||||
:path "/applications/protocols/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(applications.(protocol))" (~protocol-wire-format-content)))
|
||||
:content (~sx-doc :path "/sx/(applications.(protocol))" (~protocol-wire-format-content)))
|
||||
|
||||
(defpage protocol-page
|
||||
:path "/applications/protocols/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(applications.(protocol." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(applications.(protocol." slug "))")
|
||||
(case slug
|
||||
"wire-format" (~protocol-wire-format-content)
|
||||
"fragments" (~protocol-fragments-content)
|
||||
@@ -180,13 +180,13 @@
|
||||
:path "/geography/hypermedia/examples/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(hypermedia.(example)))"))
|
||||
:content (~sx-doc :path "/sx/(geography.(hypermedia.(example)))"))
|
||||
|
||||
(defpage examples-page
|
||||
:path "/geography/hypermedia/examples/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(geography.(hypermedia.(example." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(hypermedia.(example." slug ")))")
|
||||
(case slug
|
||||
"click-to-load" (~example-click-to-load)
|
||||
"form-submission" (~example-form-submission)
|
||||
@@ -225,7 +225,7 @@
|
||||
:path "/etc/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(etc)"))
|
||||
:content (~sx-doc :path "/sx/(etc)"))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Essays section (under Etc)
|
||||
@@ -235,13 +235,13 @@
|
||||
:path "/etc/essays/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(etc.(essay))" (~essays-index-content)))
|
||||
:content (~sx-doc :path "/sx/(etc.(essay))" (~essays-index-content)))
|
||||
|
||||
(defpage essay-page
|
||||
:path "/etc/essays/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(etc.(essay." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(etc.(essay." slug "))")
|
||||
(case slug
|
||||
"sx-sucks" (~essay-sx-sucks)
|
||||
"why-sexps" (~essay-why-sexps)
|
||||
@@ -271,13 +271,13 @@
|
||||
:path "/etc/philosophy/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(etc.(philosophy))" (~philosophy-index-content)))
|
||||
:content (~sx-doc :path "/sx/(etc.(philosophy))" (~philosophy-index-content)))
|
||||
|
||||
(defpage philosophy-page
|
||||
:path "/etc/philosophy/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(etc.(philosophy." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(etc.(philosophy." slug "))")
|
||||
(case slug
|
||||
"sx-manifesto" (~essay-sx-manifesto)
|
||||
"godel-escher-bach" (~essay-godel-escher-bach)
|
||||
@@ -294,13 +294,13 @@
|
||||
:path "/applications/cssx/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(applications.(cssx))" (~cssx-overview-content)))
|
||||
:content (~sx-doc :path "/sx/(applications.(cssx))" (~cssx-overview-content)))
|
||||
|
||||
(defpage cssx-page
|
||||
:path "/applications/cssx/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(applications.(cssx." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(applications.(cssx." slug "))")
|
||||
(case slug
|
||||
"patterns" (~cssx-patterns-content)
|
||||
"delivery" (~cssx-delivery-content)
|
||||
@@ -318,18 +318,18 @@
|
||||
:path "/language/specs/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(language.(spec))" (~spec-architecture-content)))
|
||||
:content (~sx-doc :path "/sx/(language.(spec))" (~spec-architecture-content)))
|
||||
|
||||
(defpage specs-page
|
||||
:path "/language/specs/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(language.(spec." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(language.(spec." slug "))")
|
||||
(let ((make-spec-files (fn (items)
|
||||
(map (fn (item)
|
||||
(dict :title (get item "title") :desc (get item "desc")
|
||||
:prose (get item "prose")
|
||||
:filename (get item "filename") :href (str "/(language.(spec." (get item "slug") "))")
|
||||
:filename (get item "filename") :href (str "/sx/(language.(spec." (get item "slug") "))")
|
||||
:source (read-spec-file (get item "filename"))))
|
||||
items))))
|
||||
(case slug
|
||||
@@ -369,7 +369,7 @@
|
||||
:path "/language/specs/explore/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(language.(spec.(explore." slug ")))")
|
||||
:content (~sx-doc :path (str "/sx/(language.(spec.(explore." slug ")))")
|
||||
(let ((spec (find-spec slug)))
|
||||
(if spec
|
||||
(let ((data (spec-explorer-data
|
||||
@@ -389,14 +389,14 @@
|
||||
:path "/language/bootstrappers/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(language.(bootstrapper))" (~bootstrappers-index-content)))
|
||||
:content (~sx-doc :path "/sx/(language.(bootstrapper))" (~bootstrappers-index-content)))
|
||||
|
||||
(defpage bootstrapper-page
|
||||
:path "/language/bootstrappers/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (bootstrapper-data slug)
|
||||
:content (~sx-doc :path (str "/(language.(bootstrapper." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(language.(bootstrapper." slug "))")
|
||||
(if bootstrapper-not-found
|
||||
(~spec-not-found :slug slug)
|
||||
(case slug
|
||||
@@ -434,14 +434,14 @@
|
||||
:path "/geography/isomorphism/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(isomorphism))" (~plan-isomorphic-content)))
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism))" (~plan-isomorphic-content)))
|
||||
|
||||
(defpage bundle-analyzer
|
||||
:path "/geography/isomorphism/bundle-analyzer"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (bundle-analyzer-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.bundle-analyzer))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.bundle-analyzer))"
|
||||
(~bundle-analyzer-content
|
||||
:pages pages :total-components total-components :total-macros total-macros
|
||||
:pure-count pure-count :io-count io-count)))
|
||||
@@ -451,7 +451,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (routing-analyzer-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.routing-analyzer))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.routing-analyzer))"
|
||||
(~routing-analyzer-content
|
||||
:pages pages :total-pages total-pages :client-count client-count
|
||||
:server-count server-count :registry-sample registry-sample)))
|
||||
@@ -461,7 +461,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (data-test-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.data-test))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.data-test))"
|
||||
(~data-test-content
|
||||
:server-time server-time :items items
|
||||
:phase phase :transport transport)))
|
||||
@@ -470,14 +470,14 @@
|
||||
:path "/geography/isomorphism/async-io"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.async-io))" (~async-io-demo-content)))
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.async-io))" (~async-io-demo-content)))
|
||||
|
||||
(defpage streaming-demo
|
||||
:path "/geography/isomorphism/streaming"
|
||||
:auth :public
|
||||
:stream true
|
||||
:layout :sx-docs
|
||||
:shell (~sx-doc :path "/(geography.(isomorphism.streaming))"
|
||||
:shell (~sx-doc :path "/sx/(geography.(isomorphism.streaming))"
|
||||
(~streaming-demo-layout
|
||||
(~suspense :id "stream-fast" :fallback (~stream-skeleton))
|
||||
(~suspense :id "stream-medium" :fallback (~stream-skeleton))
|
||||
@@ -494,7 +494,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (affinity-demo-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.affinity))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.affinity))"
|
||||
(~affinity-demo-content :components components :page-plans page-plans)))
|
||||
|
||||
(defpage optimistic-demo
|
||||
@@ -502,7 +502,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (optimistic-demo-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.optimistic))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.optimistic))"
|
||||
(~optimistic-demo-content :items items :server-time server-time)))
|
||||
|
||||
(defpage offline-demo
|
||||
@@ -510,7 +510,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (offline-demo-data)
|
||||
:content (~sx-doc :path "/(geography.(isomorphism.offline))"
|
||||
:content (~sx-doc :path "/sx/(geography.(isomorphism.offline))"
|
||||
(~offline-demo-content :notes notes :server-time server-time)))
|
||||
|
||||
;; Wildcard must come AFTER specific routes (first-match routing)
|
||||
@@ -518,7 +518,7 @@
|
||||
:path "/geography/isomorphism/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(geography.(isomorphism." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(isomorphism." slug "))")
|
||||
(case slug
|
||||
"bundle-analyzer" (~bundle-analyzer-content
|
||||
:pages pages :total-components total-components :total-macros total-macros
|
||||
@@ -536,7 +536,7 @@
|
||||
:path "/etc/plans/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(etc.(plan))" (~plans-index-content)))
|
||||
:content (~sx-doc :path "/sx/(etc.(plan))" (~plans-index-content)))
|
||||
|
||||
(defpage plan-page
|
||||
:path "/etc/plans/<slug>"
|
||||
@@ -545,7 +545,7 @@
|
||||
:data (case slug
|
||||
"theorem-prover" (prove-data)
|
||||
:else nil)
|
||||
:content (~sx-doc :path (str "/(etc.(plan." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(etc.(plan." slug "))")
|
||||
(case slug
|
||||
"status" (~plan-status-content)
|
||||
"reader-macros" (~plan-reader-macros-content)
|
||||
@@ -586,7 +586,7 @@
|
||||
:path "/geography/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography)"))
|
||||
:content (~sx-doc :path "/sx/(geography)"))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Reactive Islands section (under Geography)
|
||||
@@ -596,13 +596,13 @@
|
||||
:path "/geography/reactive/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(reactive))" (~reactive-islands-index-content)))
|
||||
:content (~sx-doc :path "/sx/(geography.(reactive))" (~reactive-islands-index-content)))
|
||||
|
||||
(defpage reactive-islands-page
|
||||
:path "/geography/reactive/<slug>"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path (str "/(geography.(reactive." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(geography.(reactive." slug "))")
|
||||
(case slug
|
||||
"demo" (~reactive-islands-demo-content)
|
||||
"event-bridge" (~reactive-islands-event-bridge-content)
|
||||
@@ -619,7 +619,7 @@
|
||||
:path "/geography/marshes/"
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:content (~sx-doc :path "/(geography.(marshes))" (~reactive-islands-marshes-content)))
|
||||
:content (~sx-doc :path "/sx/(geography.(marshes))" (~reactive-islands-marshes-content)))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; Bootstrapped page helpers demo
|
||||
@@ -630,7 +630,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (page-helpers-demo-data)
|
||||
:content (~sx-doc :path "/(language.(bootstrapper.page-helpers))"
|
||||
:content (~sx-doc :path "/sx/(language.(bootstrapper.page-helpers))"
|
||||
(~page-helpers-demo-content
|
||||
:sf-categories sf-categories :sf-total sf-total :sf-ms sf-ms
|
||||
:ref-sample ref-sample :ref-ms ref-ms
|
||||
@@ -652,7 +652,7 @@
|
||||
:auth :public
|
||||
:layout :sx-docs
|
||||
:data (run-modular-tests "all")
|
||||
:content (~sx-doc :path "/(language.(test))"
|
||||
:content (~sx-doc :path "/sx/(language.(test))"
|
||||
(~testing-overview-content
|
||||
:server-results server-results
|
||||
:framework-source framework-source
|
||||
@@ -676,7 +676,7 @@
|
||||
"engine" (run-modular-tests "engine")
|
||||
"orchestration" (run-modular-tests "orchestration")
|
||||
:else (dict))
|
||||
:content (~sx-doc :path (str "/(language.(test." slug "))")
|
||||
:content (~sx-doc :path (str "/sx/(language.(test." slug "))")
|
||||
(case slug
|
||||
"eval" (~testing-spec-content
|
||||
:spec-name "eval"
|
||||
|
||||
Reference in New Issue
Block a user