Skip to content

feat: add automatic release changelog with release-please#21

Merged
blimmer merged 3 commits into
mainfrom
17-automatic-release-changelog
May 6, 2026
Merged

feat: add automatic release changelog with release-please#21
blimmer merged 3 commits into
mainfrom
17-automatic-release-changelog

Conversation

@blimmer
Copy link
Copy Markdown
Contributor

@blimmer blimmer commented May 6, 2026

Closes #17.

Summary

Adds release-please as the source of truth for stable-release versioning and CHANGELOG.md, while keeping the existing goreleaser pipeline as the artifact-distribution layer. release-please opens a Release PR on each push to main; merging it creates the tag and a GitHub Release whose body is the new CHANGELOG entry. Goreleaser then runs on the tag push with release.mode: keep-existing, attaching tarballs and casks without disturbing the body. Manual alpha tags continue to bypass release-please entirely. The CLI's update prompts and the plan UI's update card now link to the per-version GitHub Release page so users can see what changed before upgrading.

Review focus

  • release-please / goreleaser composition. Both tools can create a GitHub Release; the coordination knob is goreleaser's release.mode: keep-existing (.goreleaser.yaml). Without it, goreleaser would clobber release-please's curated body. Worth eyeballing the order of operations described in release-please-config.json + release-please.yml against the existing tag-triggered release.yml.
  • release-type: go for a TypeScript repo. The label is misleading but the behavior fits: it bumps CHANGELOG.md only, not any version file. We don't want package.json drifting from 0.0.0-development since goreleaser injects the real version from the tag.
  • Manifest seeded at 0.2.0. Pinning matches the most recent stable tag so the first release-please run computes from v0.2.0 forward, not from repo inception.
  • Action SHA pinning. All three new actions (amannn/action-semantic-pull-request, googleapis/release-please-action, actions/create-github-app-token) are SHA-pinned with the version as a trailing comment. Matches existing pattern in release.yml.
  • GH App token in release-please.yml. Same CB_PR_AUTOMATION_APP_* pair already used by release.yml. Required so the tag release-please pushes triggers downstream workflows — a default GITHUB_TOKEN would not.
  • UpdateNoticeCard link placement. First pass put a "What's new" link mid-description, which wrapped awkwardly in the 20rem card. Final design makes v{version} in the title itself the link — same compact 3-line layout as before.

Commits

  • 5e29026 — feat: add automatic release changelog with release-please
  • 5ee1908 — refactor: use shared GITHUB_REPO_URL for release links
  • 3d07f37 — docs: document release process in CONTRIBUTING

@@ -0,0 +1,37 @@
name: Lint PR title
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will add this to the required checks once merged. It ensures that people follow conventional-commit so our changelog works.

contents: write
pull-requests: write
steps:
- name: Generate ContextBridge app token
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be able to write to the repo, so using our app

Comment on lines +15 to +21
{ "type": "docs", "section": "Documentation", "hidden": true },
{ "type": "chore", "section": "Miscellaneous", "hidden": true },
{ "type": "style", "section": "Styles", "hidden": true },
{ "type": "refactor", "section": "Refactors", "hidden": true },
{ "type": "test", "section": "Tests", "hidden": true },
{ "type": "build", "section": "Build", "hidden": true },
{ "type": "ci", "section": "CI", "hidden": true }
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts on hidden sections? Does this seem like a good starting place?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea think this looks like a good starting point in that we want user-facing changes visible but refactoring etc not.

@blimmer blimmer force-pushed the 17-automatic-release-changelog branch from 577186f to 3d07f37 Compare May 6, 2026 17:37
@blimmer blimmer marked this pull request as ready for review May 6, 2026 17:38
@blimmer blimmer requested a review from jcarver989 as a code owner May 6, 2026 17:38
Copy link
Copy Markdown
Contributor

@jcarver989 jcarver989 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks reasonable, thanks!

Comment on lines +15 to +21
{ "type": "docs", "section": "Documentation", "hidden": true },
{ "type": "chore", "section": "Miscellaneous", "hidden": true },
{ "type": "style", "section": "Styles", "hidden": true },
{ "type": "refactor", "section": "Refactors", "hidden": true },
{ "type": "test", "section": "Tests", "hidden": true },
{ "type": "build", "section": "Build", "hidden": true },
{ "type": "ci", "section": "CI", "hidden": true }
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea think this looks like a good starting point in that we want user-facing changes visible but refactoring etc not.

@blimmer blimmer merged commit 45a1bf1 into main May 6, 2026
17 checks passed
@blimmer blimmer deleted the 17-automatic-release-changelog branch May 6, 2026 17:48
blimmer added a commit that referenced this pull request May 8, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.3.0](v0.2.0...v0.3.0)
(2026-05-08)


### ⚠ BREAKING CHANGES

* rename Claude plugin to planbridge@contextbridge; refresh plugins on
update ([#52](#52))

### Features

* add automatic release changelog with release-please
([#21](#21))
([45a1bf1](45a1bf1))
* rename Claude plugin to planbridge@contextbridge; refresh plugins on
update ([#52](#52))
([2794ae6](2794ae6))
* **ui:** add GitHub link to header help menu
([#19](#19))
([c36289b](c36289b))


### Bug Fixes

* emit plan review analytics from shared runner
([#48](#48))
([5c769ff](5c769ff))
* **plan:** pre-scan src for transitive deps to stop vitest reload flake
([3b3cc0c](3b3cc0c)),
closes [#12](#12)
* **plan:** stop vitest reload flake from lazy zod optimization
([#15](#15))
([3b3cc0c](3b3cc0c))
* refresh Claude marketplace cache during install
([#62](#62))
([58be09a](58be09a))
* resolve contextbridge via PATH for post-update refresh
([#64](#64))
([f658af4](f658af4))

---
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: contextbridge-pr-automation[bot] <259134118+contextbridge-pr-automation[bot]@users.noreply.github.com>
Co-authored-by: Ben Limmer <ben@benlimmer.com>
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.

Add automatic release changelog generator

2 participants