vibetunnel/web
2025-07-11 08:23:47 +02:00
..
.claude Add precommit command for web app 2025-07-01 12:19:13 +01:00
docs feat: implement parallel test execution with improved stability (#205) 2025-07-03 16:40:03 +01:00
node-pty Fix mobile terminal resize loop (#305) 2025-07-11 08:23:47 +02:00
scripts feat: add fish shell expansion support (#228) (#242) 2025-07-08 00:44:31 +01:00
src Fix mobile terminal resize loop (#305) 2025-07-11 08:23:47 +02:00
.gitignore Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01:00
.npmrc Replace Microsoft node-pty with vendored fork to fix crashes (#304) 2025-07-11 07:19:32 +02:00
.prettierignore lint web 2025-06-17 01:03:37 +02:00
.prettierrc.json ocx compiler for prettier for 3x speed 2025-06-25 12:22:13 +02:00
.side-effects-cache.json Replace Microsoft node-pty with vendored fork to fix crashes (#304) 2025-07-11 07:19:32 +02:00
biome.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
build-custom-node.js Fix Homebrew library dependencies in release builds (#269) 2025-07-08 09:55:52 +01:00
build-native-clean.sh add script that filters build warnings 2025-06-25 04:21:34 +02:00
build-native.js Fix mobile terminal resize loop (#305) 2025-07-11 08:23:47 +02:00
CLAUDE.md Consolidate Z Index Logic (#291) 2025-07-10 06:34:50 +02:00
custom-node.md improve custom node docs 2025-06-22 14:46:34 +02:00
DEVELOPMENT.md Fix race condition risks in code quality tools 2025-06-28 15:22:05 +02:00
fwd-test.ts Migrate to Microsoft node-pty v1.1.0-beta34 (#87) 2025-06-26 23:10:05 +02:00
LOGGING_STYLE_GUIDE.md Clean-up of web/, updated spec.md 2025-06-27 21:13:55 +02:00
package.json Fix mobile terminal resize loop (#305) 2025-07-11 08:23:47 +02:00
playwright.config.skip-failing.ts refactor: extract preventAndStopEvent helper + support alt+nav on mobile (#290) 2025-07-09 21:07:20 +02:00
playwright.config.ts Integrate screencap functionality for remote screen sharing (#209) 2025-07-06 03:31:34 +01:00
pnpm-lock.yaml Fix mobile terminal resize loop (#305) 2025-07-11 08:23:47 +02:00
postcss.config.js Add complete web frontend for terminal multiplexer 2025-06-16 00:29:33 +02:00
README.md Add husky pre-commit hooks for code quality enforcement (#157) 2025-07-01 03:49:00 +01:00
SECURITY.md Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
spec.md Updated spec.md 2025-07-02 05:12:43 +01:00
tailwind.config.js Enhance VibeTunnel web interface with modern visual design (#177) 2025-07-01 17:57:57 +01:00
tsconfig.base.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
tsconfig.client.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
tsconfig.json Unfuck tsconfigs + VS Code + eslint + tsc, fix type errors 2025-06-24 01:51:46 +02:00
tsconfig.server.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
tsconfig.sw.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
tsconfig.test.json Unfuck tsconfigs + VS Code + eslint + tsc, fix type errors 2025-06-24 01:51:46 +02:00
vitest.config.ts Unified control protocol and deferred screen recording permissions (#239) 2025-07-08 00:42:13 +01:00

VibeTunnel Web

Web terminal interface and server for VibeTunnel.

Quick Start

Production users: Use the pre-built VibeTunnel executable from the main app.

Development

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

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

pnpm run build          # Creates Node.js SEA executable
./native/vibetunnel    # Run standalone executable (no Node.js required)

Architecture

See 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