Skip to content

chore: automate releases with release-please#43

Merged
StrandedTurtle merged 1 commit into
mainfrom
claude/youthful-pasteur-2f6s72
Jul 8, 2026
Merged

chore: automate releases with release-please#43
StrandedTurtle merged 1 commit into
mainfrom
claude/youthful-pasteur-2f6s72

Conversation

@StrandedTurtle

Copy link
Copy Markdown
Owner

Manual releases were error-prone in practice — v1.0.1 got tagged without package.json ever being bumped to match, and I had to hand-fix that drift earlier today. This replaces the whole manual tag-and-bump flow with release-please.

How it works

  • release-please-config.json / .release-please-manifest.json (seeded at the current 1.0.2): release-type: simple, with extra-files keeping server/package.json and client/package.json — plus both their package-lock.jsons (top-level version and the nested packages[""].version) — in lockstep automatically. No more manual version editing, ever.
  • release-please.yml runs on every push to main, maintaining one standing Release PR with the next version + a changelog built from feat:/fix:/deps:/etc. commits since the last release (commit-prefix convention documented in CONTRIBUTING.md). It's set to auto-merge the moment required CI passes — that merge is what actually cuts the git tag + GitHub Release.
  • release.yml no longer creates the GitHub Release itself (release-please does, with a much better categorized changelog than the old generic auto-notes) — it still builds :latest on every main push and pinned :X.Y.Z/:X.Y images off the tag release-please creates.

Why auto-merge (not a manual gate)

Matches the existing precedent in this repo (Dependabot patch/minor already auto-merges). CONTRIBUTING.md has a one-line note on how to switch to a manual-merge gate instead, if preferred later.

Verification

  • release-please-config.json / .release-please-manifest.json: valid JSON.
  • All workflow YAML: valid.
  • The extra-files jsonpaths resolve against the real lockfiles (checked with jq directly — both .version and .packages[""].version return 1.0.2 in both lockfiles).
  • Server tests: 111/111.

🤖 Generated with Claude Code


Generated by Claude Code

Manual releases were error-prone in practice: v1.0.1 got tagged without
package.json ever being bumped to match, and I had to hand-fix that drift
today. Replace the whole manual tag-and-bump flow with release-please:

- release-please-config.json / .release-please-manifest.json (seeded at the
  current 1.0.2): release-type 'simple', extra-files keep server+client
  package.json AND package-lock.json (both the top-level and nested
  packages[''].version fields) in lockstep automatically.
- release-please.yml runs on every push to main, maintaining one standing
  Release PR (version + changelog from feat:/fix:/deps:/etc. commits since
  the last release) and auto-merging it once required CI passes — that merge
  is what cuts the git tag + GitHub Release.
- release.yml no longer creates the GitHub Release itself (release-please
  does, with a much better categorized changelog); it still builds :latest on
  every main push and pinned :X.Y.Z/:X.Y images off the tag release-please
  creates.
- CONTRIBUTING.md documents the commit-prefix convention (feat/fix/deps/...
  vs docs/chore/refactor/... which don't trigger a release) and the new
  fully-automated flow, with a one-line note on how to switch to a
  manual-merge gate instead of full auto-merge if ever wanted.

Verified: config/manifest JSON valid, all workflow YAML valid, the extra-files
jsonpaths resolve against the real lockfiles (checked with jq), server tests
still 111/111.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Lj6nYJQDtLaZFvvEQJGM4
@StrandedTurtle StrandedTurtle merged commit bd8840d into main Jul 8, 2026
3 checks passed
@StrandedTurtle StrandedTurtle deleted the claude/youthful-pasteur-2f6s72 branch July 8, 2026 09:28
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