From 008161ab18c12d99208446e58d41561901369038 Mon Sep 17 00:00:00 2001 From: dan-claude-bot Date: Sun, 19 Jul 2026 14:24:44 +0000 Subject: [PATCH] release: 0.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cast's first release: package.json has said 0.1.0 since the first commit, so the ceremony's bump is a no-op and this PR is the stamp — the Unreleased section becomes 0.1.0 with today's date. The tag will make it true: release.yml builds the prebuilt cast-0.1.0.tgz asset and the installer's default channel goes live. Drilled twice on 2026-07-19, including the asset path end to end on a scratch fork. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2e769b..d504f9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,28 +5,7 @@ since its first commit, but grew its release surface (this file, `cast --version`, tagged releases with a prebuilt asset) on the way to actually cutting it, and this file starts there. -## Unreleased - -### Added - -- **Merging a release-labeled PR is the release — and the release re-arms - main itself** (#111; box#96's design) — `release.yml` now also fires on - pushes to main (not `pull_request` events: fork-sourced ceremony PRs get - a read-only token there — the round-1 catch). A decide step reads the - version transition from the push (`event.before` → the pushed head) and - answers four states: release-flow *work* merged under the `release` - label — `-dev` endstates, and the post-release window — no-ops green - with a NOTICE; the two genuinely ambiguous bare states refuse loudly; - a true transition then requires a merged, `release`-labeled PR behind - the commit (read via the API — the label is the operator's declared - intent) before the door opens. It then tags the merge commit, builds - the `cast-X.Y.Z.tgz` asset once, publishes — and bumps main to - `X.Y.(Z+1)-dev` itself, direct push with a loud open-a-PR fallback, so - no follow-up bump PR exists on the paved road. The tag-push path stays - as the documented fallback and backfill, and both paths run the same - steps so they cannot drift. First-release edge: 0.1.0 never carried - `-dev`, so its ceremony (#110) ships by manual tag; the automation - applies from 0.1.1 on. +## 0.1.0 — 2026-07-19 ### Fixed @@ -85,6 +64,25 @@ actually cutting it, and this file starts there. ### Added +- **Merging a release-labeled PR is the release — and the release re-arms + main itself** (#111; box#96's design) — `release.yml` now also fires on + pushes to main (not `pull_request` events: fork-sourced ceremony PRs get + a read-only token there — the round-1 catch). A decide step reads the + version transition from the push (`event.before` → the pushed head) and + answers four states: release-flow *work* merged under the `release` + label — `-dev` endstates, and the post-release window — no-ops green + with a NOTICE; the two genuinely ambiguous bare states refuse loudly; + a true transition then requires a merged, `release`-labeled PR behind + the commit (read via the API — the label is the operator's declared + intent) before the door opens. It then tags the merge commit, builds + the `cast-X.Y.Z.tgz` asset once, publishes — and bumps main to + `X.Y.(Z+1)-dev` itself, direct push with a loud open-a-PR fallback, so + no follow-up bump PR exists on the paved road. The tag-push path stays + as the documented fallback and backfill, and both paths run the same + steps so they cannot drift. First-release edge: 0.1.0 never carried + `-dev`, so its ceremony (#110) ships by manual tag; the automation + applies from 0.1.1 on. + - **Tagged releases with a prebuilt dist asset, and an installer that installs them** (#96) — the cast half of the flow designed in heavy-duty/box#83, plus the piece unique to cast: a **prebuilt asset**,