release-it with auto-generated changelogs from Conventional Commits.
Release phases
| Phase | Version format | Purpose |
|---|---|---|
| Beta | 0.1.0-beta.1, 0.1.0-beta.2, … | Public beta — gathering real-world feedback |
| Release Candidate | 1.0.0-rc.1, 1.0.0-rc.2, … | Feature-frozen, critical fixes only |
| Stable GA | 1.0.0 | Announced broadly — the production release |
| Patch | 1.0.1, 1.0.2, … | Bug fixes after GA |
| Minor | 1.1.0, 1.2.0, … | New features after GA |
| Major | 2.0.0, … | Breaking changes to IPC, DB schema, or engine API |
Version bump rules (after GA)
| Change type | Version bump | Example |
|---|---|---|
| Breaking change to IPC, DB schema, or engine API | MAJOR | 1.0.0 → 2.0.0 |
| New feature or significant improvement | MINOR | 1.0.0 → 1.1.0 |
| Bug fix or documentation update | PATCH | 1.0.0 → 1.0.1 |
Step 1 — Write conventional commits
Every commit that will appear in the changelog must follow the Conventional Commits format:| Type | Changelog section | Version bump |
|---|---|---|
feat: | ✨ Features | MINOR |
fix: | 🐛 Bug Fixes | PATCH |
perf: | ⚡ Performance | PATCH |
docs: | 📚 Documentation | none |
BREAKING CHANGE: | 💥 Breaking Changes | MAJOR |
chore:, ci:, test:, refactor: | (skipped) | none |
commit-msg git hook (via husky + commitlint) rejects commits that don’t follow this format. This is enforced automatically after npm install.
Step 2 — Cut a release
All releases are cut from themira-app/ directory using release-it. The tool:
- Bumps the version in
package.json - Generates a
CHANGELOG.mdentry from commits since the last tag - Creates a git commit + tag
- Pushes to
main - Creates a GitHub Release with the installer artifacts attached
Beta release
Release candidate
Stable GA
release-it will prompt for confirmation before making any changes — you always see what it’s about to do.
Step 3 — Build and sign
After the tag is pushed, build the signed installers locally:release-it created.
GitHub Secrets required (for signing)
| Secret | Used for |
|---|---|
CSC_LINK | macOS / Windows certificate (base64) |
CSC_KEY_PASSWORD | Certificate password |
APPLE_ID | Apple notarisation |
APPLE_APP_SPECIFIC_PASSWORD | Apple notarisation |
APPLE_TEAM_ID | Apple notarisation |
Hotfix releases
For urgent fixes after a stable or beta release:Edit this page — Open a pull
request