Shipping the code is one job. Telling people about it is another — Slack, a tweet, a LinkedIn post, a paragraph for the blog, an entry in CHANGELOG.md. By the time you've written all five, the energy of having just shipped is gone. The Announce button compresses those five surfaces into one click that reads your recent commits and drafts every variant at once, for you to edit and send.
Most release-comms tools fall into one of two traps. The first is the "release notes generator" trap: it takes your commit subjects and concatenates them into a bullet list. That gives you a CHANGELOG entry but nothing else, and the list reads like a git log because that's what it is. The second is the "social media composer" trap: it gives you a blank text box and a character counter, and now you're a copywriter at 4pm on a Friday. Announce takes a different cut. It reads the actual diff, asks the AI to write a human summary of what changed and why a user would care, then fans that summary out into the five formats simultaneously. You review and edit; the heavy lifting is done.
This tutorial walks through the loop from a cold start. By the end you'll know how to draft a release announcement, how to configure the legs you actually want, and how the bookmark concept makes "what changed since last time" work without a database.
Open a project (you need a git repo with at least one commit; an empty git init won't have anything to announce). Look at the main window toolbar — there's a small paperplane icon, captioned Announce when toolbar labels are on. That's the entry point. Click it and a popover drops down from the icon.
If you click it without a project open, you'll get a friendly "no project open" pane instead — open a folder first.
The popover is the wizard. It walks five panes: input → drafting → review → sending → done. Most of the time you'll only see input, review, and done.
At the top of the input pane is a Mode picker. The choice answers a single question: "Have my commits already been pushed?"
Most days you'll use Announce only. The other two exist for edge cases.
Announce needs to know which commits to summarize. It uses a per-repo bookmark — a saved commit SHA that marks the last point you announced. The range that gets drafted is bookmark..HEAD.
On the very first announce of a repo, there's no bookmark yet — Announce treats your most recent 50 commits as the range so you can do a "since the beginning" announcement. After you send your first announcement, the bookmark advances to HEAD automatically, and the next run only sees commits since that point.
You can inspect or override the bookmark in Settings → Build & Ship → Announce, where two buttons let you "Mark HEAD as last announced" or "Clear bookmark."
Beneath the mode picker are three toggles in the popover (plus one in Settings):
CHANGELOG.md, creates the file if it doesn't exist, and auto-stages it for your next commit.docs/announce/<date>-<slug>.md so you can find it later from Finder.Each leg is independently optional. A common combination is "CHANGELOG only" for internal-feeling changes, "Slack + CHANGELOG" for team-facing work, and the full four for public-facing launches.
After you click Draft announcement, the AI runs three sequential prompts behind the scenes:
The review pane shows all of it stacked: title, summary, Slack post (editable in a text editor — this is the only leg you can edit inline), the three marketing variants (each with a copy button), and the CHANGELOG bullet preview.
If anything looks off — too long, wrong tone, miscategorized — go back and tweak the prompts in your own message to the AI later, or just edit the Slack pane in place. The marketing variants are best treated as starting drafts you copy into your own social tools and refine.
For the Slack leg to work, you need an incoming webhook URL. In Slack, go to Apps → Manage → Custom Integrations → Incoming Webhooks, pick the channel, and copy the webhook URL. Then in LingCode: Settings → Credentials → Slack incoming webhook, paste, save.
Until that's set, the "Post to Slack" toggle in the popover is disabled and there's an inline note pointing you to Settings. The webhook URL is stored in Keychain under service LingCode.
If you're not on Slack: just leave the toggle off forever and use the marketing + CHANGELOG legs only.
Click Send from the review pane. Announce runs each enabled leg in sequence:
docs/announce/<date>-<slug>.md if the save toggle is on.You'll land on a result pane that lists each leg with a checkmark or X, the outcome message ("Posted," "Saved to draft-2026-05-19-magic-link.md," "Appended bullet to the Added section — staged for your next commit"), and a folder icon to reveal the file in Finder for the marketing draft and CHANGELOG.
If a leg fails, the others still complete — a 404 from your Slack webhook won't block the CHANGELOG write. The result pane shows you exactly which leg failed and why.
Behind the scenes the bookmark advances to your current HEAD (unless you're in Two-step mode), so your next Announce only covers commits added after this point.
Here's the rhythm you'll fall into after using Announce a few times:
Total time: about a minute. Compare to manually writing five variants from scratch.