Skip to content

Release prep: prebuilt-binary distribution (npm + GitHub Releases) - #1

Merged
kreneskyp merged 4 commits into
mainfrom
release-prep
Jun 12, 2026
Merged

Release prep: prebuilt-binary distribution (npm + GitHub Releases)#1
kreneskyp merged 4 commits into
mainfrom
release-prep

Conversation

@kreneskyp

Copy link
Copy Markdown
Contributor

Makes quire-cli release-ready: multi-target binary builds, an npm wrapper for toolchain-free install, and reconciled docs.

What's here

Binary distribution (the core ask)

  • .github/workflows/release.yml — on a vX.Y.Z tag: builds 5 targets on native runners, smoke-tests each --version, attaches quire-<ver>-<target>.tar.gz/.zip + SHA256SUMS.txt to a GitHub Release, and publishes to GitHub Packages.
    • Targets: x86_64/aarch64 linux-musl (static), x86_64/aarch64 darwin, x86_64 windows. (Intel vs AMD is the same x86_64 build on every OS.)
    • Uses the org REGISTRY_TOKEN for both the private quire-rs fetch and npm auth, matching quire-wasm/nodejs-actions/the TS libs.

npm wrapper (npm/)

  • @agent-ix/quire-cli launcher resolves+execs the right per-platform binary (forwards argv/stdio/exit status). Smoke-tested end-to-end.
  • npm/build-packages.mjs generates the 5 os/cpu-guarded platform packages from CI binaries — optionalDependencies pattern, no postinstall download.
  • Why npm matters: quire-rs is private, so cargo install --git needs repo access and crates.io publish is impossible. Prebuilt npm binaries are the real distribution channel.

Supporting

  • scripts/set_version.sh single-sources the version across Cargo + npm.
  • Release profile: strip + panic = "abort" (binary 4.44 MB → 3.29 MB; panic now exits 134 per FR-007).
  • CHANGELOG.md backfilled; README install reordered (npm-first); spec.md DRAFT → BASELINED + lint added to surface; stale render-centric plan.md flagged SUPERSEDED.

Verification

  • cargo build --release green; full test suite passes (~85 tests).
  • npm launcher + build-packages.mjs smoke-tested against the real binary (version passthrough, exit-code passthrough, missing-platform error path).

Before first real tag

After merge, dispatch the workflow via workflow_dispatch (builds + packages, skips publish) to confirm all 5 targets — especially aarch64-unknown-linux-musl and Windows — compile in CI.

🤖 Generated with Claude Code

Peter Krenesky and others added 4 commits June 12, 2026 14:41
Cuts the release binary ~26% (4.44 MB -> 3.29 MB) and makes a panic SIGABRT
to exit 134 as FR-007 documents (default unwinding exits 101).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds an npm distribution so consumers install quire without a Rust toolchain
or access to the private quire-rs repo:

- @agent-ix/quire-cli launcher (npm/quire-cli) resolves and execs the binary
  from a per-platform optional dependency, forwarding argv/stdio/exit status.
- npm/build-packages.mjs generates the five platform packages from CI binaries
  (linux x64/arm64 musl, darwin x64/arm64, win32 x64), each os/cpu-guarded.
- scripts/set_version.sh single-sources the version across Cargo.toml and the
  npm packages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
On a vX.Y.Z tag, builds the five target binaries on native runners, smoke-tests
each, attaches tarballs + SHA256SUMS to a GitHub Release, and publishes the npm
launcher and platform packages to GitHub Packages. Uses the org REGISTRY_TOKEN
for both the private quire-rs fetch and the npm registry auth. workflow_dispatch
runs the build and packaging steps but skips publishing for dry runs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- CHANGELOG.md backfilled v0.1.0..v0.2.1 with an Unreleased section.
- README install: npm prebuilt binary is now the primary path; the cargo route
  is marked contributors-only (quire-rs is private).
- spec.md: lifecycle DRAFT -> BASELINED; add lint to the subcommand surface.
- plan/plan.md: SUPERSEDED banner (render removed per spec 2bis; schema/lookup/
  edit/lint added after v0.1.0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kreneskyp
kreneskyp merged commit dfe18c0 into main Jun 12, 2026
3 checks passed
@kreneskyp
kreneskyp deleted the release-prep branch June 12, 2026 21:45
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