feat(release): announcement formats, highlight cards, and draft verification (#1480)

This commit is contained in:
4gray authored and GitHub committed 2026-08-29 10:16:07 +02:00
1 parent 7a3d5eae56
commit 29ca94aa43
22 files changed
+3850 -64

No files matched your search

+17 -5
View File
@@ -5,6 +5,8 @@ description: Use when preparing, cutting, tagging, publishing, or verifying an I
# Release Cut
Full contract, asset table and rationale: `docs/architecture/release-pipeline.md`.
The tag workflow authors the public GitHub body with
`node tools/release/extract-changelog-section.mjs --public "${VERSION}"`.
Keep the full changelog, including internal notes, committed before tagging.
@@ -30,9 +32,18 @@ pnpm run i18n:check
4. Capture required manifest screenshots only against mock servers:
`pnpm nx run electron-backend:build-e2e`, then
`pnpm run release:screenshots`.
5. Consume notes only after reviewing all generated output:
5. Render the announcement drafts, saving output outside the repository:
`pnpm --silent run release:notes:telegram` and the `:reddit` counterpart
(`--silent`, or pnpm's lifecycle banner lands in the saved post).
6. Render highlight cards after the screenshots:
`pnpm run release:cards:generate`. Review them; copy `hero.jpg` into the
blog post's asset directory if it should ship as the hero image.
7. Consume notes only after reviewing all generated output:
`node tools/release/build-release-notes.mjs --consume`.
Steps 5 and 6 must precede `--consume`: `highlight:` exists only in the note
files it deletes. Publishing announcements is manual, after the release.
The consume command is the destructive boundary: it deletes the direct note
files. Stage only release-owned files, including exact website post/assets and
`git add -A -- .changes`, then commit and create the exact tag.
@@ -54,10 +65,11 @@ git push upstream v0.25.1
```
Master and `v*` pushes can publish Docker images. The tag build creates a draft
GitHub release. Verify authored text plus generated commits and all required
macOS, Windows, DEB, RPM, Pacman (`.pacman`/`.pkg.tar.*`), AppImage, Snap,
Flatpak, updater metadata, blockmaps, and
`linux-frame-copy-runtime-sources.tar.xz`.
GitHub release. Run `pnpm run release:verify:draft` — it waits for the tag
build, then checks draft status, warns on an empty authored body, and verifies
the complete 27-asset set documented in `docs/architecture/release-pipeline.md`.
It is read-only, and fails on an already-published release. Still review the
authored text and generated commits by eye.
After verification, manually publish the GitHub release. That publication
automatically verifies its Snap assets and uploads them to `edge`.
+5
View File
@@ -17,6 +17,7 @@ type: fix
area: stalker
issues: [1234]
screenshot: optional-manifest-slug
highlight: Optional short headline
---
Stalker series now resume the correct episode.
@@ -25,6 +26,10 @@ Stalker series now resume the correct episode.
`type` is `breaking`, `feature`, `fix`, `perf`, or `internal`. Omit optional
fields instead of inventing values. Never add a version or PR number.
`highlight` (max 60 characters, never on `internal`) names a headline feature:
it leads the Telegram/Reddit announcement drafts and becomes the blog section
heading. Reserve it for the two or three changes worth announcing.
`internal` records invisible maintenance. It stays collapsed in `CHANGELOG.md`
but is omitted from the blog and the authored public GitHub body. GitHub's
generated commit list may still mention the underlying commits.