Skip to content

Releasing

This document describes the production release flow for Rezi.

Releases cover:

  • npm package publishing
  • GitHub Releases (notes + artifacts)

The native addon release includes prebuilt .node binaries for the supported platform matrix and packaging into @rezi-ui/native.

Versioning

Rezi publishes:

  • @rezi-ui/core
  • @rezi-ui/node
  • @rezi-ui/native
  • @rezi-ui/testkit
  • @rezi-ui/jsx
  • @rezi-ui/ink-compat
  • ink-gradient-shim
  • ink-spinner-shim
  • @rezi-ui/ink-gradient-shim
  • @rezi-ui/ink-spinner-shim
  • create-rezi

The repo uses a single version across these publishable packages.

Update all workspace versions (including inter-package dependency pins):

node scripts/release-set-version.mjs 0.1.0-alpha.16

Release checklist

  1. Update versions and CHANGELOG.md.
  2. Run local validation:
npm ci
npm run fmt
npm run lint
npm run typecheck
npm run build
npm test
npm run build:native
npm run test:native:smoke
npm run check:unicode
npm run docs:build
  1. Verify publish contents:
npm -w @rezi-ui/core pack --dry-run
npm -w @rezi-ui/node pack --dry-run
npm -w @rezi-ui/native pack --dry-run
npm -w @rezi-ui/testkit pack --dry-run
  1. Commit release metadata and tag:
git tag v0.1.0-alpha.16
git push origin v0.1.0-alpha.16
  1. Confirm CI release workflow completes:
  2. native prebuild matrix passes
  3. npm publish steps pass
  4. GitHub Release notes and assets are generated

Documentation deployment is handled separately by the docs workflow on pushes to main, not by the npm release workflow.

Publishing requirements

  • NPM_TOKEN available in repository secrets
  • npm package access configured for the @rezi-ui scope
  • GitHub workflow permissions allow package publish and release creation

One-commit repository export (new OSS repository)

If you need to move Rezi into a brand-new repository with a clean single-commit history:

# from current repository root
tmp_dir=$(mktemp -d)
git archive --format=tar HEAD | (cd "$tmp_dir" && tar -xf -)
cd "$tmp_dir"
git init
git add .
git commit -m "Initial public import of Rezi"
git branch -M main
git remote add origin <NEW_REPOSITORY_URL>
git push -u origin main --force

This preserves current source/docs state while intentionally resetting commit history to one initial commit.