mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-19 13:35:54 +00:00
20 lines
1.6 KiB
Markdown
20 lines
1.6 KiB
Markdown
# AGENT.md
|
|
|
|
## Build/Test Commands
|
|
- **Web**: `cd web && pnpm run check` (format, lint, typecheck), `pnpm run dev` (port 4020), `pnpm run test` (Vitest)
|
|
- **Mac**: `cd mac && ./scripts/build.sh` (Release), `./scripts/build.sh --configuration Debug`, `./scripts/lint.sh` (SwiftFormat + SwiftLint)
|
|
- **Single test**: `cd web && pnpm run test path/to/test.spec.ts` or `xcodebuild test -project VibeTunnel-Mac.xcodeproj -scheme VibeTunnel-Mac`
|
|
|
|
## Architecture
|
|
- **Native macOS** (Swift/SwiftUI) in `mac/` - main app + terminal session management
|
|
- **iOS companion** in `ios/` - mobile interface
|
|
- **Web stack** in `web/` - TypeScript/LitElement frontend + Node.js/Bun server for terminal sessions
|
|
- **Key APIs**: `/api/sessions` (create), `/api/sessions/:id/input` (send), `/api/sessions/:id/stream` (SSE output), `/buffers` (WebSocket binary)
|
|
- **Entry points**: `mac/VibeTunnel/VibeTunnelApp.swift`, `web/src/client/app.ts`, `web/src/server/server.ts`
|
|
|
|
## Code Style
|
|
- **TypeScript**: camelCase vars/functions, PascalCase classes/interfaces, UPPER_SNAKE_CASE constants, `.js` imports, JSDoc, singleton exports
|
|
- **Swift**: PascalCase types, camelCase properties/methods, `// MARK: -` sections, `@Observable` models, `@MainActor` UI, protocol-oriented design
|
|
- **Imports**: System frameworks first (Swift), external libs first (TS), relative paths with `../`, specific imports preferred
|
|
- **Error handling**: Try-catch with logging (TS), custom error enums with `LocalizedError` (Swift)
|
|
- **No backwards compatibility** - Mac app and web server ship together, change both sides simultaneously
|