# git-cliff configuration for devx # https://git-cliff.org/docs/configuration [changelog] header = """ # Changelog\n All notable changes to this project will be documented in this file.\n """ body = """ {% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ ## [unreleased] {% endif %}\ {% for group, commits in commits | group_by(attribute="group") %} ### {{ group | striptags | trim | upper_first }} {% for commit in commits %} - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ {% if commit.breaking %}[**breaking**] {% endif %}\ {{ commit.message | upper_first }}\ {% endfor %} {% endfor %} """ trim = true render_always = true [git] conventional_commits = true filter_unconventional = true require_conventional = false split_commits = false protect_breaking_commits = false filter_commits = false fail_on_unmatched_commit = false use_branch_tags = false topo_order = false topo_order_commits = true sort_commits = "oldest" recurse_submodules = false commit_preprocessors = [ # Strip DEVX-N: task ID prefix from squash-merge commits so git-cliff sees conventional commits { pattern = "^DEVX-\\d+:\\s+", replace = "" }, ] commit_parsers = [ { message = "^feat", group = "Features" }, { message = "^fix", group = "Bug Fixes" }, { message = "^perf", group = "Performance" }, { message = "^refactor", group = "Refactor" }, # Skip infrastructure-only commits — they don't affect users { message = "^doc", skip = true }, { message = "^test", skip = true }, { message = "^style", skip = true }, { message = "^chore", skip = true }, { message = "^ci", skip = true }, # Skip release commits — they are release artifacts, not features { message = "^release:", skip = true }, { body = ".*security", group = "Security" }, { message = "^revert", group = "Revert" }, # Skip anything that doesn't match above — safe default { message = ".*", skip = true }, ] [bump] features_always_bump_minor = true breaking_always_bump_major = false initial_tag = "0.1.0" # Refactor commits bump patch — structural changes to src/ or pyproject.toml # affect users even though no new feature was added. refactor_always_bump_patch = true