Skip to content

feat: tag-triggered releases — installable ct tarball on the GitHub Releases page (#9) - #44

Merged
2000game merged 3 commits into
mainfrom
feat/automated-releases-9
Jul 9, 2026
Merged

2000game merged 3 commits into
mainfrom
feat/automated-releases-9

Conversation

@2000game

@2000game 2000game commented Jul 9, 2026

Copy link
Copy Markdown
Member

Minimal robust release automation, first slice of #9:

  • .github/workflows/release.yml: pushing a v* tag runs the identical CI gate (Node 22: lint → typecheck → test → build), then npm packs the built CLI and publishes a GitHub Release (auto-generated notes) with the tarball + an INSTALL.md.
  • Install story: npm install -g <release-asset-url> → ct --help. Verified end-to-end in an isolated prefix: packed tarball installs and runs.
  • package.json version 0.0.0 → 0.1.0; stays private: true (blocks only npm publish, which is not the install story).

Deliberately not in this slice (issue #9 stays open, scope narrowed): standalone no-Node binaries (SEA/pkg/bun), auto-versioning on merge (semantic-release/release-please), Homebrew tap. None of that tooling exists in the repo today and the tarball path unblocks installs now.

Addresses #9.

2000game added 3 commits July 9, 2026 08:36
Baseline for tag-driven releases (#9). package stays private: true —
install is via GitHub Releases tarball + npm pack, not npm publish.
Pushing a v* tag runs the same lint/typecheck/test/build gate as CI,
packages the built CLI with `npm pack`, and publishes a GitHub Release
with the tarball + an INSTALL.md, using GitHub's auto-generated release
notes (#9).

Deviates from the issue's semantic-release + standalone-binary proposal:
no pkg/bun/SEA toolchain exists in the repo today, so this ships the
minimal robust path (tag push -> release) rather than adding a new
packaging toolchain and merge-to-main automation. Standalone macOS
binaries and auto-versioning-on-merge remain open follow-ups.
Add an Install section pointing at the GitHub Releases tarball +
npm install -g, ahead of the existing dev/from-source setup docs (#9).
@2000game
2000game merged commit 5f36009 into main Jul 9, 2026
2000game added a commit that referenced this pull request Jul 9, 2026
…trix (#9)

Replace the tag-triggered release flow (#44) with per-merge releases: every
push to main runs the CI gate, cross-compiles ct as standalone bun binaries
(darwin-arm64, darwin-x64, linux-x64), smoke-tests each one on its native
OS/arch (--help plus a real ct plan against a fixture .config.ts, so jiti's
runtime TS transpilation inside the compiled binary is actually exercised —
not just --help), and only then runs semantic-release (pinned via npx, no
new devDependencies) to compute the version, generate the changelog as
GitHub Release notes, create the tag, and publish the release with the
tarball + binaries attached. No manual tag push.

Release stays private/GitHub-only: no npm publish plugin. Comment/label
side effects on @semantic-release/github are disabled to keep the
GITHUB_TOKEN permission footprint at contents:write only.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant