Skip to main content
Version: 0.1 (next)

Announce what's Done

A Product's board ends in Done: work that is finished but that nobody has told anyone about yet. The column header counts them as completed, not yet announced. When you're ready to tell people, Announce turns those issues into drafts for the outlets you choose. Infrared never posts, publishes or sends anything: you copy each draft to its outlet yourself.

Start an announcement​

  1. On the Product's page, choose Announce on the Done column. It's there once Done has at least one issue; members and above can use it.
  2. In the dialog:
    • Items: every Done issue is ticked. Untick the ones to keep for later.
    • Outlets: X, LinkedIn, Bluesky, Blog post, Newsletter, Changelog entry, Slack post. Infrared remembers your org's last choice.
    • Link the summary videos: when an issue's Change has a summary video, the drafts link it.
    • Notes for the writers (optional): tone, audience, what to lead with.
  3. Choose Draft N announcements. Infrared starts an Announce AgentWorkflowRun and opens its Announcement page.

Each outlet costs one agent step. Three outlets usually cost well under a dollar; the Models and costs page has the details.

What the writers do​

One step per outlet, run in parallel, each in report mode (they read; they change no code and open no pull requests). Each writer gets the issues with their titles, pull requests, Releases and the architect's summaries, your notes, and the outlet's format:

OutletFormat
XOne post of 280 characters at most, links included; a numbered thread when it can't fit
LinkedInA short hook line, two or three short paragraphs, then links; three hashtags at most
BlueskyOne conversational post of 300 characters at most
Blog postMarkdown: a title, a one-paragraph lede, a section per item with what changed and why it matters
NewsletterA short headline, a sentence of context, a bullet per item with its link
Changelog entryKeep a Changelog style: a heading, then Added / Changed / Fixed, one line per item with its issue link
Slack postSlack mrkdwn: a bold headline and a bullet per item with its link

Each draft is also posted, as a draft for people to read, to every Slack destination for the Product that takes Announce drafts. Nothing goes anywhere else.

Review and approve​

The Announcement page shows each draft with:

  • Copy, to paste it into the outlet.
  • A character count, against the outlet's limit for X and Bluesky (it turns red when over, except for a numbered X thread).
  • Edit, to change the text in place. Infrared keeps your edit, and who made it, beside the writer's draft; Copy and approval use the edited text.

When the drafts are in, the page says Waiting for your approval. Approve drafts moves every item to Announced (label infrared:announced, off the board) and comments on each issue that it was announced, naming the announce AgentWorkflowRun. Reject leaves the items in Done to announce later.

The Product's page links its latest Announcement beside the Done column.

With the API​

# The outlets the org chose last time.
curl https://<host>/api/v1/orgs/<org>/announce/defaults -H "Authorization: Bearer $INFRARED_TOKEN"
# Start an announcement.
curl -X POST https://<host>/api/v1/orgs/<org>/products/<product>/announce \
-H "Authorization: Bearer $INFRARED_TOKEN" -H 'Content-Type: application/json' \
-d '{"items": [{"repo": "site", "number": 22}], "outlets": ["x", "linkedin", "changelog"], "notes": "Keep it plain"}'
# The Product's announcements, then one with its drafts.
curl https://<host>/api/v1/orgs/<org>/products/<product>/announcements -H "Authorization: Bearer $INFRARED_TOKEN"
curl https://<host>/api/v1/orgs/<org>/announcements/<run> -H "Authorization: Bearer $INFRARED_TOKEN"
# Edit a draft.
curl -X PUT https://<host>/api/v1/orgs/<org>/announcements/<run>/drafts/x \
-H "Authorization: Bearer $INFRARED_TOKEN" -H 'Content-Type: application/json' -d '{"text": "…"}'

Approve or reject with the run's approve-drafts step, like any human step: POST /api/v1/orgs/<org>/agentworkflowruns/<run>/steps/approve-drafts/approve (or /reject).

Announcements for Releases​

This is separate from the Release announcements that the Release AgentWorkflow drafts each time a Release cuts its tag. Use those for a version going out; use Announce for whatever piled up in Done, on your schedule.