|
1 | 1 | [changelog] |
2 | | -header = """ |
3 | | -# Changelog\n |
4 | | -""" |
| 2 | +header = "" |
5 | 3 | body = """ |
6 | | -{% if version %}\ |
7 | | - ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} |
8 | | -{% else %}\ |
9 | | - ## [unreleased] |
| 4 | +{% if version %}## {{ version }} |
| 5 | +{% else %}## [unreleased] |
10 | 6 | {% endif %}\ |
11 | 7 | {% for group, commits in commits | group_by(attribute="group") %} |
12 | | - ### {{ group | upper_first }} |
13 | | - {% for commit in commits %} |
14 | | - - {{ commit.message | upper_first }}\ |
15 | | - {% endfor %} |
16 | | -{% endfor %}\n |
| 8 | +### {{ group | striptags | trim }} |
| 9 | +
|
| 10 | +{% for commit in commits %}\ |
| 11 | +- {{ commit.message | upper_first }} ({{ commit.id | truncate(length=7, end="") }}) |
| 12 | +{% endfor %}\ |
| 13 | +{% endfor %} |
17 | 14 | """ |
| 15 | +footer = "" |
18 | 16 | trim = true |
19 | 17 |
|
20 | 18 | [git] |
21 | 19 | conventional_commits = true |
22 | | -filter_unconventional = true # ignore commits with "prefix:" |
| 20 | +# true = filter out non-conventional commits (those without "type: message" format) |
| 21 | +filter_unconventional = true |
| 22 | +# false = keep each commit as one entry; true = split multi-paragraph commits |
23 | 23 | split_commits = false |
| 24 | + |
| 25 | +# Match commit message prefixes to assign groups (change types). |
| 26 | +# First matching parser wins. |
| 27 | +# HTML comments control sort order, removed by striptags in template. |
24 | 28 | commit_parsers = [ |
25 | | - { message = "^security", group = "<!--0-->Security"}, |
26 | | - { message = "^feat", group = "<!--1-->Features"}, |
27 | | - { message = "^fix", group = "<!--2-->Bug Fixes"}, |
28 | | - { message = "^perf", group = "<!--3-->Performance"}, |
29 | | - { message = "^chore", group = "<!--4-->Chores"}, |
30 | | - { message = "^refactor", group = "<!--5-->Refactor"}, |
31 | | - { message = "^doc", group = "<!--6-->Documentation"}, |
| 29 | + { message = "^feat", group = "<!-- 1 -->✨ Features" }, |
| 30 | + { message = "^fix", group = "<!-- 2 -->🐛 Bug Fixes" }, |
| 31 | + { message = "^refactor", group = "<!-- 3 -->🔧 Refactor" }, |
| 32 | + { message = "^perf", group = "<!-- 4 -->⚡ Performance" }, |
| 33 | + { message = "^doc", group = "<!-- 5 -->📚 Documentation" }, |
| 34 | + { message = "^security", group = "<!-- 6 -->🔒 Security" }, |
| 35 | + { message = "^chore", group = "<!-- 6 -->🧹 Chore" }, |
32 | 36 | ] |
33 | | -protect_breaking_commits = false |
34 | | -filter_commits = true # ignore prefixes not listed above |
| 37 | + |
| 38 | +# true = exclude commits that don't match any parser (only release-worthy commits) |
| 39 | +# false = include commits that don't match any parser (as ungrouped) |
| 40 | +filter_commits = true |
| 41 | + |
35 | 42 | tag_pattern = "v[0-9]*" |
36 | | -skip_tags = "v[0-9]*-.*" # ignore pre-release semver tags |
37 | | -ignore_tags = "" |
38 | | -topo_order = false |
39 | | -sort_commits = "oldest" |
| 43 | +# Skip pre-release tags like v1.0.0-beta.1 |
| 44 | +skip_tags = "v[0-9]*-.*" |
0 commit comments