Repository navigation
Release from GitHub Releases with versions derived from commits - #27
Merged
Merged
Conversation
…release Releases are cut as GitHub Releases with a repository-wide calendar tag, and package versions are no longer bumped by hand, so something has to decide them. release_plan.ts releases every package with commits touching its directory (tests excluded) since the previous release tag, at the level its Conventional Commits call for (0.x maps breaking changes to minor), and gives a patch to every package depending on a released one, because siblings pin each other exactly. Versions start from the latest stable npm release, falling back to JSR for the first release of the Bun build. The plan is written as versions.json so a re-run reuses it instead of bumping again. apply_versions.ts writes a plan into the manifests, with an optional prerelease suffix, and replaces set_prerelease.ts: `next` builds are the planned versions plus `-next.<run>`, instead of the manifest versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3xvJ1TaozjYSE6eoyo9mq
publish.yml now runs when a GitHub Release is published: it plans the versions, attaches versions.json and appends the version table to the release notes, then publishes the released packages to npm (`latest`) and JSR. JSR publishing was missing since the Deno workflow was removed; it goes through `jsr publish` at the workspace root, which orders the members and skips versions already published, with GitHub OIDC instead of a token. A Release marked as a pre-release is a dry run that only computes and attaches the plan. Pre-releases never become the "latest" release, so the workflow can be tried without affecting install.sh and Homebrew, which follow the latest release. Running the workflow manually still publishes `next` prereleases. Release tags must look like v20261008.01, so a mistyped tag fails before anything is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3xvJ1TaozjYSE6eoyo9mq
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
1 of 2 tasks
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.
Summary
v20261008.01) runspublish.yml, which plans the versions, attachesversions.json, appends a version table (with the commits per package) to the release notes, and publishes the released packages to npm (latest) and JSR.scripts/release_plan.ts):packages/<name>/since the previous release (tests excluded) are released;!,BREAKING CHANGE:,BREAKING(...)) → major,feat→ minor, others → patch,/unstable→ patch; in 0.x major and minor both bump the minor version;builder0.5.2 → 0.6.0).scripts/apply_versions.tswrites a plan into the manifests (optional-next.Nsuffix) and replacesset_prerelease.ts.scripts/publish.tspublishes the planned packages to npm (skipping versions already there) and runsjsr publishat the workspace root (orders members, skips published versions; GitHub OIDC, no token).<planned>-next.<run>to npmnext..claude/rules/repository.mddescribes the new release process.Why
JSR publishing has been missing since the Deno publish workflow was removed, and the npm
latestpath published the placeholder manifest versions (the same numbers as the Deno builds on JSR). Versions are now decided per release from the history, as agreed for this repository: one calendar-tagged Release for the repository, independent semver per package.Re-runs reuse the attached
versions.json, so a failed run never bumps twice. Release tags are validated before anything is published. Pre-releases are dry runs because install.sh and Homebrew in probitas follow the latest release, which pre-releases never become.Test Plan
bun run verify(incl. new tests for commit classification, version bumping, dependency cascade, base selection, version application)0.5.2 → 0.6.0, …)npm publish --dry-runfor all 20 packages with exact sibling versions →jsr publish --dry-runsucceeds for all 20🤖 Generated with Claude Code
https://claude.ai/code/session_01N3xvJ1TaozjYSE6eoyo9mq