Loading...
Loading...
Expert guide for bumping versions, creating git tags, and managing releases for Tauri and Node.js projects.
npx skill4agent add porkytheblack/coco version-bump-tag./app/scripts/bump-version.sh./app/scripts/redeploy.sh# Bump and release
./app/scripts/bump-version.sh patch # 0.1.0 → 0.1.1
./app/scripts/bump-version.sh minor # 0.1.0 → 0.2.0
./app/scripts/bump-version.sh major # 0.1.0 → 1.0.0
git push && git push --tags
# Other options
./app/scripts/bump-version.sh --set 2.0.0 # Explicit version
./app/scripts/bump-version.sh patch --dry-run # Preview changes
./app/scripts/bump-version.sh patch --no-git # Skip commit/tag
# Re-deploy failed release
./app/scripts/redeploy.sh # Current version
./app/scripts/redeploy.sh v0.1.5 # Specific versionMAJOR.MINOR.PATCH
│ │ └── Bug fixes (backward compatible)
│ └──────── New features (backward compatible)
└────────────── Breaking changes (incompatible API)| Bump | When | Example |
|---|---|---|
| Bug fixes, minor tweaks | 1.0.0 → 1.0.1 |
| New features, no breaking changes | 1.0.0 → 1.1.0 |
| Breaking changes, major rewrites | 1.0.0 → 2.0.0 |
1.0.0-alpha.1 # Early development
1.0.0-beta.1 # Feature complete, testing
1.0.0-rc.1 # Release candidate| File | Format |
|---|---|
| |
| |
| |
| Auto-updated |
| UI status bar | Display string |
| File | Format |
|---|---|
| |
| Auto-updated |
| File | Format |
|---|---|
| |
| Auto-updated |
# Quick check
git status --porcelain | grep -q . && echo "UNCOMMITTED CHANGES" && exit 1
git fetch origin
git log @{u}..HEAD --oneline | grep -q . && echo "UNPUSHED COMMITS" && exit 1
echo "Ready to release"validate_ready_to_release() {
# Check for uncommitted changes
if [[ -n "$(git status --porcelain)" ]]; then
echo "ERROR: Uncommitted changes"
git status --short
return 1
fi
# Check for unpushed commits
git fetch origin --quiet
local AHEAD=$(git log @{u}..HEAD --oneline 2>/dev/null | wc -l | tr -d ' ')
if [[ "$AHEAD" -gt 0 ]]; then
echo "ERROR: $AHEAD unpushed commit(s)"
return 1
fi
echo "Ready to release"
return 0
}# Annotated tag (recommended)
git tag -a v1.0.0 -m "Release v1.0.0"
# With release notes
git tag -a v1.0.0 -m "Release v1.0.0
- Feature: Added user auth
- Fix: Memory leak resolved
- Chore: Updated deps"git push origin v1.0.0 # Single tag
git push --tags # All tags
git push && git push --tags # Commits + tagsgit tag -l # All tags
git tag -l "v1.*" # Pattern match
git show v1.0.0 # Tag details
git describe --tags --abbrev=0 # Latest taggit tag -d v1.0.0 # Local
git push origin :refs/tags/v1.0.0 # Remotegit tag -d v1.0.0
git push origin :refs/tags/v1.0.0
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0VERSION="v0.1.5"
# Validate first
git status --porcelain | grep -q . && echo "Uncommitted changes!" && exit 1
# Delete and recreate
git tag -d "$VERSION" 2>/dev/null || true
git push origin ":refs/tags/$VERSION" 2>/dev/null || true
git tag -a "$VERSION" -m "Release $VERSION"
git push origin "refs/tags/$VERSION"# 1. Ensure clean state
git status # No uncommitted changes
# 2. Get current version
CURRENT=$(jq -r '.version' package.json)
# 3. Calculate new version
IFS='.' read -r major minor patch <<< "$CURRENT"
NEW="${major}.${minor}.$((patch + 1))"
# 4. Update all version files
# (Use bump script or edit manually)
# 5. Commit
git add -A
git commit -m "chore: bump version to v${NEW}"
# 6. Tag
git tag -a "v${NEW}" -m "Release v${NEW}"
# 7. Push
git push && git push --tags./app/scripts/bump-version.sh patch
git push && git push --tagsVERSION="1.2.3"
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
# Patch bump
PATCH=$((PATCH + 1))
NEW="${MAJOR}.${MINOR}.${PATCH}" # 1.2.4
# Minor bump
MINOR=$((MINOR + 1)); PATCH=0
NEW="${MAJOR}.${MINOR}.${PATCH}" # 1.3.0
# Major bump
MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0
NEW="${MAJOR}.${MINOR}.${PATCH}" # 2.0.0| Action | Command |
|---|---|
| Current version | |
| Latest tag | |
| All tags | |
| Remote tags | |
| Tag exists? | |
| Commits since tag | |
v*v0.1.00.1.0cargo update -p <pkg>git tag v1.0.0-a1.0.0-alpha.1 < 1.0.0-beta.1 < 1.0.0-rc.1 < 1.0.0chore: bump version to vX.Y.Zrelease: vX.Y.Z