This project uses semantic-release for automated version management and releases.
Releases are triggered manually via GitHub Actions workflow dispatch. When you run the release workflow, semantic-release:
- Analyzes commits - Reads commit messages following Conventional Commits format
- Determines version bump - Calculates the next version based on commit types:
feat:→ Minor version bump (e.g., 1.0.0 → 1.1.0)fix:→ Patch version bump (e.g., 1.0.0 → 1.0.1)feat!:orBREAKING CHANGE:→ Major version bump (e.g., 1.0.0 → 2.0.0)
- Generates changelog - Automatically updates
CHANGELOG.mdwith release notes - Creates Git tag - Tags the release with the version number
- Creates GitHub release - Publishes release notes on GitHub
| Commit Type | Version Impact | Example |
|---|---|---|
feat: |
Minor (1.0.0 → 1.1.0) | New feature added |
fix: |
Patch (1.0.0 → 1.0.1) | Bug fix |
perf: |
Patch (1.0.0 → 1.0.1) | Performance improvement |
refactor: |
Patch (1.0.0 → 1.0.1) | Code refactoring |
feat!: or BREAKING CHANGE: |
Major (1.0.0 → 2.0.0) | Breaking change |
docs:, style:, test:, build:, ci:, chore: |
No release | Documentation, formatting, tests, etc. |
The release configuration (.releaserc.json) defines:
- Branches: Only
mainbranch triggers releases - Preset: Uses
conventionalcommitspreset - Changelog: Automatically generated and committed to
CHANGELOG.md - GitHub: Creates releases with release notes
Releases are triggered manually when you're ready to publish a stable version:
- Ensure all commits follow Conventional Commits format
- Go to GitHub Actions → Select "Release" workflow
- Click "Run workflow" → Select the branch (usually
main) → Click "Run workflow" - Monitor the workflow - semantic-release will analyze commits and create a release if needed
Release notes are automatically generated from commit messages. The format includes:
- Features - New functionality added
- Bug Fixes - Issues resolved
- Performance - Performance improvements
- Breaking Changes - Incompatible changes (major versions)
This project follows Semantic Versioning (SemVer):
- MAJOR (X.0.0): Breaking changes
- MINOR (0.X.0): New features (backward compatible)
- PATCH (0.0.X): Bug fixes (backward compatible)
Releases are triggered manually via the GitHub Actions workflow (.github/workflows/release.yml):
- Manual workflow dispatch only (no automatic releases)
- Executes semantic-release when triggered
- Publishes to GitHub Releases
- Updates changelog automatically
To test what would be released without actually creating a release:
bun install
bunx semantic-release --dry-runThis will show you:
- What version would be released
- What commits would be included
- What the changelog would look like
- But won't actually create a release or tag
- Check that commits follow Conventional Commits format
- Verify commits are on
mainbranch - Check GitHub Actions logs for errors
- Ensure semantic-release has necessary permissions
- Review commit messages - they must follow the format exactly
- Check
.releaserc.jsonfor release rules - Breaking changes require
!orBREAKING CHANGE:footer
- Check that
CHANGELOG.mdexists - Verify semantic-release has write permissions
- Check CI logs for errors
- Contributing Guide - How to write commit messages
- Changelog - Version history
- Conventional Commits - Commit message format