Skip to content

fix!: switch semantic-release to conventionalcommits preset#96

Merged
designcode merged 2 commits intomainfrom
fix/semantic-release-conventionalcommits-preset
May 8, 2026
Merged

fix!: switch semantic-release to conventionalcommits preset#96
designcode merged 2 commits intomainfrom
fix/semantic-release-conventionalcommits-preset

Conversation

@designcode
Copy link
Copy Markdown
Collaborator

@designcode designcode commented May 8, 2026

Summary

  • Default angular preset doesn't recognise the ! syntax for breaking changes, so the feat!: commit from feat!: lifecycle commands; remove deprecated surface #95 was classified as "no release" and 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.
  • Add conventional-changelog-conventionalcommits ^9.3.1 as a dev dependency so semantic-release can load the preset.

Why this commit triggers a major bump

This commit uses fix!: and includes two BREAKING CHANGE: footers documenting the breakage that was supposed to be released as 3.0.0 from #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 the prerelease: beta setting, the next release tag should be v3.0.0-beta.1 (or .beta.2 if the runner increments past the existing 2.18.1-beta.1).

Test plan

  • npm run lint and npm run format:check pass
  • npm test passes (647 unit tests)
  • Verified locally that the conventionalcommits preset's parser recognises feat!: and emits a BREAKING CHANGE note (without it, type is detected but the note is missing)
  • Re-run the Release workflow on main after merge and confirm the next tag is v3.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-release configuration to use the conventionalcommits preset for both @semantic-release/commit-analyzer and @semantic-release/release-notes-generator, including an explicit rule to treat detected breaking changes as a major release.

Adds conventional-changelog-conventionalcommits as 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.

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>
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment thread package.json
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>
@designcode designcode merged commit e59543d into main May 8, 2026
3 checks passed
@designcode designcode deleted the fix/semantic-release-conventionalcommits-preset branch May 8, 2026 11:30
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

🎉 This PR is included in version 3.0.0-beta.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants