dope: public pages join the builder, plus a dopetest target #39

Merged
pecheny merged 1 commit from public-pages-builder into main 2026-07-26 17:29:49 +00:00
Owner

Why

/fest/multifora2026 still showed a bare : the fest index and a fest's own page were the last hand-written html/template strings in dope, so the breadcrumb migration never reached them. They are ordinary builder pages now — the same publictopbar, festgroup buckets and list rows as the host landing — and the per-page .fest-row* rules go with them.

The one thing blocking that was a fest's description, which is markdown the server has already rendered. The engine gains ui.Raw: a node printed verbatim that the parser cannot produce, so only the typed builder can and the provenance stays visible at the call site.

deploy.py also gains a dopetest target and dope a just deploy-staging, so staging stops being a manual step.

# Why [/fest/multifora2026](https://dope.pecheny.me/fest/multifora2026) still showed a bare `←`: the fest index and a fest's own page were the last hand-written `html/template` strings in dope, so the breadcrumb migration never reached them. They are ordinary builder pages now — the same `publictopbar`, `festgroup` buckets and list rows as the host landing — and the per-page `.fest-row*` rules go with them. The one thing blocking that was a fest's description, which is markdown the server has already rendered. The engine gains `ui.Raw`: a node printed verbatim that the parser cannot produce, so only the typed builder can and the provenance stays visible at the call site. `deploy.py` also gains a `dopetest` target and dope a `just deploy-staging`, so staging stops being a manual step.
The fest index and a fest's own page were the last hand-written
html/template strings in dope, which is why /fest/multifora2026 still
carried a bare "←" after every other page had moved to the breadcrumb
trail. They are ordinary builder pages now: the same publictopbar, the
same festgroup buckets, the same list rows as the host landing, so the
per-page .fest-row* rules go away with them.

The one thing blocking the conversion was a fest's description, which is
markdown the server has already rendered. The engine gains ui.Raw for
that: a node printed verbatim, which the parser cannot produce (no
.dopeui syntax or vocab prop maps to it), so only the typed builder can
and the provenance stays visible at the call site.

deploy.py gains a `dopetest` target, and dope a `just deploy-staging`.
Staging is the same binary on prod's box against a copy of prod's DB, so
a release's startup migrations rehearse under the real 960MB/1-CPU limit
before prod sees them — one such migration once OOM-killed prod.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pecheny/dopesuite!39
No description provided.