vibetunnel/web
Helmut Januschka bdfd46a915
Add keyboard shortcut highlighter to terminal (#114)
* Add keyboard shortcut highlighter to terminal

- Create keyboard-shortcut-highlighter.ts with comprehensive pattern matching
- Integrate highlighter into terminal component alongside URL highlighting
- Support clickable shortcuts like "Ctrl+R", "Ctrl+A", "esc to interrupt"
- Style shortcuts with greyish color and dotted underlines (not blue links)
- Send actual key sequences when shortcuts are clicked
- Handle overlapping matches and avoid double-processing

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix keyboard shortcut input handling - add missing event listener

The keyboard shortcut highlighter was dispatching 'terminal-input' events
but the session-view component wasn't listening for them. Added:

- @terminal-input event listener on vibe-terminal component
- handleTerminalInput method that forwards to inputManager.sendInputText()

Now clicked shortcuts like 'Ctrl+R' properly send input to the terminal.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Add Claude Code interactive prompt support to keyboard shortcut highlighter

Make numbered options in Claude Code prompts clickable:
- Pattern: '❯ 1. Yes' or '  2. Yes, and don't ask again'
- Clicking sends the number (1, 2, 3, etc.) to terminal
- Handles both selected (❯) and unselected options
- Uses multiline regex matching for line-start patterns

Now users can click numbered options instead of typing numbers.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Claude Code prompt patterns to handle indented options

Previous patterns required line-start anchors which failed for indented
options within bordered terminal output. Updated patterns:

- Remove restrictive line-start anchors (^)
- Add whitespace-flexible patterns for indented options
- Support both cursor-selected (❯) and plain numbered options
- Handle 'Yes, proceed' and 'No, exit' style options

Now correctly matches:
'❯ 1. Yes, proceed' and '  2. No, exit' patterns.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Simplify Claude Code prompt patterns to be fully generic

Replace keyword-specific patterns with generic numbered option matching:

- ❯ 1. (cursor-selected options)
- 1. xxxxx (any numbered option with text)

Now matches any numbered list item regardless of content:
'1. Yes, proceed', '2. No, exit', '3. Maybe later', etc.

Much cleaner and more flexible than keyword-based matching.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Claude Code prompt patterns to highlight full option lines

Changed from matching only first word to matching entire lines:
- /❯\s*(\d+)\.\s+.*/ - highlights complete cursor-selected option
- /(\d+)\.\s+.*/ - highlights complete numbered option

Now '1. Yes, proceed' and '2. No, exit' are fully underlined
instead of just '1. Yes' and '2. No'.

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

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-28 02:15:50 +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 Add keyboard shortcut highlighter to terminal (#114) 2025-06-28 02:15:50 +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