From b4b180874d2689b85ef06d4bebd3ac364c3723b0 Mon Sep 17 00:00:00 2001 From: tianyao Date: Fri, 31 Jul 2026 17:54:44 +0000 Subject: [PATCH] fix(release): correct commit-analyzer releaseRules precedence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @semantic-release/commit-analyzer applies releaseRules in array order where the LAST matching rule wins, not the first. The unscoped { type: chore, release: false } catch-all was listed after the scoped chore(deps)/chore(deps-dev) rules, so it silently overrode them for every chore commit — meaning security dependency bumps committed as chore(deps) never actually triggered a patch release (confirmed by running @semantic-release/commit-analyzer directly against the commit message from PR #87 before/after this reorder). Fix: move the unscoped chore catch-all before the scoped overrides so last-match-wins produces the intended precedence. Verified locally against representative commit messages: - chore(deps): ... -> patch - chore(deps-dev): ... -> patch - chore: ... (no scope) -> no release - chore(release): ... -> no release - fix: ... -> patch - docs: ... -> no release - feat!: ... with BREAKING CHANGE -> major lint: npx eslint . -> 0 errors Co-Authored-By: Claude Sonnet 5 --- .releaserc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.releaserc.json b/.releaserc.json index e8f22db..d5e5a86 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -17,9 +17,9 @@ { "type": "test", "release": false }, { "type": "build", "release": false }, { "type": "ci", "release": false }, + { "type": "chore", "release": false }, { "type": "chore", "scope": "deps", "release": "patch" }, { "type": "chore", "scope": "deps-dev", "release": "patch" }, - { "type": "chore", "release": false }, { "breaking": true, "release": "major" } ] }