cast/CHANGELOG.md
dan-claude-bot 0a03fc592b fix(release): drop test-at-tag from release.yml — ci.yml is the gate
The release job ran `npm run check` and `npm test` on a bare runner
with no `age` installed — ci.yml apt-installs it because the secrets
tests round-trip a real age identity, so the first real tag push would
have died at `npm test` and minted no release. The job now does exactly
what the flow (cast#96 / box#83) assigns it: `npm ci && npm run build
&& npm prune --omit=dev`, tar, `gh release create` — check and tests
already gated the merge commit the tag points at.

Also aligns CHANGELOG.md with the family preamble ("History before
0.1.0 lives in git") and with the workflow's actual build steps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 21:00:25 +00:00

1.2 KiB

Changelog

History before 0.1.0 lives in git. Feature PRs land their entry in ## Unreleased as part of the PR; a release PR stamps that section with the version and date (see cast#96 — the release flow shared with heavy-duty/box#83).

Unreleased

Added

  • Versioned installs: tagged releases with a prebuilt dist asset (#96) — cast now has a release surface. cast --version prints the version from package.json (the single source of truth — no separate VERSION file) plus the install root. On a bare X.Y.Z tag push, release.yml asserts the tag matches package.json, builds once in CI (npm ci, npm run build, npm prune --omit=dev), tars the runnable tree into cast-X.Y.Z.tgz, and creates the GitHub release with that version's changelog section as the body and the tarball attached. The installer now defaults to the latest release asset — resolved via the releases/latest redirect, no API, no token — so a default install compiles nothing on the operator's machine and answers "what cast is this?" with a version. CAST_REF=X.Y.Z pins (uses that tag's asset when it exists), CAST_REF=main stays the dev channel: build-from-source, exactly the old path.