Skip to content

chore(release): switch to per-package release PRs for version in title (LAB-888) - #87

Merged
27Bslash6 merged 1 commit into
mainfrom
lab-888-release-please-title-version
Jul 26, 2026
Merged

chore(release): switch to per-package release PRs for version in title (LAB-888)#87
27Bslash6 merged 1 commit into
mainfrom
lab-888-release-please-title-version

Conversation

@27Bslash6

@27Bslash6 27Bslash6 commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Problem

release-please's generated release PR title is uninformative: chore: release main (#83) — no version, no package. Since cachekit-ts is squash-merge-only with squash_merge_commit_title=PR_TITLE, that title becomes the permanent commit header on main when the release PR merges.

Root cause (verified against release-please source, not just docs)

The combined/manifest PR title uses MANIFEST_PULL_REQUEST_TITLE_PATTERN = 'chore: release ${branch}' (release-please src/manifest.ts). The Merge plugin (src/plugins/merge.ts) only populates ${component}/${version} from a candidate release at path === '.':

if (candidate.path === '.') {
  rootRelease = candidate;
}
...
title: PullRequestTitle.ofComponentTargetBranchVersion(
  rootRelease?.pullRequest.title.component,
  this.targetBranch,
  rootRelease?.pullRequest.title.version,
  ...
)

None of this repo's 3 packages (packages/cachekit, packages/cachekit-core-ts, packages/cachekit-core-wasm) live at root path ., so rootRelease is always null — meaning ${component}/${version} render empty regardless of pull-request-title-pattern or group-pull-request-title-pattern configuration, and regardless of how many packages bump in a cycle. Setting either title-pattern option to include those tokens would not have fixed anything.

Fix

"separate-pull-requests": true in release-please-config.json. Each package now gets its own release PR (only for packages with releasable changes — usually just cachekit per cycle), using release-please's per-component default title pattern (chore${scope}: release${component} ${version}), which does populate component/version since each per-package candidate carries its own. Example: chore(main): release cachekit 0.1.5.

Verified

  • Matches pr-title-lint.yml's conventional-commit regex.
  • Release detection in .github/workflows/release-please.yml reads per-path outputs (packages/cachekit--release_created etc.) — unaffected by combined vs. separate PRs.
  • No linked-versions plugin configured, so per-package independent versioning (already the case per .release-please-manifest.json) is unaffected.
  • Noted but out of scope: the Assign release PR step keys off steps.release.outputs.pr (first PR only) — in the common one-package-bumps-per-cycle case this is unaffected; if 2+ packages ever bump in the same cycle, only one of the resulting PRs gets auto-assigned. Not touching this here — config-file-only scope per LAB-888.

Docs gate

No docs needed: internal release-automation config only, no user-facing SDK surface.

LAB-888

Summary by CodeRabbit

  • Chores
    • Updated release management configuration to create separate pull requests for individual releases.

…e (LAB-888)

Combined manifest PR titles (chore: release main) never render component
or version — release-please's Merge plugin only pulls those from a
candidate at path "." (MANIFEST_PULL_REQUEST_TITLE_PATTERN = 'chore:
release ${branch}'), and none of this repo's 3 packages live at root.
separate-pull-requests gives each package its own release PR using the
per-component pattern, which does render (e.g. 'chore(main): release
cachekit 0.1.5').
@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 78ad4d1d-f148-4ac3-9129-7f63fe978101

📥 Commits

Reviewing files that changed from the base of the PR and between 555dd99 and 2dcdb13.

📒 Files selected for processing (1)
  • release-please-config.json

Walkthrough

The release-please configuration now enables separate pull requests through the separate-pull-requests setting.

Changes

Release Please configuration

Layer / File(s) Summary
Enable separate release pull requests
release-please-config.json
Adds "separate-pull-requests": true to the release-please configuration.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes enabling per-package release PRs to include version info, which matches the config change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch lab-888-release-please-title-version

Comment @coderabbitai help to get the list of available commands.

@27Bslash6
27Bslash6 merged commit 78e20b2 into main Jul 26, 2026
13 checks passed
@27Bslash6
27Bslash6 deleted the lab-888-release-please-title-version branch July 26, 2026 23:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant