Use when releasing a new version - guides through version bump, changelog generation, commit grouping, tagging, and GitHub CI tracking...
A complete release workflow for MioSub that handles version bumping, changelog generation from git history, grouped commits, tagging, and GitHub CI monitoring.
Ask the user:
git status to check for uncommitted changesFind the previous version tag:
git describe --tags --abbrev=0
Get all commits since last tag:
git log <previous-tag>..HEAD --oneline
Read each commit's details to categorize:
Exclude from changelog (internal/infrastructure changes not relevant to users):
Update changelog files in the documentation site (bilingual):
English (docs/content/docs/en/changelog.mdx):
## [X.X.X] - YYYY-MM-DD (no 'v' prefix)Chinese (docs/content/docs/zh/changelog.mdx):
Update package.json:
"version": "X.X.X" to new version (no 'v' prefix)git add docs/content/docs/en/changelog.mdx docs/content/docs/zh/changelog.mdx package.json
git commit -m "Release vX.X.X"
Note: Commit message uses 'v' prefix, but version strings in files do not.
git tag vX.X.X
git push origin main
git push origin vX.X.X
Note: Tag uses 'v' prefix (e.g., v2.12.0).
Track the GitHub Actions workflow:
gh run list --workflow=release.yml --limit=1
gh run watch <run-id>
Report build status to user:
| Step | Command | Purpose |
|---|---|---|
| Check status | git status |
Find uncommitted changes |
| Previous tag | git describe --tags --abbrev=0 |
Get last release tag |
| Commit log | git log <tag>..HEAD --oneline |
List changes since release |
| Create tag | git tag vX.X.X |
Create version tag |
| Push tag | git push origin vX.X.X |
Trigger CI build |
| Watch CI | gh run watch |
Monitor build progress |
| Location | Format | Example |
|---|---|---|
| Git tag | With 'v' prefix | v2.12.0 |
| Commit message | With 'v' prefix | Release v2.12.0 |
| changelog.mdx (en/zh) | No 'v' prefix | ## [2.12.0] - 2026-01-06 |
| package.json | No 'v' prefix | "version": "2.12.0" |
| Language | Path |
|---|---|
| English | docs/content/docs/en/changelog.mdx |
| Chinese | docs/content/docs/zh/changelog.mdx |
## [X.X.X] - YYYY-MM-DD
### Features
- **Component**: Description of new feature.
### Fixes
- **Component**: Description of bug fix.
### Refactor
- **Component**: Description of refactoring.
### Chore
- **Component**: Maintenance description.
## [X.X.X] - YYYY-MM-DD
### 新功能
- **组件名**: 新功能描述。
### 修复
- **组件名**: Bug 修复描述。
### 重构
- **组件名**: 重构描述。
### 杂项
- **组件名**: 维护工作描述。
| English | Chinese |
|---|---|
| Features | 新功能 |
| Fixes | 修复 |
| Refactor | 重构 |
| Chore | 杂项 |
| Documentation | 文档 |
| Performance | 性能 |
| Highlights | 亮点 |
| Improvements | 改进 |
| Other Changes | 其他变更 |
| Mistake | Fix |
|---|---|
| Forgetting to push the tag | CI only triggers on tag push, not commit push |
| Wrong version in package.json | Version must match tag (without 'v' prefix) |
| Changelog in wrong position | New version goes after the frontmatter, before previous versions |
| Not grouping commits | Related changes should be in one commit for cleaner history |
| Inconsistent 'v' prefix | Tag and commit use 'v', files don't |
| Missing Chinese translation | Both en and zh changelog files must be updated together |
| Mismatched category translations | Use the Category Name Mapping table for consistency |
For pre-release versions:
X.X.X-beta.1, X.X.X-rc.1vX.X.X-beta.1prerelease: false - may need manual adjustment in GitHub release