Bump version to 0.12.0 - #556
Merged
Merged
Conversation
jeremy
added a commit
that referenced
this pull request
Aug 4, 2026
Ten version constants and four lockfiles, via scripts/bump-version.sh. Also corrects MIGRATING.md's release counts, which were measured with a merge-timestamp filter. That filter has an off-by-one at the boundary: #556's squash commit IS 7e2925d, the commit v0.12.0 tags, and its mergedAt lands a moment after that commit's own timestamp — so a `mergedAt > tag_time` comparison attributes a PR that shipped in v0.12.0 to this release. Counting by ancestry instead, "in this release" is what the range operator already means: reachable from HEAD, not reachable from v0.12.0. That gives 56 merged PRs, not 55. Breaking stays 15 — #556 is not in that roster, so only the total moved. The baseline also moves from 2afc977 to 931c36a. The old baseline predated this guide's own merge, so the document could not count itself; 931c36a IS that merge and is the last commit of release content. The one remaining reference to 2afc977 is #664's merge SHA, a different fact, and stays. Both derivation commands in the document now use ancestry and were verified to reproduce the numbers printed beside them. Note for whoever bumps next: bump-version.sh syncs four lockfiles but six record the SDK version — the conformance Ruby and Python runner lockfiles go stale and `make check` then rewrites them. Converge them by hand until that is fixed (#671, with #670 for the write itself).
jeremy
added a commit
that referenced
this pull request
Aug 5, 2026
#673 and #675 landed after the last measurement, so the guide's baseline moves from 931c36a to 70d576b. The counting method changes too, because the one committed here was wrong. `git log v0.12.0..HEAD | wc -l` counts COMMITS, which equals PRs only while every commit is a squash merge. The release-prep commit is pushed straight to main and is not a PR, so from the moment the version is bumped that count runs one high — it reported 59 where 58 PRs had merged. That is the third way this number has been wrong, each differently: a lexicographic string compare on timestamps, then a temporal compare that credited #556 to this release (its squash commit IS the commit v0.12.0 tags), and now a commit count meeting its first non-PR commit. The rule that survives all three is the definition itself: reachable from HEAD and not reachable from v0.12.0, applied to the merge commits of PRs rather than to commits. Both derivations in the guide now use it, and both were run to confirm they reproduce the numbers printed beside them. Committed directly rather than as a pull request, on purpose: a PR carrying this number would increment the number it states. #642 shipped wrong for exactly that reason — a document inside the release cannot count itself.
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.
Version bump for the v0.12.0 release (
make bump VERSION=0.12.0— 10 version files + 4 lockfiles).Candidate since v0.11.0 (all non-breaking): the six new-surface absorptions (#520–#526: bookmarks, my-drafts, my-note, calendar pair, todoset loose-todo create, everything filters), Up Next priority writes + repin (#528), Go wrapper completions (#534), Python
max_items(#540), TS retry-under-middleware (#538), Kotlin network-error retry (#539), Kotlin uploads.download + download conformance (#554), java-kotlin CodeQL re-enable (#391), monotonic runner clocks (#530), labeler/docs/spec hygiene (#529, #535, #536), GetCalendar live canary + skip-marker replay contract (#542).Release-notes label→section audit done across all 20 PRs (fixed: #520 +documentation, #391 −enhancement).
After merge:
make release VERSION=0.12.0(pushes main, tags, triggers all 7 workflows). Unblocks CLI Stage 2.🤖 Authored with agent assistance by @jeremy.
Summary by cubic
Bumps all SDKs to version 0.12.0 and updates lockfiles to prepare the v0.12.0 release across Go, Kotlin, Python, Ruby, Swift, and TypeScript.
New Features
max_items, monotonic clocks, CodeQL re-enabled.Migration
@37signals/basecamp,basecamp-sdkfor Python/Ruby). No breaking changes expected.Written for commit 742e30e. Summary will update on new commits.