mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-19 13:35:54 +00:00
81 lines
No EOL
2.6 KiB
Markdown
81 lines
No EOL
2.6 KiB
Markdown
# VibeTunnel Web
|
|
|
|
Web terminal interface and server for VibeTunnel.
|
|
|
|
## Quick Start
|
|
|
|
Production users: Use the pre-built VibeTunnel executable from the main app.
|
|
|
|
## Development
|
|
|
|
```bash
|
|
pnpm install
|
|
pnpm run dev # Watch mode: server + client
|
|
pnpm run dev:client # Watch mode: client only (for debugging server)
|
|
```
|
|
|
|
Open http://localhost:3000
|
|
|
|
### Pre-commit Hooks
|
|
|
|
This project uses husky and lint-staged to enforce code quality standards. After running `pnpm install`, pre-commit hooks will automatically:
|
|
|
|
- Format code with Biome
|
|
- Check for linting errors
|
|
- Run TypeScript type checking for all configs
|
|
|
|
If your commit fails due to linting or type errors, fix the issues and try again. Many formatting issues will be auto-fixed.
|
|
|
|
### Build Commands
|
|
|
|
```bash
|
|
pnpm run clean # Remove build artifacts
|
|
pnpm run build # Build everything (including native executable)
|
|
pnpm run lint # Check code style
|
|
pnpm run lint:fix # Fix code style
|
|
pnpm run typecheck # Type checking
|
|
pnpm run test # Run all tests (unit + e2e)
|
|
pnpm run format # Format code
|
|
```
|
|
|
|
## Production Build
|
|
|
|
```bash
|
|
pnpm run build # Creates Node.js SEA executable
|
|
./native/vibetunnel # Run standalone executable (no Node.js required)
|
|
```
|
|
|
|
## Architecture
|
|
|
|
See [spec.md](./spec.md) for detailed architecture documentation.
|
|
|
|
## Key Features
|
|
|
|
- Terminal sessions via node-pty
|
|
- Real-time streaming (SSE + WebSocket)
|
|
- Binary-optimized buffer updates
|
|
- Multi-session support
|
|
- File browser integration
|
|
|
|
## Terminal Resizing Behavior
|
|
|
|
VibeTunnel intelligently handles terminal width based on how the session was created:
|
|
|
|
### Tunneled Sessions (via `vt` command)
|
|
- Sessions created by running `vt` in a native terminal window
|
|
- Terminal width is automatically limited to the native terminal's width to prevent text overflow
|
|
- Prevents flickering and display issues in the native terminal
|
|
- Shows "≤120" (or actual width) in the width selector when limited
|
|
- Users can manually override this limit using the width selector
|
|
|
|
### Frontend-Created Sessions
|
|
- Sessions created directly from the web interface (using the "New Session" button)
|
|
- No width restrictions by default - uses full browser width
|
|
- Perfect for web-only workflows where no native terminal is involved
|
|
- Shows "∞" in the width selector for unlimited width
|
|
|
|
### Manual Width Control
|
|
- Click the width indicator in the session header to open the width selector
|
|
- Choose from common terminal widths (80, 120, 132, etc.) or unlimited
|
|
- Width preferences are saved per session and persist across reloads
|
|
- Selecting any width manually overrides automatic limitations |