vibetunnel/mac
Peter Steinberger bc9f505026
Fix Ghostty terminal spawn issues with dynamic delays (#408)
* 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
2025-07-18 17:24:30 +02:00
..
docs Add Mintlify documentation configuration (#403) 2025-07-18 08:37:16 +02:00
scripts Fix Ghostty terminal spawn issues with dynamic delays (#408) 2025-07-18 17:24:30 +02:00
VibeTunnel Fix Ghostty terminal spawn issues with dynamic delays (#408) 2025-07-18 17:24:30 +02:00
VibeTunnel-Mac.xcodeproj Add debug development server mode for hot reload (#316) 2025-07-12 10:57:03 +02:00
VibeTunnelTests Fix bind address reverting to localhost after server restart (#404) 2025-07-18 08:02:41 +02:00
.github-config chore: move .github-config to mac/ directory 2025-07-15 19:22:50 +02:00
.gitignore Hide screen sharing button when Mac app is not connected (#367) 2025-07-16 03:37:33 +02:00
.swiftformat Move files to apple subdir 2025-06-22 14:35:42 +02:00
.swiftlint.yml Move files to apple subdir 2025-06-22 14:35:42 +02:00
bun.lock Disable create session modal animation in session detail view 2025-07-08 00:43:51 +01:00
CLAUDE.md Only show spawn window toggle when Mac app is connected (#357) 2025-07-15 22:41:51 +02:00
package-lock.json Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01:00
package.json Disable create session modal animation in session detail view 2025-07-08 00:43:51 +01:00
Package.swift Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01:00
README.md refactor: major project restructuring - move macOS app to mac/ directory 2025-06-20 13:20:01 +02:00
VibeTunnel-Info.plist refactor: major project restructuring - move macOS app to mac/ directory 2025-06-20 13:20:01 +02:00

VibeTunnel macOS App

This directory contains the macOS version of VibeTunnel.

Quick Start

Building

# Using Xcode
xcodebuild -workspace VibeTunnel.xcworkspace -scheme VibeTunnel build

# Using build script
./scripts/build.sh

Running Tests

xcodebuild -workspace VibeTunnel.xcworkspace -scheme VibeTunnel test

Creating Release

./scripts/build.sh --configuration Release --sign
./scripts/create-dmg.sh build/Build/Products/Release/VibeTunnel.app

Project Structure

mac/
├── VibeTunnel/           # Source code
│   ├── Core/            # Core services and models
│   ├── Presentation/    # Views and UI components
│   └── Utilities/       # Helper utilities
├── VibeTunnelTests/     # Unit tests
├── scripts/             # Build and release scripts
├── docs/                # macOS-specific documentation
└── private/             # Signing keys (not in git)

Scripts

  • build.sh - Build the app with optional signing
  • create-dmg.sh - Create a DMG for distribution
  • release.sh - Full release process
  • monitor-ci.sh - Monitor CI build status
  • sign-and-notarize.sh - Code signing and notarization

Documentation

See docs/ for macOS-specific documentation:

  • Code signing setup
  • Release process
  • Sparkle update framework
  • Development signing

CI/CD

The app is built automatically on GitHub Actions:

  • On every push to main
  • On pull requests
  • For releases (tagged with v*)

See .github/workflows/swift.yml for the build configuration.