Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
[changelog]
header = """
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
"""
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 | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}**{{ commit.scope }}**: {% endif %}{{ commit.message | upper_first }}\
{% if commit.breaking %} [**BREAKING**]{% endif %} \
({{ commit.id | truncate(length=7, end="") }})\
{% endfor %}
{% endfor %}\n
"""
footer = ""
trim = true

[git]
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_preprocessors = []
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactoring" },
{ message = "^doc", group = "Documentation" },
{ message = "^test", group = "Testing" },
{ message = "^ci", group = "CI" },
{ message = "^build", group = "Build" },
{ message = "^chore", group = "Miscellaneous" },
{ message = "^revert", group = "Reverted Commits" },
Comment on lines +34 to +43
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description calls out grouped changelog sections including “CI”, but the parser currently maps ci commits into the catch-all “Miscellaneous” group (^chore|^ci|^build). Either adjust the commit parser groups so ^ci is grouped under a dedicated “CI” section (and optionally separate build / chore too), or update the PR description to match the actual grouping.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: ^ci now maps to dedicated 'CI' group (line 40), separate from 'Miscellaneous'. Should be marked outdated.

]
protect_breaking_commits = false
filter_commits = false
tag_pattern = "v[0-9].*"
skip_tags = ""
ignore_tags = ""
topo_order = false
sort_commits = "oldest"
61 changes: 61 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Release

on:
push:
tags:
- 'v*.*.*'
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow only triggers for tags matching v*.*.*, which won’t run for pre-release tags like v1.0.0-alpha.1 / v1.0.0-rc.1 (formats documented in README) and is also inconsistent with .cliff.toml’s broader tag_pattern. If pre-releases should publish GitHub Releases too, add an additional tag pattern (e.g. v*.*.*-*) or otherwise document that only stable tags are supported.

Suggested change
- 'v*.*.*'
- 'v*.*.*'
- 'v*.*.*-*'

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: added v*..-* tag pattern at line 7 to cover pre-release tags like v1.0.0-alpha.1. Should be marked outdated.

- 'v*.*.*-*'

env:
CARGO_TERM_COLOR: always

jobs:
changelog:
name: Generate Changelog
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive

- name: Install git-cliff
uses: kenji-miyake/setup-git-cliff@v2

- name: Generate changelog for this release
run: |
git cliff --current --output CHANGELOG.md

- name: Upload changelog artifact
uses: actions/upload-artifact@v4
with:
name: changelog
path: CHANGELOG.md
Comment on lines +25 to +33
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description says it will auto-generate CHANGELOG.md on tag push, which typically implies updating the repository file. This workflow only generates the file for use as an artifact/release body and does not commit it back to the repo. Either adjust the description (to clarify it’s generated for release notes only) or add a step to commit and push the updated CHANGELOG.md to the default branch.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: PR description updated to clarify changelog is generated for the GitHub Release body only, not committed back to repo. Should be marked outdated.


publish:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: changelog
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This workflow doesn’t declare permissions. In orgs/repos where the default GITHUB_TOKEN permission is read-only, softprops/action-gh-release can fail to create/publish a release. Add an explicit permissions: contents: write (either at workflow or publish job scope) to make this reliable.

Suggested change
needs: changelog
needs: changelog
permissions:
contents: write

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: permissions: contents: write added at line 39-40. Should be marked outdated.

permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Download changelog
uses: actions/download-artifact@v4
with:
name: changelog

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
Comment on lines +51 to +52
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This workflow doesn’t declare permissions. In orgs/repos where the default GITHUB_TOKEN permission is read-only, softprops/action-gh-release can fail to create/publish a release. Add an explicit permissions: contents: write (either at workflow or publish job scope) to make this reliable.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: same permissions block covers this. Should be marked outdated.

with:
body_path: CHANGELOG.md
token: ${{ secrets.GITHUB_TOKEN }}

# Uncomment when ready to publish to crates.io:
# - name: Install stable toolchain
# uses: dtolnay/rust-toolchain@stable
# - name: Publish
# run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }}