diff --git a/.mokogitea/workflows/auto-release.yml b/.mokogitea/workflows/auto-release.yml index 1bb92072..f2063cbd 100644 --- a/.mokogitea/workflows/auto-release.yml +++ b/.mokogitea/workflows/auto-release.yml @@ -380,10 +380,13 @@ jobs: import sys version, date = sys.argv[1], sys.argv[2] content = open('CHANGELOG.md').read() - old = '## [Unreleased]' - new = f'## [Unreleased]\n\n## [{version}] --- {date}' - content = content.replace(old, new, 1) - open('CHANGELOG.md', 'w').write(content) + marker = f'## [{version}]' + # Idempotent: only promote when this version header isn't already present, + # otherwise re-runs (or same-version builds) create empty duplicate headers. + if marker not in content: + new = f'## [Unreleased]\n\n{marker} --- {date}' + content = content.replace('## [Unreleased]', new, 1) + open('CHANGELOG.md', 'w').write(content) " "$VERSION" "$DATE" git add CHANGELOG.md git commit -m "chore: promote changelog [Unreleased] → [${VERSION}]" || true diff --git a/CHANGELOG.md b/CHANGELOG.md index 9792d5fa..f84c1675 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog ## [Unreleased] +### Fixed +- Release automation: the changelog-promote step is now idempotent — it only inserts a `## [version]` header when that version isn't already present, preventing the empty, duplicated version headers that repeated/same-version builds were producing. (workflow) + ## [02.56.08] --- 2026-07-05 ## [02.56.08] --- 2026-07-05