fix(release): restore two-component config + linked-versions to fix CLI starvation#227
Merged
Merged
Conversation
…LI starvation The single-component collapse (#222, #226) was the wrong shape. release-please v17.6.0 cannot create a release for a single root package with a scoped package-name: `this.component = options.component || normalizeComponent(name)` falsy-coerces any empty component and derives `cli` from `@opencodehub/cli`, then buildRelease's standalone-component check rejects the component-less release PR (`PR component: undefined does not match configured component: cli`) and tags nothing → release_created=false → npm never publishes. Proven from source; `component: ""` provably cannot work (the `||`). Why two components is correct: with 2 release entries the aggregate PR has length===2, so that standalone-component check is SKIPPED entirely — which is why this scheme released reliably for 20+ versions. The ORIGINAL starvation bug (root absorbs all commits → 0.8.5 while published cli starves at 0.7.4) is now fixed the purpose-built way: the `linked-versions` plugin links root+cli so any commit that bumps root bumps cli in lockstep. cli publishes every release. Manifest reseeded to the last component-format tags (root 0.8.5, cli 0.7.4 — both tags exist, so boundary detection is clean and there's no giant-changelog risk). package.json versions aligned. The bare v0.7.4/v0.7.5 bootstrap tags from the abandoned single-component attempt are inert under this config (no component → don't match).
Merged
theagenticguy
pushed a commit
that referenced
this pull request
Jun 11, 2026
🤖 Automated release via release-please --- <details><summary>root: 0.8.6</summary> ## [0.8.6](root-v0.8.5...root-v0.8.6) (2026-06-11) ### Bug Fixes * **release:** collapse release-please to one published @opencodehub/cli component ([#222](#222)) ([ab749bd](ab749bd)) * **release:** make npm publish idempotent on stuck-release re-runs ([#224](#224)) ([12e1c66](12e1c66)) * **release:** restore two-component config + linked-versions to fix CLI starvation ([#227](#227)) ([f849f24](f849f24)) * **release:** set explicit empty component so the CLI release PR matches ([#226](#226)) ([4188b52](4188b52)) </details> <details><summary>cli: 0.8.6</summary> ## [0.8.6](cli-v0.7.4...cli-v0.8.6) (2026-06-11) ### Bug Fixes * **release:** restore two-component config + linked-versions to fix CLI starvation ([#227](#227)) ([f849f24](f849f24)) </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: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why the single-component approach failed (proven from source)
The collapse to one root package (#222, #226) structurally cannot create a release in release-please v17.6.0:
this.component = options.component || normalizeComponent(packageName)— the||falsy-coercescomponent: "", so it derivesclifrom@opencodehub/cli.buildRelease's standalone-component check (single release entry) then compares the release PR's component (undefined— branchrelease-please--branches--main) againstcli→ mismatch → zero releases built,release_created=false, npm never publishes.⚠ PR component: undefined does not match configured component: cli.component: ""provably can't fix it.Why two components is the correct shape
With 2 components the aggregate release PR has 2 release entries (
length === 2), so that broken standalone-component check is skipped entirely — which is exactly why this scheme released reliably for 20+ versions. Reverting is the proven path, not a regression.The original bug, fixed properly
The starvation bug you hit (private root absorbs every commit → ran to 0.8.5, while the published cli only saw
packages/cli/**→ starved at 0.7.4) is now fixed with the purpose-builtlinked-versionsplugin:linked-versions keeps root + cli in lockstep — any commit that bumps root bumps cli to the same version. The published CLI now advances on every release, which is the actual fix you asked for.
State reconciliation
root 0.8.5,cli 0.7.4(both tags exist → clean boundary detection, no giant-changelog risk).package.jsonversions aligned (root 0.8.5, cli 0.7.4 = npm latest).autorelease: pendinglabel on the abandoned single-component PR chore: release main #225.v0.7.4/v0.7.5bootstrap tags from the abandoned attempt are inert under this config (no component → don't match).Expected on merge
release-please opens a release PR bumping both components to 0.8.6 (linked, highest+patch). Merging it →
release_created=true→ tagsroot-v0.8.6+cli-v0.8.6→ automatedrelease-please.yml → release.ymlchain → npm publishes@opencodehub/cli@0.8.6via the matching trusted-publisher OIDC path. (npm jumps 0.7.4 → 0.8.6; forward + valid. cli now tracks the unified line.)