Commit graph

1008 commits

Author SHA1 Message Date
Armin Ronacher
0d00c56b44 Document mkdir 2025-06-16 15:08:38 +02:00
Armin Ronacher
3ee0a57d6d Add mkdir endpoint 2025-06-16 15:07:57 +02:00
Armin Ronacher
fa647d1fe3 Added session create endpoint 2025-06-16 15:04:10 +02:00
Mario Zechner
90eb324930 Fix session card styling to match original design
- Restore compact header layout with proper spacing (px-3 py-2)
- Use original VS Code theme colors (text-vs-user, text-vs-warning)
- Fix terminal preview with proper aspect ratio (640/480)
- Update kill button styling to match original (bg-vs-warning)
- Add compact footer with session ID and working directory

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 14:59:24 +02:00
Armin Ronacher
f92e3d8bc4 Reuse header sending code 2025-06-16 14:58:16 +02:00
Armin Ronacher
4e554ed125 HTTP server cleanup 2025-06-16 14:55:09 +02:00
Armin Ronacher
5cd6b8802f Validate that we use valid uuids 2025-06-16 14:48:42 +02:00
Armin Ronacher
d1c6fd32cc Removed unused code 2025-06-16 14:46:09 +02:00
Armin Ronacher
b0e54b3cbc Updatd readme 2025-06-16 14:46:09 +02:00
Armin Ronacher
e2b06b672d Allow static file rendering 2025-06-16 14:46:09 +02:00
Armin Ronacher
1beb938646 Added real streaming endpoint 2025-06-16 14:46:09 +02:00
Armin Ronacher
0a5f947b98 Refactor server 2025-06-16 14:46:09 +02:00
Armin Ronacher
10c1379922 Vendor blocking-http-server 2025-06-16 14:46:09 +02:00
Armin Ronacher
bf7f2e0434 Refactor server slightly 2025-06-16 14:46:09 +02:00
Armin Ronacher
73c57e9682 Expose more session cleanup 2025-06-16 14:46:09 +02:00
Armin Ronacher
1ebfc0c37c Expose more methods 2025-06-16 14:45:19 +02:00
Armin Ronacher
c30f16531e Started port of server into tty-fwd 2025-06-16 14:45:19 +02:00
Peter Steinberger
39a5f25680 add workspace 2025-06-16 14:17:45 +02:00
Mario Zechner
ae2c986e33 Implement session-card architecture and improve session management
- Create session-card component for individual session rendering
- Add Renderer active count tracking to monitor instance leaks
- Parse session ID from tty-fwd stdout for reliable session creation
- Add 2-second delay for fresh session connections to prevent race conditions
- Simplify session-list to use session-card components
- Restore original layout with controls and proper padding
- Improve SSE exit event handling with direct session ID usage

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 13:50:28 +02:00
Mario Zechner
4757d27d26 Implement session-card architecture and improve session management
- Create session-card component for individual session rendering
- Add Renderer active count tracking to monitor instance leaks
- Parse session ID from tty-fwd stdout for reliable session creation
- Add 2-second delay for fresh session connections to prevent race conditions
- Simplify session-list to use session-card components
- Restore original layout with controls and proper padding
- Improve SSE exit event handling with direct session ID usage

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 13:50:19 +02:00
Mario Zechner
3ec417c8b1 Implement custom ScaleFitAddon for proper terminal scaling
- Create ScaleFitAddon that scales font size to fit columns to container width
- Calculates optimal rows for container height with scaled font
- Replace CSS transform scaling with proper font size calculation
- Apply to both session view and previews for consistent behavior
- Achieve 95-98% width utilization instead of arbitrary 80% scaling
- Prevent stack overflow with font size change detection

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 12:06:42 +02:00
Mario Zechner
34801bc687 Fix terminal layout and improve mobile UX
- Restructure session-view to use proper flexbox layout (header/xterm/buttons)
- Container now exactly fits viewport height (100vh)
- Header shows command and working directory stacked
- XTerm gets all remaining space with horizontal scrolling
- Mobile buttons integrated into layout instead of overlaying
- Replace setTimeout with requestAnimationFrame for better performance
- Add isPreview parameter to renderer for future preview scaling
- Disable pointer events on preview terminals so clicks pass through

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 11:55:22 +02:00
Mario Zechner
093aff4379 Update XTerm theme to VS Code Dark colors and improve SSE streaming
- Replace Gruvbox color scheme with VS Code Dark theme colors
- Remove inappropriate terminal.clear() calls from live stream connections
- Add debugging logs for SSE events to investigate DOM recreation issue
- Ensure only snapshots clear terminal, streams append new content

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 10:58:21 +02:00
Mario Zechner
e8bee03388 Replace asciinema with XTerm renderer and add key combination support
- Replace AsciinemaPlayer with XTerm.js renderer in session-view and session-list
- Add XTerm CSS for proper terminal styling and hide input textarea
- Implement resize event handling (r-type cast events) in renderer
- Add Ctrl+Enter and Shift+Enter key combination support
- Update tty-fwd to handle ctrl_enter and shift_enter keys
- Set TERM=xterm-256color in tty-fwd for proper Unicode box-drawing
- Add font scaling and preview sizing for session-list terminals
- Remove asciinema dependencies and update CSS accordingly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 10:38:19 +02:00
Mario Zechner
7b6ebad8be Increase XTerm scrollback buffer to 1M lines by default
- Add configurable scrollback parameter to Renderer constructor
- Default to 1,000,000 lines (up from 1,000) for full session history
- Users can now scroll through entire terminal session history
- Fix renderer-entry.ts import path (remove .js extension)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 10:38:19 +02:00
Mario Zechner
c7c8a605c2 Replace custom renderer with XTerm.js and consolidate tests
- Remove old custom ANSI renderer (src/client/renderer.ts)
- Rename XTermRenderer to Renderer and move to renderer.ts
- Update renderer-entry.ts to export single Renderer class
- Rename and update all test files:
  - test-xterm-renderer.html → test-renderer.html
  - simple-xterm-test.html → simple-test.html
  - debug-xterm.html → debug-renderer.html
