0.27.0: the blog became files, not code
Publishing stopped being a code change. And the same release found why four sites out of six had body text below the contrast threshold.

Until this version an article was a TypeScript entry: the body in one file, the translation in another, the index in a third. That works while there are three articles. By the tenth it is clear that publishing is a code change, which means it is done by whoever can change code.
Now an article is a file. `content/resources/2026-06-18-first-post.en.md`: the date and the slug in the name, the language in the suffix, the pictures in a folder beside it. Frontmatter is ten `key: value` lines, the body is paragraphs, one level of heading, a picture and a gallery. The index, the group it files under, the route and the sitemap all follow from the file existing.
The gallery decides how it looks
A block of pictures can go in the body, and how it is drawn depends only on how many there are. One is a frame. Two or three sit side by side. Four and up become a strip with thumbnails.
The writer does not choose. That matters more than it sounds: a post whose gallery looks different from the last one is a post that contained a layout decision, and nobody opened the file for that.
The contrast nobody computed
The other half of the release is colour. The rule that ink on surface must pass AA was written from the start, and nothing checked it. Once something did, **four sites out of six were below the line**: 2.15, 2.55, 2.96 and 3.59 to one.
That is how it happens: a brand colour makes an attractive background, the pair is chosen by eye, and an off-white on a mid olive looks designed and measures 2.96. Now the pair is computed, and when it fails the audit says so and stops grading everything else: until the ground and the text can be read together, no other colour on the page is worth discussing.
The muted labels also stopped being "black at 55 per cent". Black assumes the surface is light; on a deep green that is black on dark green. They now inherit the ink colour, which on a light site is slightly darker and on a dark one is the difference between readable and not.
More from the blog
Two, never more. A longer strip turns the end of an article into a second index page, and the reader has already chosen once.

