Conversation
KyleJune
pushed a commit
that referenced
this pull request
Apr 27, 2026
## [0.4.1](0.4.0...0.4.1) (2026-04-27) ### Bug Fixes * drop redundant release:false rules that overrode patch matches ([#78](#78)) ([ea5e16e](ea5e16e))
|
🎉 This PR is included in version 0.4.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
Fix a bug in
.releaserc.jsonwhere the prior PR'schore(deps)rule was being silently overridden by a redundant catch-allrelease: falserule, preventing dependency-bump commits from triggering a release. Also restores breaking-change and revert detection that was unintentionally dropped from the default release rules.Background
After [#78] landed, the merged
chore(deps): release prior dependency updates (#77)commit still produced "no release." Reading semantic-release's analyze-commit.js reveals the cause:releaseRulesare not first-match-wins. The analyzer iterates every matching rule and accumulates the highest release type — but a matching rule withrelease: falseclears the release type and stops iteration.For a
chore(deps): ...commit, two rules matched:{ type: "chore", scope: "deps", release: "patch" }→ set releaseType to patch{ type: "chore", release: false }→ cleared it back to undefined and stoppedThe catch-all
release: falseentries were also redundant. WhenreleaseRulesis provided, it replaces the defaults entirely — any commit type without a matching rule already produces no release. Therelease: falserules weren't blocking anything; they were stomping on legitimate patch matches.A separate problem: replacing the defaults also dropped the special-property rules
{ breaking: true, release: "major" }and{ revert: true, release: "patch" }, soBREAKING CHANGEfooters and revert commits weren't being detected as major/patch either.Changes
{ type: <x>, release: false }rules fordocs,style,refactor,test,build,ci, andchore. The absence of a matching rule already produces no release.{ "breaking": true, "release": "major" }and{ "revert": true, "release": "patch" }so breaking changes and reverts are detected (they were dropped when customreleaseRulesreplaced the defaults).feat→ minor,fix/perf/revert/build(deps)/chore(deps)→ patch.Testing
main, semantic-release re-analyzes all commits since 0.4.0. Expected:chore(deps): release prior dependency updates (#77)now matches the patch rule, and this PR'sfix:commit also matches → 0.4.1 release with changelog entries for the prior dep bumps and this fix.