- Remove obsolete custom renderer tests
- Update tests/index.html with new test descriptions
- All tests now use single XTerm.js-based Renderer

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 10:38:19 +02:00
Mario Zechner
e4b4a37c86 Fix renderer export name - use TerminalRenderer with Renderer alias 2025-06-16 10:38:19 +02:00
Mario Zechner
9bc6fcc4b1 Replace CDN imports with local bundle in all tests
- Create renderer-entry.ts to bundle both Renderer and XTermRenderer
- Add bundle:renderer script to generate public/bundle/renderer.js
- Update all test files to import from ../bundle/renderer.js
- Remove all unpkg/CDN XTerm.js script imports
- Tests now use bundled dependencies for faster loading

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 10:38:19 +02:00
Peter Steinberger
6d9ee470c4 Replace NSApplicationOpenSettingsCategory hack with SwiftUI SettingsLink
- Use SettingsLink in MenuBarView for native SwiftUI settings opening
- Move HiddenWindowView to SettingsOpener.swift for better organization
- Keep programmatic settings access via notification for AppDelegate use
- Position hidden window offscreen to avoid menu click interference
- Remove unused HiddenWindow.swift and ObjectiveC imports
- Fix for FB10184971: Settings doesn't work in MenuBarExtra-only apps

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 09:52:45 +02:00
Peter Steinberger
92890fe189 fixes showing settings on macOS Tahoe 2025-06-16 09:52:45 +02:00
Mario Zechner
43d406a84c Clean up build system and implement XTerm.js renderer
- Replace TypeScript compilation with esbuild bundling
- Organize all generated files in public/bundle/
- Remove PWA features and simplify index.html
- Add XTerm.js renderer with same API as custom renderer
- Create comprehensive test suite in public/tests/
- Update .gitignore to only track source files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 09:33:33 +02:00
Armin Ronacher
8f52b73454 Seemingly this is needed 2025-06-16 09:13:36 +02:00
Peter Steinberger
796bb55b91 fix warning 2025-06-16 09:12:57 +02:00
Peter Steinberger
9fa6199c1c setting structure 2025-06-16 09:12:48 +02:00
Peter Steinberger
0cb87e6f81 better truncate 2025-06-16 09:12:34 +02:00
Peter Steinberger
e41a4c465a Same size for all tabs 2025-06-16 08:34:33 +02:00
Peter Steinberger
62dfe07643 add session validation 2025-06-16 08:34:27 +02:00
Peter Steinberger
1056145bc0 Improve ngrok 2025-06-16 08:11:45 +02:00
Peter Steinberger
0bc40ffae9 Implement session cast 2025-06-16 08:11:45 +02:00
Peter Steinberger
08837015c7 fix permissions on web 2025-06-16 08:10:43 +02:00
Peter Steinberger
8b8d4fb4c3 fix web install 2025-06-16 08:03:26 +02:00
Mario Zechner
33b1f89f12 Fix Tailwind CSS to use local installation via npx
- Update build:css script to use npx tailwindcss instead of global
- Update watch:css script to use npx tailwindcss instead of global
- Ensures consistent builds using project dependencies

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:59:58 +02:00
Mario Zechner
807b32d479 PWA, server needs to serve via HTTPS still 2025-06-16 07:57:48 +02:00
Armin Ronacher
1d074e616b Add CLI tool installation feature with sudo authentication
- Created CLIInstaller utility to symlink vt binary to /usr/local/bin
- Added 'Install vt Command' button to Advanced Settings
- Handles sudo authentication through system dialogs
- Checks for existing installations and provides replacement option
- Includes proper error handling and user feedback

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:48:07 +02:00
Mario Zechner
fce59c3df6 Add URL routing and enhanced mobile terminal controls
- Implement browser URL routing with session ID parameters
- Add browser back/forward navigation support
- Auto-load session view from URL on page refresh
- Add mobile swipe-back gesture from left edge
- Reorganize mobile controls: arrow keys + special keys in normal view
- Simplify text overlay to show only SEND and SEND+ENTER buttons
- Remove left arrow from BACK button for cleaner look

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:47:43 +02:00
Peter Steinberger
ac13030b52 Fix SSE stream closing issue and improve file monitoring
- Add periodic heartbeats (every 15 seconds) to keep SSE connections alive
- Enhance response headers to prevent proxy buffering (X-Accel-Buffering: no)
- Fix monitorFileChanges to read entire file from beginning like tail -f
- Process lines synchronously to maintain order
- Send initial connection message to establish stream immediately
- Remove empty line filtering to match tail -f behavior exactly

This ensures streams stay open indefinitely and don't timeout due to inactivity.
2025-06-16 07:45:13 +02:00
Mario Zechner
aae68479ee Improve mobile terminal input with virtual keyboard support
- Move controls above virtual keyboard using Visual Viewport API
- Dynamically adjust textarea height when keyboard appears/disappears
- Add smooth transitions for keyboard show/hide
- Prevent textarea from stretching behind buttons
- Clean up event listeners properly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:36:58 +02:00
Peter Steinberger
975705ae80 Remove control directory creation logic from TunnelServer
The tty-fwd binary should handle its own directory requirements. This removes:
- ensureControlDirectoryExists() function
- All calls to ensure control directory exists during startup and API calls
- Directory writability checks

The control directory path is still passed to tty-fwd, but VibeTunnel no longer manages its creation.
2025-06-16 07:36:30 +02:00
Peter Steinberger
63d02b4ed6 Update CI workflow to use Xcode 16.2 2025-06-16 07:22:26 +02:00
Armin Ronacher
cf3069381e Fixed build on my machine 2025-06-16 07:21:02 +02:00