vibetunnel/web
Mario Zechner 2ffb0a3a62 Fix race conditions in PTY output handling with WriteQueue
Implement WriteQueue to serialize all async write operations and handle backpressure:
- Add shared WriteQueue utility class for serializing async operations
- Move write queue inside AsciinemaWriter to handle all write methods
- Add backpressure handling using stream 'drain' events
- Ensure all AsciinemaWriter methods (writeHeader, writeRawJson) use queue
- Add drain() method to wait for pending writes on close
- Store stdout queue reference in PtySession for cleanup on process exit

This prevents race conditions where concurrent fs.fsync calls could interleave,
causing out-of-order disk flushes and potential data corruption.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-27 22:21:05 +02:00
..
.claude Implement comprehensive user authentication with SSH key management (#43) 2025-06-24 00:31:13 +02:00
docs debug log 2025-06-25 02:11:51 +02:00
scripts Migrate to Microsoft node-pty v1.1.0-beta34 (#87) 2025-06-26 23:10:05 +02:00
src Fix race conditions in PTY output handling with WriteQueue 2025-06-27 22:21:05 +02:00
.gitignore Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
.npmrc Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +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
biome.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
build-custom-node.js Migrate to Microsoft node-pty v1.1.0-beta34 (#87) 2025-06-26 23:10:05 +02:00
build-native-clean.sh add script that filters build warnings 2025-06-25 04:21:34 +02:00
build-native.js Migrate to Microsoft node-pty v1.1.0-beta34 (#87) 2025-06-26 23:10:05 +02:00
CLAUDE.md Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
custom-node.md improve custom node docs 2025-06-22 14:46:34 +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 Clean-up of web/, updated spec.md 2025-06-27 21:13:55 +02:00
pnpm-lock.yaml Migrate to Microsoft node-pty v1.1.0-beta34 (#87) 2025-06-26 23:10:05 +02:00
postcss.config.js Add complete web frontend for terminal multiplexer 2025-06-16 00:29:33 +02:00
README.md Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
SECURITY.md Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02:00
spec.md Clean-up of web/, updated spec.md 2025-06-27 21:13:55 +02:00
tailwind.config.js add missing background 2025-06-24 03:25:50 +02:00
test-results.json Add comprehensive server tests and switch to Biome linter (#73) 2025-06-24 18:51:38 +02: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 Fix URL link detection for wrapped URLs on mobile terminals (#85) 2025-06-26 22:37:49 +02: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

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