From dacd0c85fa9307ba91c1df577175f62551779644 Mon Sep 17 00:00:00 2001 From: A Ibrahim Date: Fri, 8 May 2026 11:06:31 +0200 Subject: [PATCH 1/2] fix!: switch semantic-release to conventionalcommits preset 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) --- package-lock.json | 1 + package.json | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 4de3e43..d8f11f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "@commitlint/config-conventional": "^20.5.0", "@eslint/js": "^10.0.1", "@types/node": "^22.19.11", + "conventional-changelog-conventionalcommits": "^9.3.1", "dotenv": "^17.4.2", "eslint": "^10.2.1", "eslint-plugin-simple-import-sort": "^13.0.0", diff --git a/package.json b/package.json index 95fdd47..4dd4a6f 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ [ "@semantic-release/commit-analyzer", { + "preset": "conventionalcommits", "releaseRules": [ { "type": "refactor", @@ -84,7 +85,12 @@ ] } ], - "@semantic-release/release-notes-generator", + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits" + } + ], "@semantic-release/github", "@semantic-release/npm" ] @@ -105,6 +111,7 @@ "@commitlint/config-conventional": "^20.5.0", "@eslint/js": "^10.0.1", "@types/node": "^22.19.11", + "conventional-changelog-conventionalcommits": "^9.3.1", "dotenv": "^17.4.2", "eslint": "^10.2.1", "eslint-plugin-simple-import-sort": "^13.0.0", From 029f49da8dd4dd319ec5ab387ad784d4c7d04c5e Mon Sep 17 00:00:00 2001 From: A Ibrahim Date: Fri, 8 May 2026 13:17:39 +0200 Subject: [PATCH 2/2] fix: hoist breaking-change rule above type-specific releaseRules 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: https://github.com/semantic-release/commit-analyzer/issues/413 Co-Authored-By: Claude Opus 4.7 (1M context) --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 4dd4a6f..89dd109 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,10 @@ { "preset": "conventionalcommits", "releaseRules": [ + { + "breaking": true, + "release": "major" + }, { "type": "refactor", "release": "patch"