-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcliff.toml
More file actions
112 lines (104 loc) · 5.74 KB
/
Copy pathcliff.toml
File metadata and controls
112 lines (104 loc) · 5.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# git-cliff configuration for XE-Local-AI-Engine release notes.
#
# WHY this file exists: `vpk pack --releaseNotes <file>` embeds markdown notes
# into the Velopack package; `vpk upload github` then publishes them as the
# GitHub release body. We generate that file from the conventional-commit
# history between the previous release tag and HEAD so every release (incl.
# pre-releases) carries an auto-grouped changelog.
#
# Invoked via scripts/generate-release-notes.sh (CI + manual). See that script
# and docs/wiki/11-hosting-and-deployment.md for current usage and release flow.
#
# Docs: https://git-cliff.org/docs/configuration
[changelog]
# Rendered at the top of the release body. Kept minimal — the GitHub release
# already shows the version + tag, so no big banner.
header = ""
# One entry per release. `version` is the tag we pass via --tag; for the
# pending (untagged) build it is the composed pack-version.
body = """
{% if version %}## {{ version | trim_start_matches(pat="v") }}{% if timestamp %} — {{ timestamp | date(format="%Y-%m-%d") }}{% endif %}
{% else %}## Unreleased
{% endif %}
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}\
- {{ commit.message | upper_first }}{% if commit.scope %} ({{ commit.scope }}){% endif %} ({{ commit.id | truncate(length=7, end="") }})
{% endfor %}\
{% endfor %}\n
"""
footer = ""
# Strip leading/trailing whitespace from each line and collapse blank runs.
trim = true
[git]
# Parse commit subjects as conventional commits (feat:, fix(scope):, ...).
conventional_commits = true
# Keep non-conventional commits out of the changelog rather than dumping them
# raw — this repo is disciplined about prefixes, so anything unprefixed is noise.
filter_unconventional = true
# Don't split a commit body into multiple changelog lines.
split_commits = false
# Map commit type -> changelog section. Order here = render order.
# `skip = true` drops the commit entirely (version bumps, merges, pure-noise).
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactor" },
# `docs` and `test` were grouped ("Documentation" / "Testing") until 0.1.0-rc.4.2.
# They are skipped now because this body is TESTER-facing: over the rc.4.0..HEAD
# range they contribute 73 + 46 entries about wiki pages, ADRs, plan files and
# test scaffolding, none of which a tester can act on. To restore either section,
# swap `skip = true` back to the group name in the comment above it.
# This is a statement about the RELEASE BODY's audience, not about the value of the work:
# documentation changes a tester can actually use belong in CHANGELOG.md, which is written
# by hand for exactly that reason.
{ message = "^docs", skip = true }, # was: group = "Documentation"
{ message = "^i18n", group = "Localization" },
{ message = "^test", skip = true }, # was: group = "Testing"
{ message = "^style", group = "Styling" },
{ message = "^build", group = "Build System" },
{ message = "^ci", group = "CI" },
# Noise we never want in user-facing release notes:
# `omx(...)` (agent-team auto-checkpoints) and `task: ...` (internal work-item
# commits) parse as VALID conventional commits with types `omx` / `task`, so
# neither `filter_unconventional` nor the merge rules below drop them — they fell
# through to the catch-all and buried the body under ~95 entries. Skip explicitly.
{ message = "^omx", skip = true },
{ message = "^task", skip = true },
# Six internal remediation-item commits from the rc.4.0..HEAD range, whose subjects are
# conventional-shaped ("MED-007: ...") and so fell through to the catch-all too. The IDs
# are internal coordinates — "MED-007" tells a tester nothing. Matched as an EXACT
# alternation on purpose: a broad `^R[0-9]` or `^MED-` would silently swallow a real
# future commit, which is a worse failure than six junk lines. Extend the list literally.
{ message = "^(RR3-2|R4|R8|MED-004|MED-007|MED-011):", skip = true },
{ message = "^chore\\(release\\)", skip = true },
{ message = "^chore\\(build\\): .*version", skip = true },
{ message = "^chore\\(version\\)", skip = true },
{ message = "^chore\\(deps\\)", group = "Dependencies" },
{ message = "^chore", group = "Miscellaneous" },
{ message = "^merge", skip = true },
{ message = "^Merge ", skip = true },
# Anything else conventional but unmapped -> Miscellaneous.
{ message = ".*", group = "Miscellaneous" },
]
# Tag matching. `tag_pattern` is a REGEX (since git-cliff 1.4.0; a glob before) and it is
# matched unanchored, so the old `v?[0-9]*` matched every refname in the repo —
# it even matches the empty string. That made `dev/<version>` Development
# snapshots and `codex/...` branch tags release boundaries, so official
# --unreleased/--latest notes would start at the newest dev build. Anchored to
# the release line instead; every tag in this repo is `v`-prefixed. (The retired
# tester repo carries bare tags, but its refs are never fetched here; the code
# that handles both spellings is Find-GitHubRelease in
# publish/package-tester-win.ps1.)
tag_pattern = "^v[0-9]"
# Belt and braces over `tag_pattern`, and it survives a --tag-pattern override on
# the command line: a `dev/` tag is never a boundary. `ignore_tags` (not
# `skip_tags`) folds its commits into the next tag, so a Development snapshot's
# commits still reach the next official release's notes.
ignore_tags = "^dev/"
# Sort newest-first inside each section.
sort_commits = "newest"
# Treat rc/alpha/beta tags as real releases for range detection (we DO ship
# pre-releases and want notes for them).
# (git-cliff includes pre-release tags by default; no skip_tags entry.)