| name | Release |
| description | Create a new version release by analyzing changes, bumping version, updating changelogs, committing, tagging, and pushing |
Release Skill
This skill automates the entire release process for this project.
Workflow
Step 1: Analyze Changes Since Last Release
git describe --tags --abbrev=0
git log $(git describe --tags --abbrev=0)..HEAD --oneline --no-merges
git status --short
Categorize all changes into:
- Added: New features
- Changed: Modifications to existing functionality
- Fixed: Bug fixes
- Removed: Removed features
- Breaking: Breaking changes (triggers major version bump)
Step 2: Determine Version Bump
Follow Semantic Versioning:
- MAJOR (X.0.0): Breaking changes or major rewrites
- MINOR (x.Y.0): New features, backward compatible
- PATCH (x.y.Z): Bug fixes, metadata updates, backward compatible
Current version can be found in:
Cargo.toml (line ~3): version = "X.Y.Z"
meson.build (line ~2): version: 'X.Y.Z'
Step 3: Update Version Numbers
Update the version in these files:
Cargo.toml: version = "X.Y.Z"
meson.build: version: 'X.Y.Z'
Step 4: Update CHANGELOG.md
Move content from [Unreleased] section to a new version section:
## [X.Y.Z] - YYYY-MM-DD
### Added
- Feature description
### Changed
- Change description
### Fixed
- Fix description
Reset the [Unreleased] section to empty placeholders.
Step 5: Update README.md
Update the version header section (around line 14):
## 🎉 Version X.Y.Z - [Short Title]
**Karere X.Y.Z** brings [brief description of main changes].
### 🆕 What's New in X.Y.Z
- **Feature 1**: Description
- **Feature 2**: Description
Step 6: Update metainfo.xml.in
Add a new <release> entry at the TOP of the <releases> section (after line 97):
<release version="X.Y.Z" date="YYYY-MM-DD">
<description>
<ul>
<li>Change description 1</li>
<li>Change description 2</li>
</ul>
</description>
</release>
File location: data/io.github.tobagin.karere.metainfo.xml.in
Step 7: Update Cargo Lock and Sources
// turbo
cargo generate-lockfile
python3 tools/flatpak-cargo-generator.py Cargo.lock -o packaging/cargo-sources.json
Step 8: Commit All Changes
Stage and commit with a detailed message:
git add .
git commit -m "Release vX.Y.Z
Changes in this release:
- [List main changes]
- [One per line]
Files updated:
- Cargo.toml, meson.build (version bump)
- CHANGELOG.md (release notes)
- README.md (version header)
- metainfo.xml.in (AppStream release)
- Cargo.lock, cargo-sources.json (dependencies)"
Step 9: Create and Push Tag
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin HEAD --tags
Important Notes
- Always use the format
vX.Y.Z for tags (with the v prefix)
- Date format in CHANGELOG.md and metainfo.xml is
YYYY-MM-DD
- The metainfo.xml release entries should be concise (no emojis in
<li> items)
- Keep README.md "What's New" section brief and user-friendly
- CHANGELOG.md can be more detailed and technical
File Locations Summary
| File | Version Location | Purpose |
|---|
Cargo.toml | Line ~3 | Rust package version |
meson.build | Line ~2 | Build system version |
CHANGELOG.md | New section after line 8 | Detailed release notes |
README.md | Lines 14-22 | User-facing highlights |
data/io.github.tobagin.karere.metainfo.xml.in | After line 97 | AppStream metadata |