- 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.
- Remove non-null assertion in favor of proper null check
- Add z-index comments for clarity in modal overlays
- Remove unused Z_INDEX imports after switching to comments
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add stopPropagation to Browse button click handler in session-create-form
- Add debug logging to track state changes
- Match the pattern used in session-header for consistency
The iOS app is a native client that connects to VibeTunnel servers and doesn't embed any web code. It only needs to rebuild when iOS-specific files change, not when web files are modified.
This optimization will save CI time by avoiding unnecessary iOS builds when only web UI changes are made.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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.
- Corrected Stats.store description as privacy-first analytics backend
- Fixed benefits section to reflect actual features (not CDN)
- Clarified that Stats.store is a transparent proxy, not hosting files
- Added details about anonymous data collection
- Stats.store cache confirmed to be 1 minute as documented
- Updated appcast-prerelease.xml with correct signature generated from file-based private key
- Added comprehensive documentation about Sparkle/Stats.store integration
- Documented the beta 8 incident and resolution
- The issue was caused by using the wrong private key (keychain vs file)
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.