From 7cde2ec2f67d5286392df13f67a851790843e9d4 Mon Sep 17 00:00:00 2001 From: Nikolai Emil Damm Date: Sat, 18 Jul 2026 12:47:53 +0200 Subject: [PATCH] fix(release): treat `type!:` commits as breaking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit semantic-release's default preset recognises a breaking change only from a `BREAKING CHANGE:` footer, so a bang-style commit produced NO release at all — a breaking change shipped unversioned and nobody downstream learned the API broke. The org's commit-message ruleset explicitly permits the bang, so contributors are invited to write exactly the form that silently does nothing. Only the bang forms change: feat: -> minor, fix: -> patch, docs:/chore:/ci: -> no release, and the BREAKING CHANGE: footer still works. Any existing release rules are preserved. Verified with semantic-release 25.0.3 against this repo's actual config. Part of devantler-tech/actions#653 Co-Authored-By: Claude Opus 4.8 --- .releaserc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.releaserc b/.releaserc index 548e64450..3a94fd938 100644 --- a/.releaserc +++ b/.releaserc @@ -3,8 +3,28 @@ "main" ], "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", + [ + "@semantic-release/commit-analyzer", + { + "parserOpts": { + "breakingHeaderPattern": "^(\\w*)(?:\\((.*)\\))?!: (.*)$" + }, + "releaseRules": [ + { + "breaking": true, + "release": "major" + } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "parserOpts": { + "breakingHeaderPattern": "^(\\w*)(?:\\((.*)\\))?!: (.*)$" + } + } + ], "@semantic-release/github" ] }