pnpm/pnpm#14934 (in pnpm 12.7.0) gives every private project
`repository` changelog storage: `pnpm version -r` commits its section to
CHANGELOG.md. That is right for packages that are never published, but
the npm wrappers of the Rust products (pacquet, `@pnpm/napi`,
`@pnpm/pnpr`) are private in-repo only to keep a workspace-wide publish
from shipping them. Their generate-packages scripts drop the flag when
they are published for real.
The first release bumped with pnpm 12.7.0 (pnpm/pnpm#16312) therefore
committed their sections to CHANGELOG.md and parked nothing. release.yml
reads the parked section for the GitHub release body, and the
publish-time changelog composer reads it for the npm tarball's
CHANGELOG.md, so both would have come out empty. That release was fixed
by hand.
bump.ts now moves each wrapper's freshly written CHANGELOG.md to
`.changeset/changelogs/<name>@<version>.md` after `pnpm version -r`.
Intent consumption is unchanged: a private project's intents are
consumed immediately, and the parked section is garbage-collected by the
next bump once the registry confirms the published changelog carries it.
The move refuses a CHANGELOG.md holding anything but the released
section, so a stale file cannot be parked under the wrong version.
The script runs before the workspace is installed, so it mirrors the
filename encoding of `pendingChangelogPath` in
`@pnpm/releasing.versioning` instead of importing it.
Related to pnpm/tasks#38.