Repository navigation
EXC-1505 Add a release-changeset skill and release script - #45
Merged
Merged
Conversation
- Pin uv 0.13.0; ruff and ty track latest, all locked - ruff.toml holds the formatter and linter settings - hk runs ruff on commit and ty in check and pre-push
- scripts/release.py computes the next version from origin's tags, gates on commits, a free tag and a passing CI push run, and cuts the tag and Release in one gh call; it prints one JSON object - scripts/test_release.py covers the version math - mise run release execs the script - pre-push and CI run the test
The skill drives mise run release: it takes the version from compute, writes the Release notes outside the repo, confirms once with the notes in the preview, then releases. A dry run asks nothing.
The vim.pack and lazy.nvim examples pin version to the latest tag. Dropping it tracks main, which gets unreleased changes.
- Computed, Released and Refused model the JSON; an ErrorCode enum carries each refusal's exit code, and main is the one boundary - The snapshot collects origin's tags and the CI run, so require_releasable is pure and tested - Fetch only origin's main with an explicit refspec; local tags are never touched - ruff.toml drops ignores that did nothing, D212 among them - The skill stops on a non-zero exit or non-JSON stdout, and on Cancel - preflight runs the script's test too
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.
Part of: EXC-1505
Change Kind: infrastructure
What changed
changeset.nvim has never been released, so every install tracked
main. This adds a repo-local/release-changesetskill backed byscripts/release.py, a standalone uv script thatmise run releaseruns: the script owns the version math, the gates (commits since the last tag, a free tag, a passingCIpush run onmain) and the singlegh release createcall, and prints one JSON object per call; the skill only writes the notes and asks once. uv, ruff and ty join the toolchain to lint, type-check and test the script, and the README and vimdoc install examples now pinversionto the latest release.What to test
mise run release compute minorprints{"ok":true,"version":"0.1.0","tag":"v0.1.0","previousTag":null,…}while origin has no tags;mise run release compute bogusprints aUSAGErefusal and exits 2./release-changeset minor dry runshows the first-release notes and adryRun: trueresult, and creates no tag or Release (git ls-remote --tags originstays empty).mise run lint, pre-commit, pre-push and CI now also run ruff, ty andscripts/test_release.py;mise run preflightruns the script's test too.CIpush run,/release-changeset minorcutsv0.1.0; until then the README's vim.pack example fails with "No versions fit constraint".