[changelog]
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 }}
{% for commit in commits %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message }}\
{% endfor %}
{% endfor %}
"""
trim = true
render_always = true
[bump]
features_always_bump_minor = false
breaking_always_bump_major = false
[git]
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->features" },
{ message = "^fix", group = "<!-- 1 -->bug fixes" },
{ message = "^doc", group = "<!-- 3 -->documentation" },
{ message = "^perf", group = "<!-- 4 -->performance" },
{ message = "^refactor", group = "<!-- 2 -->refactor" },
{ message = "^style", group = "<!-- 5 -->styling" },
{ message = "^test", group = "<!-- 6 -->testing" },
{ message = "^chore\\(release\\)", skip = true },
{ message = "^chore\\(deps.*\\)", skip = true },
{ message = "^chore|^ci", group = "<!-- 7 -->miscellaneous" },
{ message = "^revert", group = "<!-- 8 -->revert" },
]
filter_commits = true
topo_order_commits = true
sort_commits = "oldest"