vibetunnel/CLAUDE.md

83 lines
No EOL
2.6 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
VibeTunnel is a macOS application that allows users to access their terminal sessions through any web browser. It consists of:
- Native macOS app (Swift/SwiftUI) in `mac/`
- iOS companion app in `ios/`
- Web frontend (TypeScript/LitElement) and Node.js/Bun server for terminal session management in `web/`
## Critical Development Rules
- **Never commit and/or push before the user has tested your changes!**
- **ABSOLUTELY SUPER IMPORTANT & CRITICAL**: NEVER USE git rebase --skip EVER
## Web Development Commands
**IMPORTANT**: The user has `pnpm run dev` running - DO NOT manually build the web project!
In the `web/` directory:
```bash
# Development (user already has this running)
pnpm run dev
# Code quality (MUST run before commit)
pnpm run lint # Check for linting errors
pnpm run lint:fix # Auto-fix linting errors
pnpm run format # Format with Prettier
pnpm run typecheck # Check TypeScript types
# Testing (only when requested)
pnpm run test
pnpm run test:coverage
pnpm run test:e2e
```
## macOS Development Commands
In the `mac/` directory:
```bash
# Build commands
./scripts/build.sh # Build release
./scripts/build.sh --configuration Debug # Build debug
./scripts/build.sh --sign # Build with code signing
# Other scripts
./scripts/clean.sh # Clean build artifacts
./scripts/lint.sh # Run linting
./scripts/create-dmg.sh # Create installer
```
## Architecture Overview
### Terminal Sharing Protocol
1. **Session Creation**: `POST /api/sessions` spawns new terminal
2. **Input**: `POST /api/sessions/:id/input` sends keyboard/mouse input
3. **Output**:
- SSE stream at `/api/sessions/:id/stream` (text)
- WebSocket at `/buffers` (binary, efficient rendering)
4. **Resize**: `POST /api/sessions/:id/resize` (missing in some implementations)
### Key Entry Points
- **Mac App**: `mac/VibeTunnel/VibeTunnelApp.swift`
- **Web Frontend**: `web/src/client/app.ts`
- **Server**: `web/src/server/server.ts`
- **Process spawning and forwarding tool**: `web/src/server/fwd.ts`
- **Server Management**: `mac/VibeTunnel/Core/Services/ServerManager.swift`
## Testing
- **Never run tests unless explicitly asked**
- Mac tests: Swift Testing framework in `VibeTunnelTests/`
- Web tests: Vitest in `web/src/test/`
## Key Files Quick Reference
- API Documentation: `docs/API.md`
- Architecture Details: `docs/ARCHITECTURE.md`
- Server Implementation Guide: `web/spec.md`
- Build Configuration: `web/package.json`, `mac/Package.swift`