Skip to content

fix(release): add Changelog title for correct release-please insertion#255

Merged
jsteinich merged 1 commit into
mainfrom
claude/fix-changelog-rp-header
Jun 8, 2026
Merged

fix(release): add Changelog title for correct release-please insertion#255
jsteinich merged 1 commit into
mainfrom
claude/fix-changelog-rp-header

Conversation

@so0k

@so0k so0k commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Description

Fixes the changelog insertion position in release-please's standing release PR (observed in #254, where ## [0.23.4] was injected below ## 0.23.3 instead of at the top).

Root cause

release-please's changelog updater finds where to insert a new entry with this regex (src/updaters/changelog.ts):

DEFAULT_VERSION_HEADER_REGEX = '\n###? v?[0-9[]'

The leading \n means it only matches a version header that has a newline before it, and it inserts immediately before the first match. Our CHANGELOG.md began at byte 0 with:

## 0.23.3      ← no preceding newline → not matched
...
## 0.23.2      ← preceded by \n → first match

So the top ## 0.23.3 was skipped and the new entry was inserted before ## 0.23.2 — i.e. below 0.23.3.

Fix

Prepend a # Changelog H1 so the first version header has a preceding newline:

+# Changelog
+
 ## 0.23.3

release-please now inserts new entries at the top. The plain (## 0.23.3) vs. linked (## [0.23.4](…)) header format is irrelevant to the matcher, so existing entries are left untouched — minimal 2-line diff.

After merge

On the next push to main, release-please rebases its standing release PR (#254) and will regenerate the CHANGELOG.md diff with the entry inserted at the top.

Checklist

  • I have updated the PR title to match CDKTN's style guide
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation if applicable

https://claude.ai/code/session_0168ykjbd1W96iSBoQUEkSLE


Generated by Claude Code

release-please's changelog updater locates the insertion point with
`/\n###? v?[0-9[]/`, which requires a newline *before* a version header.
CHANGELOG.md began at byte 0 with `## 0.23.3` (no preceding newline and no
title), so the regex skipped the top entry and matched the next header
`\n## 0.23.2` — inserting new release entries below 0.23.3 instead of at the
top (observed in release PR #254).

Prepend a `# Changelog` H1 so the first version header has a preceding
newline; release-please then inserts new entries at the top. Plain vs.
linked header format is irrelevant to the matcher. Minimal 2-line diff;
existing entries unchanged.

https://claude.ai/code/session_0168ykjbd1W96iSBoQUEkSLE
@so0k so0k requested a review from a team as a code owner June 8, 2026 02:10
@so0k so0k added ci/skip-examples Skip Examples Testing in PR ci/skip-integration Skips Integration Testing on PR ci/skip-provider-integration Skips Provider Integration Tests on PR ci/skip-unit Skips Unit Testing on PR labels Jun 8, 2026
@sakul-learning

Copy link
Copy Markdown
Contributor

I ran a local release-please dry-run against a temp clone where origin/main was the simulated merge of PR #255 into current main.

Result: ✅ the fix works. Release Please would open chore(release): release v0.23.4, and applying the generated changelog updater inserts the ## [0.23.4](https://github.com/open-constructs/cdk-terrain/compare/v0.23.3...v0.23.4) (2026-06-08) entry immediately after # Changelog and before ## 0.23.3.

Verified positions in the simulated changelog:

  • ## [0.23.4]... at line 3
  • ## 0.23.3 at line 20
  • ## 0.23.2 at line 49

So this should correct the standing release PR insertion order once release-please rebases/regenerates it after merge.

@jsteinich jsteinich merged commit 004818a into main Jun 8, 2026
278 of 280 checks passed
@jsteinich jsteinich deleted the claude/fix-changelog-rp-header branch June 8, 2026 13:01
so0k pushed a commit that referenced this pull request Jul 3, 2026
🤖 Release PR — merge to cut a new release. Kept open and rebased
as commits land on `main`.
---


<details><summary>0.23.4</summary>

##
[0.23.4](v0.23.3...v0.23.4)
(2026-07-02)


### Features

* **cli:** validate Terraform CLI feature versions
([#237](#237))
([32d434c](32d434c))
* declared Terraform/OpenTofu target versions (validation foundation)
([#269](#269))
([0aa2343](0aa2343))
* **lib:** S3-backend - Add `useLockfile` field and update
`dynamodbTable` deprecated JSDoc
([#234](#234))
([32a408f](32a408f))
* **lib:** validate Fn usage against Terraform/OpenTofu versions
([#268](#268))
([cdf8115](cdf8115))


### Bug Fixes

* **cli:** don't mistake terraform error output for a missing-variable
prompt
([#267](#267))
([0ea946f](0ea946f))
* **cli:** release terraform state lock when interrupting diff/deploy
([#284](#284))
([de617db](de617db))
* **cli:** resolve prebuilt Java provider versions via repo1.maven.org
([#285](#285))
([d5af07d](d5af07d))
* **gha:** Adding CHANGELOG.md to prettier ignore list
([#258](#258))
([5160469](5160469))
* **gha:** pull jsii-terraform CI image from GHCR instead of Docker Hub
([#261](#261))
([f19d34b](f19d34b))
* **provider-generator:** copy only publishable files into the jsii
compile bundle
([#292](#292))
([562d4c7](562d4c7))
* **provider-generator:** match shorthand provider sources against
OpenTofu schema keys
([#293](#293))
([fda0103](fda0103))
* **release:** add Changelog title for correct release-please insertion
([#255](#255))
([004818a](004818a))
* **release:** drop devEngines.packageManager that broke npm publish
([ef508a6](ef508a6))
* **tools:** repair generate-function-bindings tool
([#273](#273))
([821e1cf](821e1cf))


### Miscellaneous Chores

* Add Gradle to Mise config
([#271](#271))
([1578270](1578270))
* add pnpm to mise
([#266](#266))
([48ab91f](48ab91f))
* add uv to mise
([#260](#260))
([163cf3d](163cf3d))
* **deps:** bump nrwl/nx-set-shas from
38457b511e60ee4e1da09255b658e480748a1af4 to
afb73a62d26e41464e9254689e1fd6122ee683c1
([#236](#236))
([b5ac018](b5ac018))
* **deps:** bump the github-actions-backward-compatible group across 1
directory with 7 updates
([#235](#235))
([de67d9f](de67d9f))
* **deps:** replace uuid dependency with node:crypto.randomUUID
([#291](#291))
([6d3657a](6d3657a))
* ESLint ignore test edge-provider-bindings
([#270](#270))
([ba407bb](ba407bb))
* Fix Verdaccio logging config
([#272](#272))
([aded64b](aded64b))
* **gha:** parallelize provider binding generation for documentation
examples
([#244](#244))
([0a9c955](0a9c955))
* Migrate package manager from yarn to pnpm
([#170](#170))
([d23da4e](d23da4e))
* migrate planning artifacts to cdktn-planning [skip ci]
([968c358](968c358))
* **release:** add release-please automation for versioning
([#243](#243))
([c759eec](c759eec))
* Remove dependency-pinner tool
([#250](#250))
([42c27d5](42c27d5))
* Remove unused dependencies
([#281](#281))
([c7de65e](c7de65e))
* **tests:** run verdaccio in-process
([#248](#248))
([c17677d](c17677d))
* Update JSII version constraint
([#245](#245))
([d89558f](d89558f))
* Update scheduled workflows to only run on open-constructs/cdk-terrain
([#256](#256))
([ba408cf](ba408cf))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: open-constructs-cdktn[bot] <291052431+open-constructs-cdktn[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/skip-examples Skip Examples Testing in PR ci/skip-integration Skips Integration Testing on PR ci/skip-provider-integration Skips Provider Integration Tests on PR ci/skip-unit Skips Unit Testing on PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants