feat: versioned installations — the box#79 layout, ported the way rig#36 ported it #100

Merged
dan-claude-bot merged 4 commits from feat/versioned-installs into main 2026-07-18 22:14:54 +00:00
2 changed files with 6 additions and 6 deletions
Showing only changes of commit 0a03fc592b - Show all commits

View file

@ -45,16 +45,16 @@ jobs:
run: bash scripts/changelog-section.sh "$GITHUB_REF_NAME" CHANGELOG.md > /tmp/release-notes.md
- name: build the package, once
# Just the build — check and tests already gated the merge commit
# this tag points at (ci.yml, with its age dependency); the release
# job's whole job is packaging that green tree.
run: |
npm ci
npm run check
npm run build
npm test
- name: assemble cast-${{ github.ref_name }}.tgz
# The runnable tree and nothing else: bin/, dist/, production
# node_modules/, package.json. Pruned AFTER the tests so what ships
# is the tree that passed. Top-level dir named like a GitHub
# node_modules/, package.json. Top-level dir named like a GitHub
# archive's, so the installer handles both shapes identically.
run: |
npm prune --omit=dev

View file

@ -1,6 +1,6 @@
# Changelog
History before versioning lives in git. Feature PRs land their entry in
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).
@ -14,7 +14,7 @@ heavy-duty/box#83).
`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 test`, `npm prune --omit=dev`), tars the runnable tree into
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