nx release changelog: re-rendering an existing version never replaces the entry when versionTitleDate is enabled
Author: BurzmalianCreated Sep 17, 2026Updated Sep 17, 2026
Current Behavior
nx release changelog <existing version> detects the existing entry via parseChangelogMarkdown, then tries to swap it with (packages/nx/src/command-line/release/changelog.ts, still on master):
changelogContents.replace(`## ${releaseVersion.rawVersion}\n\n\n${existingVersionToUpdate.body}`, contents)With renderOptions.versionTitleDate: true (the documented default) the heading on disk is ## 1.1.0 (2026-09-17), so the pattern never matches. The file is left untouched and nx reports:
NOTE: There was no diff detected for the changelog entry. Maybe you intended to pass alternative git references via --from and --to?
NX No changes detected for changelogs— even when the freshly rendered body differs from the existing entry.
Expected Behavior
The existing entry is replaced regardless of the heading's date suffix (match on the heading line, not on an exact ## x.y.z\n\n\n prefix), or the command fails loudly instead of silently doing nothing.
GitHub Repo
No response (inline reproduction below; can push a repo on request)
Steps to Reproduce
- Project released once with
versionTitleDate: true(default), e.g.packages/lib-a/CHANGELOG.mdstarts with## 1.1.0 (2026-09-17)and lists onefeatand threefixcommits. - Re-render the same version from a later commit so the entry would lose the
feat:npx nx release changelog 1.1.0 --from <sha after the feat> --to release/1.1.0 --dry-run --git-commit=false --git-tag=false - Output: "no diff detected" / "No changes detected for changelogs"; the stale entry remains.
Nx Report
Node : 24.14.0
OS : darwin-arm64
Native Target : aarch64-macos
npm : 11.9.0
nx : 23.1.3
@nx/js : 23.1.3
@nx/devkit : 23.1.3
@nx/workspace : 23.1.3
typescript : 6.0.3Package Manager Version
npm 11.9.0
Operating System
- macOS
- Linux
- Windows
Source: nrwl/nx