Skip to content

Commit 9b4e72d

Browse files
committed
feat: Add changelog configuration and update commit parsing rules in cliff.toml
1 parent b7739c1 commit 9b4e72d

2 files changed

Lines changed: 171 additions & 74 deletions

File tree

CHANGELOG.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
<!--
2+
SPDX-FileCopyrightText: 2026 Adam Poulemanos <89049923+bashandbone@users.noreply.github.com>
3+
SPDX-License-Identifier: LicenseRef-PlainMIT OR MIT
4+
5+
commit hashes cause false-positives for the spellchecker:
6+
spellchecker:off
7+
-->
8+
# Changelog
9+
10+
We document all important changes below.
11+
12+
Submod follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
13+
14+
## [0.2.2] - 2026-03-19
15+
16+
### Bug Fixes
17+
18+
- Correct name to cargo-nextest in ci.yml([`e9251c6`](https://github.com/bashandbone/submod/commit/e9251c6a4e089c23039847ace7268e6a1f4ca8fa))
19+
20+
- Incorrect key in ci.yml GH Action([`2d4d09e`](https://github.com/bashandbone/submod/commit/2d4d09e9050d082d2f63851b3ea7dd1f31feda11))
21+
22+
### Feat
23+
24+
- (**testing**) Add coverage macro attributes and streamline testing config for faster testing (#35)([`38da3a9`](https://github.com/bashandbone/submod/commit/38da3a974c7cd1af6fe93573daf4f095f8ae6479))
25+
26+
### Features
27+
28+
- Add config schema, schema URL to toml([`f5f8156`](https://github.com/bashandbone/submod/commit/f5f815624ce95d1082bb80859a016b21168ebb08))
29+
30+
- Add schema; delete old CLAUDE.md for regeneration.([`daa193e`](https://github.com/bashandbone/submod/commit/daa193e64f01b76c995b37ddafc18b61fedfd8e7))
31+
32+
- (**testing**) Add coverage macros across codebase where appropriate; Add/update nextest config to use test groups to prevent race conditions vice running all tests on a single thread serially.([`b6f09f2`](https://github.com/bashandbone/submod/commit/b6f09f2a24361278153ef12ffce12d9876f284d6))
33+
34+
### Fix
35+
36+
- Serialization/Deserialization bug; significantly expand testing in core areas. (#33)([`bce7bf8`](https://github.com/bashandbone/submod/commit/bce7bf850793df5d3e9392ed639dc47de26a8d8f))
37+
38+
### Miscellaneous
39+
40+
- Cleanup old/unused files([`a761af9`](https://github.com/bashandbone/submod/commit/a761af975441bce5a7a97fdb09659ceb996d76ff))
41+
42+
- Update CI workflow for coverage and install nextest; modify dependencies in Cargo.toml and Cargo.lock([`5fdfe24`](https://github.com/bashandbone/submod/commit/5fdfe249b8f6fd2e28992c17498a5e0349dd430f))
43+
44+
- Update Rust version to 1.89 in Cargo.toml and mise.toml([`2f82a2a`](https://github.com/bashandbone/submod/commit/2f82a2a4971adc40b1903ee13c68e900ae7bf12d))
45+
46+
47+
## [0.2.1] - 2026-03-18
48+
49+
### Bug Fixes
50+
51+
- (**git_manager**) Improve success message for submodule updates([`3030474`](https://github.com/bashandbone/submod/commit/3030474c9fa4b4fdae42d23c7a2a1966a974bd53))
52+
53+
### CI/Build
54+
55+
- Ignore RUSTSEC-2024-0364 in cargo audit([`ee635aa`](https://github.com/bashandbone/submod/commit/ee635aa617b1138e77a0ff9b41466b1da2b18c02))
56+
57+
### Features
58+
59+
- Wire up no-init and shallow options for add command([`e315f76`](https://github.com/bashandbone/submod/commit/e315f7650e95f96bf2f30c7f18eebf45ccc06b9e))
60+
61+
### Fix
62+
63+
- Implement robust check for uncommitted changes using git2 fallback([`1aab1ed`](https://github.com/bashandbone/submod/commit/1aab1ed25c8e272d60a83bf1deab9036d104dc18))
64+
65+
### Miscellaneous
66+
67+
- (**docs**) Update README.md for v0.2.0 release([`9f6598f`](https://github.com/bashandbone/submod/commit/9f6598f45609957508ebb55a6c66926b0fc1ad4d))
68+
69+
- Fix cargo audit failure by ignoring RUSTSEC-2024-0364([`1cdb19a`](https://github.com/bashandbone/submod/commit/1cdb19aac55134c0841472dd0efefd122a082a7a))
70+
71+
- Update changelog for v2.1.1([`2d78b5d`](https://github.com/bashandbone/submod/commit/2d78b5d04898c2f56d32479f3d2d69cd3a51ca0f))
72+
73+
- Update Cargo.toml to 0.2.1([`c8ebfde`](https://github.com/bashandbone/submod/commit/c8ebfde3df328b7bcb0868084fdc3a0825ccd6c7))
74+
75+
### Performance
76+
77+
- Optimize line_key prefix checking([`bd36094`](https://github.com/bashandbone/submod/commit/bd3609448bdedc703c57b653e8b8c787b48c3a99))
78+
79+
- Optimize line_key prefix checking([`64a6396`](https://github.com/bashandbone/submod/commit/64a639635e6bbf26572e590047fe4567a5aef25f))
80+
81+
- Optimize line_key prefix checking([`88322b3`](https://github.com/bashandbone/submod/commit/88322b3369c07454c1c4d46ebff26b6985e841c4))
82+
83+
- Avoid Vec cloning when updating sparse paths([`211d963`](https://github.com/bashandbone/submod/commit/211d963dfb338ed0b280050d296a5c12a33547b2))
84+
85+
### Refactor
86+
87+
- Use gix is_dirty() for uncommitted changes check instead of git2([`b02bd3b`](https://github.com/bashandbone/submod/commit/b02bd3b2ace72821fe70f09fa21da312905a5e94))
88+
89+
### Testing
90+
91+
- Fix temporary value dropped while borrowed([`a50e1e3`](https://github.com/bashandbone/submod/commit/a50e1e31211b2e0dea66d247f738f9f15c026a43))
92+
93+
- Add missing tests for GitmodulesConvert on SerializableIgnore([`6bab038`](https://github.com/bashandbone/submod/commit/6bab03857d07794f66b66f862c1fad7e2f40f58e))
94+
95+
- Add missing tests for GitmodulesConvert on SerializableIgnore([`92b4598`](https://github.com/bashandbone/submod/commit/92b45980aabb3a878e567e9e1aa7bb7fcbf5bd0d))
96+
97+
- Add missing tests for GitmodulesConvert on SerializableIgnore([`8baf097`](https://github.com/bashandbone/submod/commit/8baf09777379cb97d8d550cd18ba35c8465bbb1d))
98+
99+
- Add missing tests for GitmodulesConvert on SerializableIgnore([`eea22cf`](https://github.com/bashandbone/submod/commit/eea22cf928f5606e139640a00fb1866fd255e285))
100+
101+
- Add tests for name_from_url([`1087738`](https://github.com/bashandbone/submod/commit/10877383ed2589a9b2107edc6e033450c105c0d7))
102+
103+
- Add tests for name_from_url([`c3c15a9`](https://github.com/bashandbone/submod/commit/c3c15a9c3ea5c43b1d7ef4c8bdf3ba112dbbcdbc))
104+
105+
- Add unit tests for Shell::from_path in src/shells.rs([`68e3cf6`](https://github.com/bashandbone/submod/commit/68e3cf62cd6ea6ba8a6007ea707fd33eaf0f524b))
106+
107+
108+
## [0.2.0] - 2026-03-05
109+
### Bug Fixes
110+
111+
- (**lints**) Fixed a series of lint warnings preventing release, and removed quite a bit of dead code in the process.([`dba5b8a`](https://github.com/bashandbone/submod/commit/dba5b8a551d9ae5b7207287db4f76bf15ce1bdaa))
112+
113+
- (**release**) Reuse compliance, cargo inclusions.([`cb71c01`](https://github.com/bashandbone/submod/commit/cb71c0119e24879868ac6a572ff36100469fe852))
114+
115+
- (**release**) Add sample config to release([`101f27a`](https://github.com/bashandbone/submod/commit/101f27af583a5297ec8266765e5709f2c020445d))
116+
117+
118+
## [0.1.2] - 2025-06-23
119+
### Documentation
120+
121+
- Update README and CONTRIBUTING to reflect hk and mise workflow([`2f841ae`](https://github.com/bashandbone/submod/commit/2f841ae16f1c25e5623bd5fff38649feb0e55e76))
122+
123+
124+
<!-- spellchecker:on -->

cliff.toml

Lines changed: 47 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -4,94 +4,67 @@
44
# git-cliff ~ configuration file
55
# https://git-cliff.org/docs/configuration
66

7-
87
[changelog]
9-
# A Tera template to be rendered for each release in the changelog.
10-
# See https://keats.github.io/tera/docs/#introduction
8+
header = """
9+
<!--
10+
SPDX-FileCopyrightText: 2026 Adam Poulemanos <89049923+bashandbone@users.noreply.github.com>
11+
SPDX-License-Identifier: LicenseRef-PlainMIT OR MIT
12+
13+
Git-cliff generates this file from the git commit history. The configuration for how it generates this file is in `cliff.toml`. Please edit that file, not this one.
14+
15+
commit hashes cause false-positives for the spellchecker:
16+
spellchecker:off
17+
-->
18+
# Changelog
19+
20+
We document all important changes below.
21+
22+
Submod follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
23+
"""
1124
body = """
1225
{% if version %}\
13-
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
26+
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
1427
{% else %}\
15-
## [unreleased]
28+
## [Unreleased]
1629
{% endif %}\
17-
{% for group, commits in commits | group_by(attribute="group") %}
18-
### {{ group | striptags | trim | upper_first }}
19-
{% for commit in commits %}
20-
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
21-
{% if commit.breaking %}[**breaking**] {% endif %}\
22-
{{ commit.message | upper_first }}\
23-
{% endfor %}
24-
{% endfor %}
30+
31+
{% for group, commits in commits | group_by(attribute="group") %}\
32+
### {{ group | striptags | trim | upper_first }}
33+
34+
{% for commit in commits %}\
35+
- {% if commit.scope %}(**{{ commit.scope }}**) {% endif %}\
36+
{{ commit.message | upper_first }}\
37+
([`{{ commit.id | truncate(length=7, end="") }}`](https://github.com/bashandbone/submod/commit/{{ commit.id }}))\
38+
{% if commit.breaking %} [**breaking**]{% endif %}
39+
40+
{% endfor %}\
41+
{% endfor %}\n
2542
"""
26-
# Remove leading and trailing whitespaces from the changelog's body.
43+
footer = "<!-- spellchecker:on -->"
2744
trim = true
28-
# Render body even when there are no releases to process.
29-
render_always = true
30-
# An array of regex based postprocessors to modify the changelog.
31-
postprocessors = [
32-
# Replace the placeholder <REPO> with a URL.
33-
#{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
34-
]
35-
# render body even when there are no releases to process
36-
# render_always = true
37-
# output file path
38-
# output = "test.md"
3945

4046
[git]
41-
# Parse commits according to the conventional commits specification.
42-
# See https://www.conventionalcommits.org
4347
conventional_commits = true
44-
# Exclude commits that do not match the conventional commits specification.
4548
filter_unconventional = true
46-
# Require all commits to be conventional.
47-
# Takes precedence over filter_unconventional.
48-
require_conventional = false
49-
# Split commits on newlines, treating each line as an individual commit.
5049
split_commits = false
51-
# An array of regex based parsers to modify commit messages prior to further processing.
52-
commit_preprocessors = [
53-
# Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
54-
{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
55-
# Check spelling of the commit message using https://github.com/crate-ci/typos.
56-
# If the spelling is incorrect, it will be fixed automatically.
57-
{ pattern = '.*', replace_command = 'typos --write-changes -' },
58-
]
59-
# Prevent commits that are breaking from being excluded by commit parsers.
60-
protect_breaking_commits = true
61-
# An array of regex based parsers for extracting data from the commit message.
62-
# Assigns commits to groups.
63-
# Optionally sets the commit's scope and can decide to exclude commits from further processing.
50+
commit_preprocessors = []
6451
commit_parsers = [
65-
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
66-
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
67-
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
68-
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
69-
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
70-
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
71-
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
72-
{ message = "^chore\\(release\\): prepare for", skip = true },
73-
{ message = "^chore\\(deps.*\\)", skip = true },
74-
{ message = "^chore\\(pr\\)", skip = true },
75-
{ message = "^chore\\(pull\\)", skip = true },
76-
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
77-
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
78-
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
79-
{ message = ".*", group = "<!-- 10 -->💼 Other" },
52+
{ message = "^feat", group = "Features" },
53+
{ message = "^fix", group = "Bug Fixes" },
54+
{ message = "^perf", group = "Performance" },
55+
{ message = "^docs", group = "Documentation" },
56+
{ message = "^refactor", group = "Refactoring" },
57+
{ message = "^(ci|build)", group = "CI/Build" },
58+
{ message = "^chore\\(release\\)", skip = true },
59+
{ message = "^chore", group = "Miscellaneous" },
60+
{ message = "^revert", group = "Reverts" },
61+
{ message = "^test", group = "Testing" },
8062
]
81-
# Exclude commits that are not matched by any commit parser.
63+
protect_breaking_commits = false
8264
filter_commits = false
83-
# Fail on a commit that is not matched by any commit parser.
84-
fail_on_unmatched_commit = false
85-
# An array of link parsers for extracting external references, and turning them into URLs, using regex.
86-
link_parsers = []
87-
# Include only the tags that belong to the current branch.
88-
use_branch_tags = false
89-
# Order releases topologically instead of chronologically.
65+
tag_pattern = "v[0-9]+\\.[0-9]+\\.[0-9]+"
66+
skip_tags = ""
67+
ignore_tags = ""
9068
topo_order = false
91-
# Order commits topologically instead of chronologically.
92-
topo_order_commits = true
93-
# Order of commits in each group/release within the changelog.
94-
# Allowed values: newest, oldest
9569
sort_commits = "oldest"
96-
# Process submodules commits
97-
recurse_submodules = false
70+
link_parsers = []

0 commit comments

Comments
 (0)