- Fix unbound variable errors in install-node.sh and node-path-setup.sh
- Add release-progress.sh for visual release monitoring
- Add release-health-check.sh for comprehensive pre-release validation
- Add check-node-simple.sh as a simpler, more robust Node.js checker
- Create release-improved.sh with better state tracking and progress indicators
- Update release-state.sh with better timestamp tracking
These improvements address issues encountered during beta.13 release:
- Node.js detection failures due to unbound variables
- Lack of visibility into release progress
- No clear way to resume interrupted releases
- Missing pre-flight validation
* Fix Ghostty terminal spawn issues with dynamic delays
- Add isTerminalRunning() helper to check if terminal app is running
- Implement dynamic delays for Ghostty based on running state
- 0.5s delay for warm start (already running)
- 2.0s delay for cold start (needs to launch)
- Add window count checking to ensure UI is ready
- Fix issue where commands weren't executed when Ghostty had no windows
Fixes#371
* Fix CI: Skip Node.js check when using pre-built web artifacts
- Add SKIP_NODE_CHECK=true environment variable to Mac CI build step
- Prevents install-node.sh from failing when pnpm is not available
- CI downloads pre-built web artifacts, so Node.js/pnpm are not needed
* Fix CI: Properly handle pre-built web artifacts in Mac build
- Add early exit in build-web-frontend.sh when CI has pre-built artifacts
- Set CI=true environment variable in all Xcode build steps
- Update node-path-setup.sh to skip Node.js check in CI
- Copy pre-built artifacts directly without attempting rebuild
- This prevents pnpm dependency errors in CI environment
* Fix SwiftFormat modifier order issue
- Change 'static weak' to 'weak static' in AppDelegate
- SwiftFormat requires consistent modifier ordering
* Fix CI: Include native binaries in web artifacts
- Add web/native/ directory to uploaded artifacts
- Add web/bin/vt script to uploaded artifacts
- This ensures Mac tests can find the vibetunnel executable
- Fixes test failures due to missing server binary
* Fix CI: Copy native binaries from web artifacts in Mac CI
- Update artifact extraction to copy web/native/ directory
- Also copy web/bin/ directory for vt script
- Add debugging output to show native contents
- This ensures tests can find the vibetunnel executable
- Created normalize-release-titles.sh script to update existing releases
- Updated all 9 beta releases to use consistent title format
- Modified release.sh to use normalized format for future releases
- Changed from "VibeTunnel 1.0.0-beta.10" to "VibeTunnel 1.0.0 Beta 10"
This makes release titles more readable and consistent across all releases.
- Updated release.md documentation to emphasize per-release changelog behavior
- Added fix-release-changelogs.sh script to update existing releases
- Clarified that release script already extracts only specific version changes
- Script can fix releases that incorrectly show full changelog history
The release system already works correctly - it extracts only the specific
version's changelog. The issue was with some existing releases that somehow
got the full CHANGELOG.md content instead of the extracted version.
- Add state tracking and resume capability to release process
- Create release-state.sh for tracking 9 major release steps
- Add --resume and --status flags to release.sh
- Fix private key format handling for sign_update tool
- Create clean key file (sparkle_ed_private_key) automatically
- Handle missing custom Node.js builds gracefully
- Add DerivedData app location fallback
- Create comprehensive release-checklist.sh script
- Update release documentation with critical learnings
- Enhance Stats.store documentation with setup instructions
- Add troubleshooting for 'Application not found' error
- Document fallback options for direct GitHub URLs
- Update all scripts to handle clean key file format
These improvements make the release process more reliable and
resilient to interruptions, with better error handling throughout.
- Updated generate-appcast.sh with prominent warnings about using -f flag
- Added critical warnings to release documentation (RELEASE.md and release-guide.md)
- Created validate-sparkle-signature.sh script to verify signatures before release
- Added pre-release checklist items for signature validation
- Documented the beta 8 incident and resolution
This ensures we always use the correct file-based private key and never accidentally use the keychain key that produces incompatible signatures.
The script was failing with "VIBETUNNEL_BUILD_CLEAN_ENV: unbound variable"
when running under strict bash error checking (set -u). Fixed by using
parameter expansion with default value ${VAR:-} to handle cases where
the variable is not set.
- Add proper --dry-run support to release.sh that prevents file modifications
- Fix iOS Info.plist to use $(MARKETING_VERSION) and $(CURRENT_PROJECT_VERSION)
- Update CHANGELOG.md lookup to prefer project root location
- Add comprehensive RELEASE_PROCESS.md documentation
- Improve error messages and parameter validation in release script
- Fix confusing warnings about CHANGELOG.md location
These changes make the release process more robust and less error-prone.
- Use Xcode's default derived data path by default
- Only use custom derived data in CI or when explicitly requested
- Prevents Swift packages from being re-resolved after each build
- No more need to close/reopen Xcode after building
Set USE_CUSTOM_DERIVED_DATA=YES to use the old behavior
The redundant SCRIPT_DIR assignment on line 20 used ${BASH_SOURCE[0]:-} which
would expand to an empty string in zsh, causing dirname "" to return the current
directory instead of the script's directory. This led to script failures when
not run from its own directory.
Since SCRIPT_DIR is already correctly set earlier (lines 11-15) with proper
zsh handling, the redundant line has been removed.
Check if .node-builds directory exists before attempting to find Node.js builds
to prevent errors when the directory hasn't been created yet.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
- Always use --account VibeTunnel for Sparkle signing
- Add automatic DMG volume cleanup to prevent resource errors
- Better handling of CHANGELOG.md location (check both mac/ and root)
- Add comprehensive RELEASE-LESSONS.md with all gotchas
- Add signature verification step to release process
- Improve error messages and debugging output
- Pass SPARKLE_ACCOUNT environment variable through scripts