ADR-0058 kept task lists out as "a note-taking affordance, not a publishing one". That reasoning measured the wrong axis: a checklist inside a published technical piece — setup steps, a runbook, a what-I-tried list — is publishing, and nothing else in the dialect expresses "this item is done" without the author hand-writing an entity. ADR-0078 supersedes that half and records why. The half of ADR-0058 that mattered is untouched: extension.GFM stays refused, because the bundle drags linkify in with the tables it is wanted for, and linkify rewrites an author's plain text into markup — the line ADR-0034 draws. One named extension is not a bundle, and wire.go now says so where the temptation to reach for GFM will next appear. ADR-0058's Status line names its successor, so a reader arriving there learns the task-list sentence no longer holds. Same in-place Status annotation the mutability rule allows, Decision text untouched. Checkboxes render disabled: static markup, nothing clickable, nothing stored. A reader with scripting off sees the same page, which is the property the whole theme is built on. goldmark adds no class to the list, so theme.css finds it with :has rather than the engine inventing markup to be styled by. Demo carries the case ADR-0051 requires — a colophon checklist of what this build does and does not do, including the unticked "ship a single byte of JavaScript", which is true of that page and asserted by the test's absent list. No counter moves: state.md's counters are explicit that an upstream extension enabled in the list is dialect, not a feature of this engine — only a package under internal/ext/ counts. 8 files, +55/-10. 1 line of engine code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
---
|
|
title: Colophon
|
|
---
|
|
Built by khosra: one Go binary, four dependencies, no JavaScript anywhere in the reference theme.
|
|
|
|
The stylesheet is inlined into every page, so a site root with no `static/` still renders. A real theme would
|
|
replace it, and `templates/list.html` in this site root shows how — that one file overrides a single named
|
|
block and inherits the rest of the document.
|
|
|
|
:tip: An icon is a name the engine hands to the theme; this reference theme answers with a character, while a
|
|
theme of your own might answer with an SVG. A name it does not know, like :nosuchicon:, keeps its text.
|
|
|
|
:::details{group=run summary="Serve the demo" open=yes}
|
|
`make demo` — this site, on `localhost:8080`.
|
|
:::
|
|
|
|
:::details{group=run summary="Serve your own"}
|
|
`khosra -site /path/to/site`. Grouped panels open one at a time, and nothing here runs a script.
|
|
:::
|
|
|
|
A block may take its content from a file beside the bundle, so a post can quote several parts of one program
|
|
without the copies drifting from it — each keeping the line numbers it really has:
|
|
|
|
```sh file=serve.sh lines=4-7 hl=6 title="serve.sh — the ways to run it"
|
|
```
|
|
|
|
:::tip{title="Nothing is hidden"}
|
|
Panels are `<details>`, which every browser opens without help. A reader with scripting off sees the same page.
|
|
:::
|
|
|
|
## What this build does and does not do
|
|
|
|
A task list is checked off in the source and rendered as a **disabled** checkbox — nothing here is
|
|
clickable, and nothing is stored (ADR-0078):
|
|
|
|
- [x] Highlight code on the server, so no script parses anything in your browser
|
|
- [x] Draw icons from Unicode rather than shipping an icon font
|
|
- [x] Serve every panel above as plain `<details>`
|
|
- [ ] Ship a single byte of JavaScript on a page like this one
|