Releasing

This document describes the current GitHub release flow. It does not publish the package to npm.

Before release

Use a clean checkout of the intended release commit. Make sure the branch contains all required changes and CI passes.

Choose a Semantic Versioning number in X.Y.Z form. The Git tag must be vX.Y.Z.

Prepare and tag the release

  1. Update version in package.json to X.Y.Z.

  2. Move the relevant entries from CHANGELOG.md under a new X.Y.Z release heading.

  3. Add the release date and comparison links to CHANGELOG.md.

  4. Install locked dependencies with pnpm install --frozen-lockfile.

  5. Run the full verification suite.

    pnpm verify
    
  6. Review the package contents in the npm pack --dry-run output.

  7. Commit the version and changelog changes.

    git add package.json CHANGELOG.md
    git commit -m "chore: release vX.Y.Z"
    
  8. Create an annotated tag on that commit.

    git tag -a vX.Y.Z -m "vX.Y.Z"
    
  9. Push the release commit to the main branch.

    git push origin main
    
  10. Push the tag.

    git push origin vX.Y.Z
    

Do not move or replace a published release tag. Prepare a new patch release when a published tag contains a defect.

GitHub release workflow

A pushed v* tag starts .github/workflows/release.yml. The workflow performs these actions:

  1. Install dependencies from pnpm-lock.yaml with the frozen-lockfile option.
  2. Verify that vX.Y.Z matches the package.json version X.Y.Z.
  3. Run pnpm verify.
  4. Create the package tarball with npm pack.
  5. Generate GitHub release notes.
  6. Create or update the GitHub Release for the tag.
  7. Attach the .tgz package tarball to the GitHub Release.

If the tag and package version differ, the workflow stops before packaging.

After the workflow finishes, inspect the GitHub Release. Confirm that the tag, notes, and attached tarball are correct.

npm publication

npm publication is a separate future step. The GitHub release workflow does not run npm publish.

Do not document or announce npm installation until both requirements are complete:

  • The @jeecabs/micro-manager package exists under the intended npm organization.
  • The repository has a configured npm trusted publisher or an approved publication token.

Until then, users install from GitHub:

pi install git:github.com/Jeecabs/micro-manager