diff --git a/plans/host-on-sx.md b/plans/host-on-sx.md index afb2711b..003d3a3c 100644 --- a/plans/host-on-sx.md +++ b/plans/host-on-sx.md @@ -192,6 +192,67 @@ lib/host/sxtp.sx subsystem APIs (feed/search/commerce/… - [ ] (gated) adopt `dream-on-sx` session/CSRF ergonomics; re-home external adapters as native where replacements land. +## Phase 5 — Generic interactive SX-page serving (host SSR) + +**The generic gap.** A host serves three classes: (1) JSON/data endpoints — +DONE; (2) static content pages — DONE (`render-to-html` on *parsed* markup, e.g. +blog post `sx_content`); (3) **interactive UI pages** — component/island trees +with attributes + client behaviour — **the host cannot do this at all.** The +"editor problem" is one instance; dashboards, account, market-browse, any admin +screen are the same gap. The capability — not the editor — is the deliverable. + +**Why `render-to-html` alone is insufficient (proven).** `render-to-html` on +parsed markup handles attributes (`
`); but an *evaluated* component +tree mangles them (`(form :id ..)` → `
idpost-new-form…`) because in the +host preload tags don't collect keyword args as attrs. The `--http` docs server +already does this correctly via its component-render + shell pipeline. So: reuse +that pipeline, don't reinvent or patch per-component. + +**Reuse, don't rebuild.** The kernel already has: `~shared:shell/sx-page-shell` +(emits `` + inlined component/island defs in `