Plainwork

Plainwork / Catalogue / Release Notes Kit

TemplatesNo. 1010-11

Release notes for users, developers and your team

Write each release once as a Markdown file. The kit builds a static site with a history page per audience, a page per release and Atom and JSON feeds, and stops on any typo.

  • build.mjs: check, build and new commands (Node 18+, no npm install, about 1,000 lines of readable JavaScript)
  • A strict Markdown release format with audience sections and change types; errors name the file and line
  • A history page per audience, a page per release, 404, sitemap, and Atom 1.0 and JSON Feed 1.1 for every audience
  • latest.json and a 2 KB optional script that shows a "New in 2.1.0" link inside your own product
  • Two sample projects (a SaaS app with three audiences, a command-line tool with two), three colour themes with light and dark
  • tools/test.mjs: 36 tests you can run (formats, feeds, edge cases, contrast), plus a GitHub Action example, writing guide and docs
Try the free release notes checker and template →
Instant deliverySecure checkout by Stripe14-day refund
A real excerpt: one release file, three readers

This is releases/1.3.0.md from the Lantern sample (a made-up product), cut after the Developers section. The build turns it into a page for each audience, a page for the release, and entries in each audience's Atom and JSON feed.

---
version: 1.3.0
date: 2026-04-28
title: Export and import
summary: Take your boards with you as a CSV or JSON file, and import from a CSV.
---

## Users

### Added
- Export a board as CSV or JSON from the board menu.
- Import cards from a CSV file. A preview shows what will be created before anything is saved.

### Security
- Sessions now end after 30 days without use.

## Developers

### Added
- `POST /v1/boards/{id}/import` accepts CSV up to 5 MB.

### Deprecated
- `GET /v1/cards?board=` is deprecated. Use `GET /v1/boards/{id}/cards`. The old route will be removed in 2.0.0.

...

What each reader sees, taken from the built pages:

  • Users (users/index.html): Added: Export a board as CSV or JSON from the board menu. / Import cards from a CSV file. A preview shows what will be created before anything is saved.
    Security: Sessions now end after 30 days without use.
  • Developers (developers/index.html): Added: POST /v1/boards/{id}/import accepts CSV up to 5 MB.
    Deprecated: GET /v1/cards?board= is deprecated. Use GET /v1/boards/{id}/cards. The old route will be removed in 2.0.0.
  • Team (team/index.html): Export and import answer the top two "can I leave or move?" sales questions. Link prospects to the new help page.

The live demo shows four of the twelve sample releases built this way, with feeds.

Made for

Who it's for

Solo founders and small product teams who ship often and have more than one kind of readerMaintainers of open-source tools who want release notes that users, packagers and contributors can each useEngineering leads who are asked every week whether something has shippedFreelancers who publish a changelog for a client's product

One file, the right words for each reader

Each release has sections for the readers you choose. The writing guide shows the same change in the words a user, a developer and a manager need, and the checker warns about developer wording in customer notes.

Strict instead of forgiving

Unknown headings, an unindented bullet continuation, an unclosed code block, a bad date or a file name that does not match its version are errors with a line number, and the build stops. Nothing you typed is dropped silently. A leftover TODO is an error too.

Feeds that parse

Every audience gets an Atom 1.0 and a JSON Feed 1.1 with stable ids. The tests read them back and check required elements, ids and dates, and an independent feed parser (Python feedparser) read the sample Atom feeds without errors.

Plain output you own

Static HTML and 5 KB of CSS. The built pages contain no script, load nothing from other sites and set no cookies. Contrast is measured for every colour pair in light and dark, and the sample ran clean through axe-core in Chromium at phone and desktop width.

What's inside

Everything you get

build.mjs and lib/The command and its code: parser, renderer, feeds, checks. Plain JavaScript, no dependencies
site.jsonTitle, address, audiences, change types, theme and feed length; unknown keys are errors
releases/12 sample releases for the made-up Lantern app, plus unreleased.md for --preview
examples/library/A second sample: a command-line tool with two audiences and its own change types
theme/style.css and whats-new.jsAbout 5 KB of CSS with three themes; a 2 KB optional link script for your product
tools/test.mjs36 tests: Markdown edge cases, front matter, feeds, build safety, links, contrast
FORMAT.txt, FEEDS.txt, DEPLOY.txt, ACCESSIBILITY.txtEvery rule of the format; feeds and the what's-new link; GitHub Pages, Cloudflare Pages, Netlify; what is built in
WRITING-FOR-AUDIENCES.txtA short guide with before and after examples for users, developers and teams, and for breaking and security notes

How it works

From checkout to done

Buy

Download the zip and unzip it

Open

Run node build.mjs build to see the sample site, then edit site.json and releases/

Use

Upload the dist folder to any static host

Questions

Good to know

Do I need Node on my web host?

No. You need Node 18 or newer on the computer where you run the build, and nothing to install with npm. The result is plain files that any static host can serve.

Does it write the notes from my git commits or pull requests?

No, on purpose. You write each release by hand, which is where the plain wording for users comes from. If you want a first draft from commits, a tool such as git-cliff can produce one to paste in. The kit does not send email or Slack messages either; readers subscribe to the feeds.

What Markdown can I use?

A small subset: bullets, paragraphs, code blocks, and inline code, bold, italic and links. Images, nested and numbered lists, quotes and rules are errors that name the line, so they cannot vanish from the page. Tables and raw HTML (including comments) are not rendered: they are shown as plain text and the check warns about them. FORMAT.txt lists every rule.

How was it tested, and what was not?

The kit's own 36 tests pass on Node 22, and the sample pages were run through axe-core in Chromium at 375 and 1280 pixels in light and dark. I did not test Node 18, Windows, Safari, Firefox, screen readers, or specific feed readers. The GitHub Action in DEPLOY.txt is an example that was not run against a live repository.

Can I use it for client work or several products?

Yes. The licence lets you publish release notes for products and projects you own, run or maintain, including for clients and employers. You may not resell or redistribute the kit itself.

How do I get the files?

After payment you are sent straight to a download page for release-notes-kit-v1.0.1.zip. Refunds and support are covered by the policies linked in the footer.

What if it doesn't work for me?

If it doesn't work as described or you can't access it, email us within 14 days and we'll fix it or refund you. See the refund policy for details.

Release Notes Kit

Zero-dependency Node and plain HTML/CSS kit: one Markdown file per release, a page and feeds for each reader.

Get it for $14

More from the catalogue

Other small tools

See everything →