README.md

Releases #

@nibling/typestrip is published to npm.

Record a change #

Add a changeset with any change that users will notice:

pnpm changeset

This writes a Markdown file here. It names the package, its semver bump, and a one-line CHANGELOG entry. Commit it with the change.

Release #

Tangled spindles can't push commits or open pull requests, so a maintainer versions the package locally:

  1. On an up-to-date main, run pnpm release:version. It applies the pending changesets, bumps the version, writes CHANGELOG.md, and updates the lockfile.
  2. Review the diff, then commit it as Version packages.
  3. Run pnpm changeset tag to tag the new version (for example, v0.1.0).
  4. Run git push --follow-tags. On that push, .tangled/workflows/release.yml runs scripts/stage-release.mjs, which stages the version if it is neither on npm nor already staged. Only then does it build the Zena compiler (scripts/zena.sh, several minutes) for prepack to build the engines. A push that bumped nothing stages nothing, so a failed run can be retried from the pipelines page.
  5. Approve the staged version with 2FA, on npmjs.com under Staged Packages or with npm stage approve <id> (npm 11.15 or later; npm stage list shows the ids).

CI never publishes directly. npm's trusted publishing has no Tangled provider, and tokens that bypass 2FA lose direct publishing in 2027. The NPM_TOKEN secret does not bypass 2FA, so it can stage and nothing more. The package's first staging publishes a 0.0.0-stage placeholder until its first approval.

To check what a release would contain without staging it, run pnpm release:stage --dry-run. It needs zena-cli, like pnpm build.