fix!: switch semantic-release to conventionalcommits preset#96
Merged
designcode merged 2 commits intomainfrom May 8, 2026
Merged
fix!: switch semantic-release to conventionalcommits preset#96designcode merged 2 commits intomainfrom
designcode merged 2 commits intomainfrom
Conversation
The default angular preset doesn't recognise the `!` syntax for breaking changes (its header regex is `^(\w*)(?:\((.*)\))?: (.*)$`, which doesn't allow `!`). As a result the `feat!:` commit from #95 was classified as "should not trigger a release" and the resulting prerelease was tagged v2.18.1-beta.1 instead of v3.0.0-beta.1. Switch both `@semantic-release/commit-analyzer` and `@semantic-release/release-notes-generator` to the `conventionalcommits` preset, which parses `feat!:` / `fix!:` and emits a proper BREAKING CHANGE note. Add `conventional-changelog-conventionalcommits` as a dev dependency so semantic-release can load the preset. BREAKING CHANGE: `tigris buckets set-ttl`, `tigris buckets set-transition` and the `tigris forks` command group were removed in #95. Use `tigris buckets lifecycle list/create/edit` for lifecycle rules and `tigris buckets create --fork-of` / `tigris buckets list --forks-of` for forks instead. Each removed entry now exits with a redirect message pointing at the replacement. BREAKING CHANGE: The `--region` and `--consistency` flags on `tigris mk`, `tigris buckets create` and `tigris buckets set` were removed. Use `--locations` instead. The flags now exit with a redirect message. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit dacd0c8. Configure here.
singler
approved these changes
May 8, 2026
Custom releaseRules are matched before the preset defaults; the
existing `{ type: "refactor", release: "patch" }` rule would shadow
the preset's `{ breaking: true, release: "major" }` for any
`refactor!:` commit (or future custom type rules covering a type that
also carries a BREAKING CHANGE note). Add an explicit breaking rule at
the top so breaking-change detection always wins regardless of type.
Documented gotcha:
semantic-release/commit-analyzer#413
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
🎉 This PR is included in version 3.0.0-beta.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
angularpreset doesn't recognise the!syntax for breaking changes, so thefeat!:commit from feat!: lifecycle commands; remove deprecated surface #95 was classified as "no release" and taggedv2.18.1-beta.1instead ofv3.0.0-beta.1.@semantic-release/commit-analyzerand@semantic-release/release-notes-generatorto theconventionalcommitspreset.conventional-changelog-conventionalcommits ^9.3.1as a dev dependency so semantic-release can load the preset.Why this commit triggers a major bump
This commit uses
fix!:and includes twoBREAKING CHANGE:footers documenting the breakage that was supposed to be released as3.0.0from #95 but was missed by the release tooling. Because main now contains the new preset config when the next release run executes, semantic-release will re-analyse this commit (and earlier post-release commits) and produce a major version. Combined with theprerelease: betasetting, the next release tag should bev3.0.0-beta.1(or.beta.2if the runner increments past the existing2.18.1-beta.1).Test plan
npm run lintandnpm run format:checkpassnpm testpasses (647 unit tests)conventionalcommitspreset's parser recognisesfeat!:and emits aBREAKING CHANGEnote (without it,typeis detected but the note is missing)mainafter merge and confirm the next tag isv3.0.0-beta.x🤖 Generated with Claude Code
Note
Low Risk
Low risk: this only changes release tooling configuration and adds a dev dependency, with no runtime code impact. Main risk is unintended versioning/release-note changes if commit parsing differs from prior behavior.
Overview
Updates
semantic-releaseconfiguration to use theconventionalcommitspreset for both@semantic-release/commit-analyzerand@semantic-release/release-notes-generator, including an explicit rule to treat detected breaking changes as a major release.Adds
conventional-changelog-conventionalcommitsas a dev dependency (and lockfile update) so the preset can be resolved during release runs.Reviewed by Cursor Bugbot for commit 029f49d. Bugbot is set up for automated code reviews on this repo. Configure here.