This project uses semantic-release to automate versioning and publishing. Releases are triggered automatically when commits are pushed to the main branch (typically via merged pull requests).
- A pull request is merged into
main - A maintainer triggers the Release workflow manually from the Actions tab
semantic-releaseanalyzes commit messages since the last release to determine the version bump- If a release is warranted, it:
- Rebuilds the
dist/directory - Creates a new git tag (e.g.,
v2.1.0) - Publishes a GitHub Release with auto-generated release notes
- Updates the major version tag (e.g.,
v2) to point to the new release
- Rebuilds the
Navigate to Actions → Release → Run workflow in the GitHub UI.
- Select the
mainbranch - Check "Run in dry-run mode" (enabled by default)
- Click Run workflow
The workflow will report what version would be created and which commits would be included — without making any changes.
- Select the
mainbranch - Uncheck "Run in dry-run mode"
- Click Run workflow
The workflow will create the tag, GitHub Release, and update the major version tag.
This project follows Conventional Commits. The commit message format determines the type of version bump:
fix: correct label matching when using NOT operator
fix(api): handle pagination edge case for large projects
feat: add support for custom field values
feat(filter): support regex patterns in label matching
feat: redesign configuration format
BREAKING CHANGE: The `project-url` input now requires the full API URL.
Users must update their workflow files.
Commits that don't match a release pattern (e.g., chore:, docs:, ci:, test:, refactor:) will not trigger a release.
docs: update usage examples in README
chore: update dev dependencies
ci: add Node.js 22 to test matrix
test: add coverage for label-operator input
refactor: simplify GraphQL query construction
<type>(<optional scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description | Triggers release? |
|---|---|---|
feat |
A new feature | ✅ Minor |
fix |
A bug fix | ✅ Patch |
perf |
Performance improvement | ✅ Patch |
docs |
Documentation only | ❌ |
chore |
Maintenance tasks | ❌ |
ci |
CI/CD changes | ❌ |
test |
Adding/updating tests | ❌ |
refactor |
Code refactoring | ❌ |
style |
Code style (formatting) | ❌ |
build |
Build system changes | ❌ |
To trigger a major version bump, include BREAKING CHANGE: in the commit footer:
feat: change default label-operator to AND
BREAKING CHANGE: The default value for label-operator has changed from OR to AND.
Workflows relying on the previous default must explicitly set `label-operator: OR`.
The major version tag (e.g., v2) is automatically updated to point to the latest release. This allows users to pin to a major version in their workflows:
- uses: actions/add-to-project@v2 # Always gets the latest v2.x.xTo dry-run the release process locally (no changes will be published):
npx semantic-release --dry-run- Ensure the commit message follows the Conventional Commits format
- Only
feat:,fix:, andperf:types trigger releases by default - Check the Actions tab for workflow run logs
- Verify the commit was pushed to
main(not a feature branch)
feat:always triggers a minor bumpfix:andperf:always trigger a patch bumpBREAKING CHANGEin the footer always triggers a major bump- If multiple commits are in a single push, the highest-priority bump wins
- Check that the "Update major version tag" step ran in the workflow
- Ensure
GITHUB_TOKENhascontents: writepermission - The step only runs when semantic-release creates a new tag