Skip to content

improve autoreleases #171

Description

@Breee

Commit Message → SemVer Mapping

Per the Conventional Commits v1.0.0 spec, only feat and fix are mandated. All other types are convention (from the Angular convention) and have no implicit SemVer effect unless they carry a breaking change.

Commit Message SemVer Bump Example
fix: … PATCH 1.2.31.2.4
feat: … MINOR 1.2.31.3.0
type!: … or type(scope)!: … MAJOR 1.2.32.0.0
Any type + BREAKING CHANGE: footer MAJOR 1.2.32.0.0
docs:, style:, chore:, ci:, build:, test:, refactor: None
perf: … Tool-dependent (semantic-release: PATCH) 1.2.31.2.4

Worked examples

# PATCH
fix(api): handle null response body in /users endpoint
# MINOR
feat(queue): retry failed publishes with exponential backoff
# MAJOR (exclamation mark form)
feat(api)!: require Authorization header on all /v1 routes
# MAJOR (footer form — works with ANY type)
refactor(config): read settings from a single file

BREAKING CHANGE: CONFIG_DIR is no longer read. Set CONFIG_FILE instead.

Key nuance

The spec's own FAQ is explicit:

fix type commits should be translated to PATCH releases. feat type commits should be translated to MINOR releases. Commits with BREAKING CHANGE in the commits, regardless of type, should be translated to MAJOR releases.

A breaking change is not a type — it's a modifier (! or footer) that can attach to any type, including chore:, refactor:, etc. Tools like semantic-release and Release Please implement this mapping out of the box.

in addition to that we can also check the merged PRs for tags that say are breaking

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions