vibetunnel/mac
Billy Irwin 7462111821 fix: prevent repeated screen recording permission dialogs
- Replace SCShareableContent.current with CGPreflightScreenCaptureAccess for non-triggering permission checks
- Add 5-second cache for permission state to reduce frequent checks
- Add permission guards to WebRTC endpoints (/displays, /processes)
- Only trigger permission dialog on explicit user action (button click)
- Return proper error responses when permission is denied instead of triggering dialog

This fixes the issue where VibeTunnel would repeatedly show the screen recording
permission dialog even after permissions were granted in System Settings.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 18:58:55 +02:00
..
docs Improve release scripts based on beta 9 lessons learned 2025-07-11 11:29:49 +02:00
scripts docs: Add Linux setup instructions and authentication documentation (#344) 2025-07-15 02:47:25 +02:00
VibeTunnel fix: prevent repeated screen recording permission dialogs 2025-07-15 18:58:55 +02:00
VibeTunnel-Mac.xcodeproj Add debug development server mode for hot reload (#316) 2025-07-12 10:57:03 +02:00
VibeTunnelTests fix: prevent duplicating sessions (#345) 2025-07-15 03:50:51 +02:00
.gitignore Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01: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
CHANGELOG.md Update to version 1.0.0-beta.10 build 190 2025-07-15 09:32:46 +02:00
CLAUDE.md Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01: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.