We haven’t missed a Thursday in 28 weeks

Andy PurbrickAndy Purbrick Field Notes
28 May 2026
3 min
We haven’t missed a Thursday in 28 weeks

We ship every week. Nobody outside the team could tell.

The work was real (features, fixes, infrastructure changes) but invisible. Clients saw results on their pages. Visitors saw a polished site. Nobody saw the pace. We wanted a way to make the cadence obvious without turning it into a marketing exercise.

The format we chose

Plain .txt files in a folder. That’s it. public/release-notes/ currently holds 28 files, one per week, dating from September 2025 to March 2026. Each file follows the same structure: an ASCII art header, sections marked with ==== Title ====, highlight bullets and a summary.

There’s no CMS behind it and no database — someone writes a .txt file, drops it in the folder, and it’s live on the next deploy. We publish every Thursday.

A CMS would mean logins, permissions, a content model to maintain. A .txt file means anyone on the team can write one in their editor and commit it.

A weekly release-notes .txt file open in VS Code: ASCII-art ON logo at the top, then ==== Overview ==== and ==== Highlights ==== sections with plain-text bullets. The authoring surface: a plain text file with a consistent structure.

633 lines of parser

The simplicity stops at the authoring surface. Underneath, a 633-line parser extracts the ASCII art, section headings, highlights, change counts and date labels from each file. It normalizes formatting, preserves casing like “ON Labs” and handles the edge cases plain text always produces.

Another 182 lines handle the interactive behavior: split panel on desktop, accordion on mobile, deep-linking so anyone can share a specific week’s notes. The total comes to 1,575 lines for what started as “just a folder of text files.”

The ASCII art

Every release has a unique ASCII art rendering of the ON logo at the top. Block characters, line art, Unicode blocks, dot patterns — 28 releases, 28 different treatments.

A grid of six ASCII-art renderings of the ON logo from different weekly releases: one made from dollar signs, one from forward slashes, one from triangular line work, one from hash symbols, one from dots, one from solid block characters. Six weeks, six different ON logos. The variety makes each release feel distinct.

They serve no functional purpose, but they’re the first thing you see when you open a release. Scrolling through the archive, the variety makes each week feel distinct.

A small utility exposes the latest release date site-wide. The footer uses it to display when the site was last updated. It’s a single line of text, but it creates a site-wide signal: the site is actively maintained. A visitor on any page can see the last ship date without navigating to the release notes.

What kept the format going

Anyone can write a changelog. Most teams stop after a few weeks. The .txt format (no tooling required, no workflow to learn) is why ours kept going. The ASCII art gives people a reason to actually open them. Deep-linking means releases get shared in Slack threads and client emails as specific URLs. And the footer date quietly tells every visitor the site is alive.

Twenty-eight Thursdays in a row, same format, same .txt files.