vibetunnel/docs/files.md
2025-06-22 14:27:38 +02:00

7 KiB

VibeTunnel Files Catalog

Overview

VibeTunnel is a cross-platform terminal sharing application organized into distinct platform modules: macOS native app, iOS companion app, and a TypeScript web server. The codebase follows a clear separation of concerns with platform-specific implementations sharing common protocols and interfaces.

The project structure emphasizes modularity with separate build systems for each platform - Xcode projects for Apple platforms and Node.js/TypeScript tooling for the web server. Configuration is managed through xcconfig files, Package.swift manifests, and package.json files.

Core Source Files

macOS Application (mac/)

Main Entry Points

  • VibeTunnel/VibeTunnelApp.swift - macOS app entry point with lifecycle management
  • VibeTunnel/Core/Protocols/VibeTunnelServer.swift - Server protocol definition
  • VibeTunnel/Core/Services/ServerManager.swift - Central server orchestration

Core Services

  • VibeTunnel/Core/Services/BunServer.swift - Bun runtime server implementation
  • VibeTunnel/Core/Services/BaseProcessServer.swift - Base server process management
  • VibeTunnel/Core/Services/TTYForwardManager.swift - Terminal forwarding coordinator
  • VibeTunnel/Core/Services/TerminalManager.swift - Terminal app integration
  • VibeTunnel/Core/Services/SessionMonitor.swift - Session lifecycle tracking
  • VibeTunnel/Core/Services/NgrokService.swift - Tunnel service integration
  • VibeTunnel/Core/Services/WindowTracker.swift - Window state management

Security & Permissions

  • VibeTunnel/Core/Services/DashboardKeychain.swift - Secure credential storage
  • VibeTunnel/Core/Services/AccessibilityPermissionManager.swift - Accessibility permissions
  • VibeTunnel/Core/Services/ScreenRecordingPermissionManager.swift - Screen recording permissions
  • VibeTunnel/Core/Services/AppleScriptPermissionManager.swift - AppleScript permissions

UI Components

  • VibeTunnel/Presentation/Views/MenuBarView.swift - Menu bar interface
  • VibeTunnel/Presentation/Views/WelcomeView.swift - Onboarding flow
  • VibeTunnel/Presentation/Views/SettingsView.swift - Settings window
  • VibeTunnel/Presentation/Views/SessionDetailView.swift - Session detail view

iOS Application (ios/)

Main Entry Points

  • VibeTunnel/App/VibeTunnelApp.swift - iOS app entry point
  • VibeTunnel/App/ContentView.swift - Root content view

Services

  • VibeTunnel/Services/APIClient.swift - HTTP API client
  • VibeTunnel/Services/BufferWebSocketClient.swift - WebSocket terminal client
  • VibeTunnel/Services/SessionService.swift - Session management
  • VibeTunnel/Services/NetworkMonitor.swift - Network connectivity

Terminal Views

  • VibeTunnel/Views/Terminal/TerminalView.swift - Main terminal view
  • VibeTunnel/Views/Terminal/TerminalHostingView.swift - SwiftTerm hosting
  • VibeTunnel/Views/Terminal/TerminalToolbar.swift - Terminal controls
  • VibeTunnel/Views/Terminal/CastPlayerView.swift - Recording playback

Data Models

  • VibeTunnel/Models/Session.swift - Terminal session model
  • VibeTunnel/Models/TerminalData.swift - Terminal buffer data
  • VibeTunnel/Models/ServerConfig.swift - Server configuration

Web Server (web/)

Server Entry Points

  • src/index.ts - Main server entry
  • src/server/server.ts - Express server setup
  • src/server/app.ts - Application configuration

Terminal Management

  • src/server/pty/pty-manager.ts - PTY process management
  • src/server/pty/session-manager.ts - Session lifecycle
  • src/server/services/terminal-manager.ts - Terminal service layer
  • src/server/services/buffer-aggregator.ts - Terminal buffer aggregation

API Routes

  • src/server/routes/sessions.ts - Session API endpoints
  • src/server/routes/remotes.ts - Remote connection endpoints

Client Application

  • src/client/app-entry.ts - Web client entry
  • src/client/app.ts - Main application logic
  • src/client/components/terminal.ts - Web terminal component
  • src/client/components/vibe-terminal-buffer.ts - Buffer terminal component
  • src/client/services/buffer-subscription-service.ts - WebSocket subscriptions

Platform Implementation

macOS Platform Files

  • apple/Local.xcconfig - Local build configuration
  • mac/VibeTunnel/Shared.xcconfig - Shared build settings
  • mac/VibeTunnel/version.xcconfig - Version configuration
  • mac/VibeTunnel.entitlements - App entitlements
  • mac/VibeTunnel-Info.plist - App metadata

iOS Platform Files

  • ios/Package.swift - Swift package manifest
  • ios/project.yml - XcodeGen configuration
  • ios/VibeTunnel/Resources/Info.plist - iOS app metadata

Web Platform Files

  • web/package.json - Node.js dependencies
  • web/tsconfig.json - TypeScript configuration
  • web/vite.config.ts - Vite build configuration
  • web/tailwind.config.js - Tailwind CSS configuration

Build System

macOS Build Scripts

  • mac/scripts/build.sh - Main build script
  • mac/scripts/build-bun-executable.sh - Bun server build
  • mac/scripts/copy-bun-executable.sh - Resource copying
  • mac/scripts/codesign-app.sh - Code signing
  • mac/scripts/notarize-app.sh - App notarization
  • mac/scripts/create-dmg.sh - DMG creation
  • mac/scripts/release.sh - Release automation

Web Build Scripts

  • web/scripts/clean.js - Build cleanup
  • web/scripts/copy-assets.js - Asset management
  • web/scripts/ensure-dirs.js - Directory setup
  • web/build-native.js - Native binary builder

Configuration Files

  • mac/VibeTunnel.xcodeproj/project.pbxproj - Xcode project
  • ios/VibeTunnel.xcodeproj/project.pbxproj - iOS Xcode project
  • web/eslint.config.js - ESLint configuration
  • web/vitest.config.ts - Test configuration

Configuration

App Configuration

  • mac/VibeTunnel/Core/Models/AppConstants.swift - App constants
  • mac/VibeTunnel/Core/Models/UpdateChannel.swift - Update channels
  • ios/VibeTunnel/Models/ServerConfig.swift - Server settings

Assets & Resources

  • assets/AppIcon.icon/ - App icon assets
  • mac/VibeTunnel/Assets.xcassets/ - macOS asset catalog
  • ios/VibeTunnel/Resources/Assets.xcassets/ - iOS asset catalog
  • web/public/ - Web static assets

Documentation

  • docs/API.md - API documentation
  • docs/ARCHITECTURE.md - Architecture overview
  • mac/Documentation/BunServerSupport.md - Bun server documentation
  • web/src/server/pty/README.md - PTY implementation notes

Reference

File Organization Patterns

  • Platform code separated by directory: mac/, ios/, web/
  • Swift code follows MVC-like pattern: Models, Views, Services
  • TypeScript organized by client/server with feature-based subdirectories
  • Build scripts consolidated in platform-specific scripts/ directories

Naming Conventions

  • Swift files: PascalCase matching class/struct names
  • TypeScript files: kebab-case for modules, PascalCase for classes
  • Configuration files: lowercase with appropriate extensions
  • Scripts: kebab-case shell scripts

Key Dependencies

  • macOS: SwiftUI, Sparkle (updates), Bun runtime
  • iOS: SwiftUI, SwiftTerm, WebSocket client
  • Web: Express, xterm.js, WebSocket, Vite bundler