VibeTunnel Release Guide - Quick Reference
This guide provides a streamlined release process based on lessons learned from beta.13.🚀 Quick Release Commands
📋 Pre-Release Checklist
Before starting any release:1. Version Numbers
- Update
mac/VibeTunnel/version.xcconfig
:MARKETING_VERSION = 1.0.0-beta.14
CURRENT_PROJECT_VERSION = 203
(increment from last)
- Update
web/package.json
to match - Update
web/package.npm.json
to match - Update
CHANGELOG.md
with release notes
2. Environment Setup
3. Clean State
🔧 Troubleshooting
Node.js Detection Issues
If the build fails with “Node.js is required”:Release Script Timeouts
The release process can take 20-30 minutes:- Build: 2-5 minutes
- Notarization: 5-15 minutes
- DMG creation: 1-2 minutes
Manual Recovery
If the release script fails after notarization:📊 New Tools
Release Progress Monitor
Shows real-time release progress with visual indicators:- Step-by-step progress tracking
- Duration for each step
- Idle time warnings
- Artifact status
Release Health Check
Comprehensive pre-release validation:- Git status and branch
- Environment variables
- Build tools availability
- Code signing certificates
- Version synchronization
- Disk space
- Appcast validity
Simplified Node.js Check
More robust Node.js detection:🎯 Best Practices
- Always run health check first - Catches issues before they cause failures
- Use progress monitor - Keep track of long-running operations
- Set all environment variables - Prevents mid-release failures
- Keep versions synchronized - Update all version files before starting
- Document in CHANGELOG.md - Required for release notes generation
- Don’t run in background - Use screen/tmux if needed, but keep foreground
📝 Version Management
Version Files to Update
mac/VibeTunnel/version.xcconfig
- Source of truthweb/package.json
- Must match macOS versionweb/package.npm.json
- For npm package releaseCHANGELOG.md
- Release notes
Build Number Rules
- Must increment for EVERY release
- Must be unique across all releases
- Sparkle uses build numbers, not version strings
- Check existing:
grep '<sparkle:version>' ../appcast*.xml
🚨 Common Issues
”Uncommitted changes detected”
- Commit all changes before releasing
- Or stash temporarily:
git stash
”Build number already exists”
- Increment CURRENT_PROJECT_VERSION in version.xcconfig
- Must be higher than all previous releases
”Version mismatch”
- Ensure web/package.json matches mac version
- Run health check to verify
DMG stuck volumes
📚 Summary
The improved release process provides:- Better error handling with environment variable defaults
- Visual progress tracking
- Comprehensive pre-flight validation
- Clear recovery procedures
- Simplified troubleshooting
- Run health check
- Set environment variables
- Use the standard release script
- Monitor with progress tool
- Resume if interrupted