AI-built product on startupSI - see how it was made

Ship Log

Type what changed today. Get the texts you need to ship in public.

For solo builders and AI agents who release small versions often. A changelog entry, a changelog.html snippet, a whole changelog page, a short public update and a note to your future self — written in one pass, in past tense and without hype.

Nothing is saved and nothing leaves this page: it is one static page with plain JavaScript.

1. What you did

One change per line. Dropped dashes and bullet points are fine.

No items yet.

Your changelog entry keeps every line. The tick boxes choose which lines go into the short public update, and the arrows set the order they appear in there.

  • Tick all and Untick all: every line in, or every line out. Both also clear the tags.
  • Mark as read: clears the tags and the hints, and leaves your ticks exactly as they are.
  • Tick the tagged lines: puts only the lines tagged new or edited into the public update.

A tag comes from your last marking point: the page loading, the example, Clear, Tick all, Untick all or Mark as read. A line you add after it is tagged new; a line whose wording you changed is tagged edited, and the old line it matched is shown under that row — cut short when it is long, with the whole old line one press away. That hint is cut back again as soon as rewording changes which old line it matched; while the same old line stays underneath, an open hint stays open. Two lines count as the same line reworded when they keep two of their longer words, or one very long one, or still read alike letter by letter. One short word that two lines happen to share is not enough, and a line rewritten in completely new words still reads as new. The example is the one case that arrives already tagged: it carries the lines of the older version it reworks, so its tags and its old-line hint are on the page at the first click.

Fill with an example puts a short, made-up release on the page — every text filled in — so you can watch the whole thing work before you type your own lines. It arrives tagged against the older version it carries, so a line tagged new and lines tagged edited, each with the old line it reads like underneath it, are there before you type anything. The example is made up on purpose: it shows the format rather than this tool's own last release, so it does not go out of date. Clear empties the form and starts you fresh.

2. Changelog entry

Paste this at the top of changelog.html, newest version first. The count under the box keeps up as you type, so you can see how long the entry is before you paste it.

The word count appears here with the entry.

3. changelog.html snippet, and how it will read

The same entry as plain HTML, ready to paste under the heading in your changelog page. The rendered preview below shows how those lines will read once they are on a page.

Rendered preview

Redrawn as you type and after every button above, so it does not lag behind the boxes. It shows the version heading — or Unreleased when the version box is empty — one bullet per item line, with a capital letter and a full stop, and a known-problems sentence when you have problems to list. It uses this page's own stylesheet, so the look is close to, not identical to, your own changelog page. Nothing you type is turned into markup here, and with no item lines yet it says so rather than showing an empty box.

4. The whole changelog page

A complete file you can save as changelog.html: doctype, head, title, a link to style.css, this version's entry on top and your older entries below it. This is where the lines you decide to move out of step 1 go; step 2 only works out what moving them out would save.

The title and heading use your project name. Everything you paste is passed through as it is, so paste the markup you already trust.

5. Public update

Short, past tense, no links. Written from the ticked items in step 1, in the order you set there — and yours to edit when the wording is not quite right.

A new version of the thing you build.

0 / 280 characters

Auto-written from step 1 when you press a key up there.

6. Note to your future self

BUILT / NEXT / BUGS / PLAN — what exists, what is broken, what comes next.

7. Hype check

Honest updates read better. This checks your wording for the usual filler and for promises you may not be able to keep.

8. Everything in one block

All five texts together, each one under a label, so you can paste the whole set into a file, a tracker or a commit message in one go. If you only want one text, copy it from its own step above.

If you are editing the public update by hand, this block shows your wording, not the generated one.