Repository navigation
ci(clients): Group client changelog by Python and Rust client - #711
Merged
Merged
Conversation
Co-Authored-By: Lorenzo Cian <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #711 +/- ##
==========================================
+ Coverage 91.81% 91.90% +0.08%
==========================================
Files 116 117 +1
Lines 24065 24124 +59
==========================================
+ Hits 22095 22170 +75
+ Misses 1970 1954 -16
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Co-Authored-By: Lorenzo Cian <[email protected]>
lcian
reviewed
Oct 22, 2026
Co-Authored-By: Lorenzo Cian <[email protected]>
lcian
marked this pull request as ready for review
October 22, 2026 09:41
jan-auer
approved these changes
Oct 22, 2026
Co-Authored-By: Lorenzo Cian <[email protected]>
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.
The client changelog will now have exactly two sections, Python Client and Rust Client, chosen by the PR title scope. PRs that touch the clients also get a changelog preview comment.
Requires craft 3.0.0 or newer, which includes getsentry/craft#919. Older versions add a stray
#### Othersubheading under a client section with 2+ entries.What changes for you
PR titles decide the changelog. For a client change, scope the title:
feat(py-client): Add automatic resumable uploadsis listed under Python Clientfix(rs-client): Drain discarded response bodiesis listed under Rust ClientCraft drops the
feat(...)prefix, so the entry reads "Add automatic resumable uploads by @you in #123".Example output, generated from our real history since
0.2.5with this config and the craft fix:Changelog preview. When a PR touches
clients/**, a bot comments with how the PR will look in the changelog and what bump it implies. The comment updates when you edit the title, description or labels. It's informational only: it never fails or blocks the PR. PRs that don't touchclients/get no comment.Custom wording. If the title isn't a good user-facing description, add this to the PR description:
That text replaces the title in the changelog. Each top-level bullet becomes a separate entry, all under the section picked by the title's scope.
Leaving a PR out. Add the
skip-changeloglabel, or put#skip-changeloganywhere in the PR description.Things to be careful of
py-clientorrs-client. Older variants (python-client,rust-client,rust,clients, no scope) aren't matched. A PR that touchesclients/without a matching scope still goes into the changelog, under a trailing### Othersection. The preview shows this, so check it.objectstore-typesdon't get a preview and aren't in the changelog. Craft runs fromclients/and only collects commits that touchclients/. If a types-only change matters to users, also touch a client in the PR.Changes
clients/.craft.yml:changelogPolicy: autobecomeschangelog.policy: auto, which removes the deprecation warning every release logged. Also setsscopeGrouping: false.clients/.github/release.yml(new): the Python Client / Rust Client categories. Each title is listed several times so that breaking,featand other changes still produce major, minor and patch bumps..github/workflows/changelog-preview.yml(new): calls craft's reusable preview workflow, pinned to thev3commit, withworking-directory: clientsand a path filter onclients/**. It doesn't pass repo secrets (secrets: inherit); the called workflow getsGITHUB_TOKENautomatically and needs nothing else.AGENTS.md: short PR guidance covering the scopes, splitting PRs, and### Changelog Entry.Alternative considered: type sections with client subheadings
Craft can also keep the usual type sections and put a client subheading inside each:
That uses the default categories with
scopeGrouping: true. I didn't use it, for two reasons:py-clientwould show up as "Py Client"; to get "Python Client", PR titles would needpython-client/rust-client.(python-client) Foo, and sometimes under a#### Other. So the layout would change from release to release.The nesting the other way round (Python Client → Features / Fixes) isn't possible without a craft change: craft always nests type category first, then scope.
via @lcian.
--
View Junior Session [Sentry]