2 Commits
Author SHA1 Message Date
noonghunna eeb946b0a7 chore(changelog): subject-only rendering (drop commit body verbosity)
Release / release (push) Failing after 51s
CHANGELOG.md and GitHub Release notes now render commit subjects only.
Full commit message body (why/how/validation data) stays in 'git log',
one click away via the SHA link. Keeps both surfaces skim-readable.

v0.3.2 release pages were 100+ lines per commit; this brings them down
to ~1 line per commit.
2026-05-10 21:14:34 +00:00
github-actions[bot] 507a36f7f7 chore(changelog): regenerate for v0.3.2 [skip ci] 2026-05-10 21:08:51 +00:00
2 changed files with 58 additions and 19 deletions
+50 -1
View File
@@ -16,7 +16,7 @@ history; SemVer takes over from `v0.3.0` onward.
---
## Unreleased
## v0.3.2 — 2026-05-10
### ✨ Features
@@ -47,7 +47,56 @@ what changed.
### 🧹 Maintenance
- **chore: trigger v0.3.2 release workflow (GitHub deduped previous tag push)** ([255c743](https://github.com/noonghunna/club-3090/commit/255c743dff59149ef83a06a4e63b0e74153c61cb))
The v0.3.2 tag was originally pushed at commit 64b0474 but GitHub didn't
emit a CreateEvent (likely dedup after delete + re-push to same SHA), so
the release.yml workflow never fired. Empty commit gives the tag a fresh
SHA that GitHub will process cleanly.
- **chore(changelog): automate CHANGELOG + release notes from commits via cliff (Option A)** ([64b0474](https://github.com/noonghunna/club-3090/commit/64b0474a628d5a91222446d90b4974b14ab3237f))
CHANGELOG.md is now auto-generated from commit messages by git-cliff in
the release workflow. Hand-edits below the static header will be wiped on
the next tag.
Workflow (`.github/workflows/release.yml`):
- On tag push (`v[0-9]+.[0-9]+.[0-9]+`):
1. Render GitHub Release body: `git-cliff --latest --strip header`
→ just the per-version section, no SemVer preamble repeat
2. Regenerate full CHANGELOG.md: `git-cliff` (default = all tags)
→ preserves header + all historical sections
3. Commit CHANGELOG.md back to master with `[skip ci]` marker
4. Publish GitHub Release with the latest-only body
Template (`cliff.toml`):
- `[changelog].header` now holds the SemVer preamble + CalVer→SemVer
mapping table (preserved across regens; stripped from GitHub Release
bodies via `--strip header`).
- `body` template now renders the **full commit message** (subject as
bold bullet, body indented below) instead of just the first line.
Rich narrative I write in commit message bodies (tables, validation
numbers, before/after diffs) now flows into both CHANGELOG.md and the
GitHub Release page from the same source.
- Per-release Pin/Diff footer guarded with `{% if version %}` so the
Unreleased section doesn't emit empty links.
CHANGELOG.md replaced with the auto-gen output. Past hand-written tables
and phase breakdowns are replaced by the corresponding commit messages
(those were already rich for commits that mattered — v0.3.1 soak-helper
fix has its Before/After table in the commit body and renders fine).
Going forward: just write rich commit messages and tag. Both surfaces
update automatically. No hand-edit of CHANGELOG.md required.
[Pin: `git checkout v0.3.2`] · [Full diff](https://github.com/noonghunna/club-3090/compare/v0.3.1...v0.3.2)
## v0.3.1 — 2026-05-10
+8 -18
View File
@@ -14,10 +14,10 @@
header = """
# Changelog
Auto-generated from commit messages by [git-cliff](https://git-cliff.org/).
Update flow: write rich commit message bodies → tag → CI regenerates this file
and the GitHub Release notes from the same source. Don't hand-edit below the
header — your changes will be overwritten on the next tag.
Auto-generated from commit subjects by [git-cliff](https://git-cliff.org/) on tag
push. Click any commit SHA below to see the full message body (why / how /
validation data) — those live in `git log`, not here. Don't hand-edit; the file
is regenerated on every tag.
**Versioning:** SemVer in `0.x` — treat any minor bump as potentially breaking
until `1.0`. Past CalVer tags (`v2026.05.09`, `v2026.05.10`) are preserved for
@@ -36,10 +36,9 @@ history; SemVer takes over from `v0.3.0` onward.
# the most recent block renders; for full regen of CHANGELOG.md, every tagged
# block renders in reverse-chronological order.
#
# Commit message body (everything after subject + blank line) renders below
# the subject bullet so rich narrative (tables, validation data, before/after
# numbers) ends up in both CHANGELOG.md and the GitHub Release page from the
# same source. Tera templating; see https://keats.github.io/tera/docs/.
# **Subject-line only** — the commit's first line, with a link to the full
# commit. Full body (why/how/validation data) lives in `git log` and is one
# click away via the SHA link. Keeps CHANGELOG.md skim-readable.
body = """
{% if version %}\
## {{ version }}{% if timestamp %} — {{ timestamp | date(format="%Y-%m-%d") }}{% endif %}
@@ -52,16 +51,7 @@ body = """
### {{ group }}
{% for commit in commits %}\
- **{{ commit.message | split(pat="\\n") | first | trim }}**{% if commit.github.pr_number %} ([#{{ commit.github.pr_number }}](https://github.com/noonghunna/club-3090/pull/{{ commit.github.pr_number }}) by @{{ commit.github.username }}){% else %} ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/noonghunna/club-3090/commit/{{ commit.id }})){% endif %}
{% set body_lines = commit.message | split(pat="\\n") %}\
{% if body_lines | length > 1 %}\
{% set body = body_lines | slice(start=1) | join(sep="\\n") | trim %}\
{% if body %}
{{ body | replace(from="\\n", to="\\n ") }}
{% endif %}\
{% endif %}\
- {{ commit.message | split(pat="\\n") | first | trim }}{% if commit.github.pr_number %} ([#{{ commit.github.pr_number }}](https://github.com/noonghunna/club-3090/pull/{{ commit.github.pr_number }}) by @{{ commit.github.username }}){% else %} ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/noonghunna/club-3090/commit/{{ commit.id }})){% endif %}
{% endfor %}
{% endfor %}