Skip to content

release: v0.14-alpha.1#2529

Merged
mmagician merged 2 commits intonextfrom
claude/release-0.14-alpha-A0f9v
Mar 2, 2026
Merged

release: v0.14-alpha.1#2529
mmagician merged 2 commits intonextfrom
claude/release-0.14-alpha-A0f9v

Conversation

@mmagician
Copy link
Collaborator

@mmagician mmagician commented Mar 1, 2026

Release plan summary:

  1. Here are the changes in this branch relative to next
  2. Merge this PR to main. After the merge, main will be on version v.14.0-alpha.1
  3. After merge: create a GitHub Release with tag v0.14.0-alpha.1 targeting main, like so:
Screenshot 2026-03-01 at 16 49 24
  1. This will trigger publishing to crates.io

For patch releases

  1. Since main is about to move to alpha, I created a new release/0.13 branch off current main to preserve v0.13.x for hotfixes
  2. I also created a new branch protection rule mirroring the one for main
  3. CI updates: the publish and dry-run workflows were hardcoded to main. Updated them to use github.event.release.target_commitish so releases can be published from any branch (e.g., release/0.13 for hotfixes, main for new versions).
  4. For any potential v0.13.x hotfixes, create the PR against release/0.13 branch
  5. Then, create GitHub Release targeting that branch to trigger publishing to crates.io

@mmagician mmagician changed the base branch from next to main March 1, 2026 15:24
@mmagician mmagician changed the title Support releasing from arbitrary branches release: v0.14-alpha.1 Mar 1, 2026
@mmagician mmagician force-pushed the claude/release-0.14-alpha-A0f9v branch 2 times, most recently from 4570203 to 5750e0d Compare March 1, 2026 15:37
@mmagician mmagician requested a review from bobbinth March 1, 2026 15:56
@bobbinth
Copy link
Contributor

bobbinth commented Mar 1, 2026

Question: why not make the alpha release from next? Basically, update crate versions in the next branch to v0.14-alpha.1, and then make a release from there. Or does this complicate things downstream?

Basically, my thinking is to have main track the latest "stable" release, while next tracks current development (now with periodic alpha releases).

@mmagician
Copy link
Collaborator Author

mmagician commented Mar 2, 2026

Question: why not make the alpha release from next?

Thanks, that's a valid point.

The main issue is consistency: today, every* commit to main corresponds to a published release. If we release alphas from next, that invariant breaks - next would get "regular" commits mixed in between alpha bumps.

To preserve the pattern, we'd need a third branch (e.g. dev) taking over next's current role:

dev (development) -> next (alpha releases) -> main (stable releases)

This would work, but adds significant overhead IMO.


To sum up, I see three viable approaches:

  1. Use main as the latest release (alpha or otherwise). Preserve release/v0.x branch for patch releases. Consistent, and simple.
  2. Use next for development and alpha release, main for stable releases. Inconsistent, but also the simplest.
  3. Tri-branch process dev (development) -> next (alphas) -> main (stables): consistent, but more complex.

My preference would be to stick with the approach proposed in this PR (option 1). The tradeoff is that main temporarily carries a pre-release version, but that's arguably accurate, as it reflects the latest published state of the crates.

Footnotes

*we're not extremely strict with this rule, but roughly whenever we merge next into main we get a new release.

@mmagician mmagician changed the base branch from main to next March 2, 2026 22:08
@mmagician
Copy link
Collaborator Author

Updated release plan summary:

  1. Merge this PR to next. After the merge, next will be on version v.14.0-alpha.1
  2. Create a release/v0.14.0-alpha branch off the newly updated next
  3. Create a GitHub Release with tag v0.14.0-alpha.1 targeting release/v0.14.0-alpha, like so:
Screenshot 2026-03-01 at 16 49 24
  1. This will trigger publishing to crates.io

Other changes aside from the version bump:

  • I created a new branch protection rule release/* mirroring the one for main
  • CI updates: the publish and dry-run workflows were hardcoded to main. I updated them to use github.event.release.target_commitish so releases can be published from any branch (e.g., release/v0.14.0-alpha for the upcoming alpha release, main for new versions).

Going forward

In the call we discussed a bit more radical change to how we track and release our work. I'll write this up in more detail later, but basically it would involve keeping around just one development branch (say main), and multiple release branches (or just tags, TBD), branching off/tagging whichever point we decide to make a new release. Patch releases might, depending on the fix, need to be PR'ed into two branches (the version branch to hotfix, plus the development branch).

The CI changes in this PR align with that strategy, i.e. a GitHub release should be able to trigger publishing to crates.io from any branch/tag.

claude added 2 commits March 2, 2026 22:21
Bump all workspace crate versions to 0.14.0-alpha.1 and pin internal
dependency versions with exact matches (`=0.14.0-alpha.1`) since Cargo
semver ranges don't match pre-release versions.

https://claude.ai/code/session_01AJGCwgSeV71jaYoQxFomz1
Update the publish workflow to dynamically determine the release branch
from `github.event.release.target_commitish` instead of hardcoding
`main`. Parameterize the branch verification in the composite action
with a new `release-branch` input. Add `release/**` to dry-run triggers.

This enables v0.13.x hotfix releases from `release/0.13` after `main`
moves forward to the alpha series.

https://claude.ai/code/session_01AJGCwgSeV71jaYoQxFomz1
@mmagician mmagician force-pushed the claude/release-0.14-alpha-A0f9v branch from 5750e0d to bc756eb Compare March 2, 2026 22:21
@mmagician mmagician marked this pull request as ready for review March 2, 2026 22:21
@mmagician mmagician enabled auto-merge (squash) March 2, 2026 22:21
@mmagician mmagician added the no changelog This PR does not require an entry in the `CHANGELOG.md` file label Mar 2, 2026
@mmagician
Copy link
Collaborator Author

Perhaps one outstanding question is: should the development branch have the latest version? Or should it be the version-branch where we change the version? (here I'm going with the former, to later branch off once it's merged to next; but that's easy to change by dropping chore: bump workspace version to 0.14.0-alpha.1)

Copy link
Contributor

@bobbinth bobbinth left a comment

Choose a reason for hiding this comment

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

Looks good! Thank you!

@mmagician mmagician merged commit a09027b into next Mar 2, 2026
17 of 18 checks passed
@mmagician mmagician deleted the claude/release-0.14-alpha-A0f9v branch March 2, 2026 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no changelog This PR does not require an entry in the `CHANGELOG.md` file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants