Kolofon · 11 September 2026
0.12.0 — the themes release
when an instance stopped being a site with a list of exceptions

Text: Kolofon
The 0.11 line began with a site that looked the same everywhere and ended with something else: an instance declares what it wants to be, and the engine adjusts to that. This is a change in how the engine is used, not in what it does — which is precisely why the number moves up a level.
Where 0.12 starts
theme: "book" | "dev" | "docs"
tileImageFit: "cover" | "contain"
postImageWidth: "bleed" | "column"
headerCompact: boolean
layoutWidth: "prose" | "wide"
engineMark: string
logo: { src }Three themes: **book** — paper and old-style type, for a site built around reading prose. **dev** — dark and technical. **docs** — light, cool, documentation-like. They are not variants of one another; they are three different promises made to a reader in the first second.
Alongside them, two prompts built from a single pattern — one for installing the app, one for enabling notifications — and propagation of releases to instances through pull requests, with guards deciding whether a pull request is ready or stays a draft.
Why 0.12 and not 1.0
Bumping straight to 1.0 was tempting: themes sound like product maturity. But a 1.0 says “this is finished and stable”, and there are still parts of the engine I know will change.
There is a stronger reason pointing the other way. **None of these fields is required.** An instance that declares nothing looks and behaves exactly as it did in 0.11.0 — verified after every one of the last ten releases, live, on every instance. A release that breaks nothing and demands nothing is not a major release. It is the next step.
A number should describe reality, not ambition.
