|
| 1 | +--- |
| 2 | +name: release |
| 3 | +description: Prepare a lading release. Updates CHANGELOG.md, bumps version in Cargo.toml, updates Cargo.lock, commits, and creates a PR. |
| 4 | +allowed-tools: Read, Edit, Bash, AskUserQuestion |
| 5 | +--- |
| 6 | + |
| 7 | +# Release process for lading |
| 8 | + |
| 9 | +## 1. Determine the next version |
| 10 | + |
| 11 | +- Read `lading/Cargo.toml` and `CHANGELOG.md` to find the current version and unreleased changes. |
| 12 | +- If the user hasn't specified a version, suggest one based on semver: |
| 13 | + - Breaking changes in the unreleased section -> bump minor (we're pre-1.0). |
| 14 | + - Otherwise bump patch. |
| 15 | +- Confirm the version with the user before proceeding. |
| 16 | + |
| 17 | +## 2. Create a release branch |
| 18 | + |
| 19 | +- Create a branch from main: `git checkout -b prepare-release-v<version>` |
| 20 | + |
| 21 | +## 3. Update CHANGELOG.md |
| 22 | + |
| 23 | +- Read `CHANGELOG.md`. |
| 24 | +- Insert a new `## Unreleased` header (with empty subsections) above the current unreleased content. |
| 25 | +- Rename the existing unreleased content block to `## [<version>]`. |
| 26 | +- Ensure there is a blank line between the new empty `## Unreleased` and `## [<version>]`. |
| 27 | + |
| 28 | +## 4. Bump version in Cargo.toml |
| 29 | + |
| 30 | +- Edit `lading/Cargo.toml` to set `version = "<new_version>"`. |
| 31 | + |
| 32 | +## 5. Update Cargo.lock |
| 33 | + |
| 34 | +- Run `cargo check` to propagate the version change into the lockfile without re-resolving all dependencies. |
| 35 | + |
| 36 | +## 6. Commit and create PR |
| 37 | + |
| 38 | +- Stage `CHANGELOG.md`, `lading/Cargo.toml`, and `Cargo.lock`. |
| 39 | +- Commit with message: `release: v<version>` |
| 40 | +- Push the branch and create a PR targeting main. |
| 41 | + |
| 42 | +## 7. Tag after merge |
| 43 | + |
| 44 | +- After the PR is merged, remind the user to tag the merge commit on main: |
| 45 | + - `git checkout main && git pull` |
| 46 | + - `git tag -a v<version> -m "v<version>"` |
| 47 | + - `git push origin v<version>` |
| 48 | +- **NEVER use `git push --tags`** — always push exactly one tag at a time. |
| 49 | +- The `release.yml` GitHub Actions workflow will automatically create a GitHub Release from the tag, pulling notes from CHANGELOG.md. |
0 commit comments