Commit graph

126 commits

Author SHA1 Message Date
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
Mario Zechner
a77b1dbe26 Implement auto-switch to session view after creation and clean startup
- Add automatic session view switching after creating new sessions
- Poll for session to appear in list and switch immediately when found
- Handle tty-fwd ID mismatch by falling back to newest session
- Add comprehensive debugging for session creation flow
- Clean control directory contents on server startup for fresh state
- Improve session creation UX with seamless transition to interactive view

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:19:35 +02:00
Peter Steinberger
060f25dbe7 Fix tty-fwd SIGKILL issue by adding entitlements and signing script
- Add entitlements to allow spawning executables with different signatures
- Create build script to properly sign tty-fwd binary during builds
- Add error logging for better debugging of process termination
- Validate control directory permissions before use
2025-06-16 07:19:03 +02:00
Peter Steinberger
79a23c0aa6 Replace PATH hack with proper zsh configuration loading in Xcode build script
- Changed build script shell from /bin/sh to /bin/zsh for better compatibility
- Sources user's .zshrc or .zprofile to get the actual PATH configuration
- Properly handles all Node.js installation methods (nvm, homebrew, fnm, etc.)
- Added PATH debugging output to help troubleshoot issues
- Maintains fallback for systems without zsh configuration files

Also includes:
- Added PATH environment fix for ngrok detection in NgrokService
- Implemented proper update channel support in SparkleUpdaterManager using delegate methods
- Fixed session name placeholder text in web frontend
2025-06-16 07:15:53 +02:00
Mario Zechner
2fa36dd15b Move CREATE SESSION button to header and improve UI layout
- Move CREATE SESSION button from session list to app header for better visibility
- Hide CLEAN EXITED button when "hide exited" is checked (only show when needed)
- Simplify session list controls layout with clean flex design
- Add proper state management for create modal between app and session list
- Maintain hide exited state when navigating between views
- Fix checkbox blocking issue with better event timing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 07:13:45 +02:00
Peter Steinberger
334d4d741e Improve tty-fwd error messages and ensure control directory exists
- Added detailed error messages for common exit codes (SIGKILL, command not found, etc.)
- Create control directory (~/.vibetunnel/control) if it doesn't exist
- Trim whitespace from error output for cleaner messages
- Specifically handle exit code 9 (SIGKILL) which occurs when control directory is missing
- Ensure directory exists in both listSessions() and createSession()
2025-06-16 07:06:30 +02:00
Peter Steinberger
74373a129d Fix TypeScript error in server.ts
- Handle error type properly in catch block
- Check if error is instanceof Error before accessing message property
- Provide fallback for unknown error types
2025-06-16 06:59:11 +02:00
Armin Ronacher
14321ccbb5 Add --claude and --claude-yolo 2025-06-16 06:55:04 +02:00
Peter Steinberger
91f12f6ed6 Add Xcode build phase for web frontend
- Added "Build Web Frontend" phase that runs npm install and npm run build
- Copies built web assets from web/public/ to app Resources folder
- Modified TunnelServer.swift to only serve static files from bundled Resources
- Removed development path options from static file serving
- Added proper PATH configuration for npm in build script
2025-06-16 06:54:04 +02:00
Mario Zechner
3a6665c13f Fix session status detection and prevent stream restarts for exited sessions
- Add session status polling in session view to detect when sessions end
- Switch from live stream to static snapshot for exited sessions
- Fix session list player creation for toggled visibility states
- Use requestAnimationFrame for better DOM timing instead of setTimeout
- Rename checkbox label from "--filter-exited" to "hide exited"
- Implement smart kill/clean button behavior based on session status
- Remove all focus outlines from session view interface

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 06:43:27 +02:00
Peter Steinberger
05b3be6569 disable user script sandbox 2025-06-16 06:41:10 +02:00
Peter Steinberger
d4c5f22fad Improve UI styling in Advanced Settings
- Increase General tab height by 50px to 450px for better spacing
- Style server port field with rounded border and centered text
- Center the Tailscale recommendation footer text
2025-06-16 06:40:08 +02:00
Peter Steinberger
6cbe2b8cbb Fix Xcode build phase permissions and increase General tab height
- Add tty-fwd-universal to inputPaths to fix "Operation not permitted" error
- Set alwaysOutOfDate flag to ensure build phase runs when needed
- Increase General settings tab height from 300 to 400 pixels
- Fix ngrok alert handling to use SwiftUI alerts instead of NSAlert
2025-06-16 06:35:04 +02:00
Armin Ronacher
347d79914f Fix cargo build for some macs 2025-06-16 06:23:23 +02:00
Peter Steinberger
6c0b8cb7b3 Prevent update dialogs on app startup in debug mode
- Set startingUpdater to false in DEBUG builds to prevent automatic initialization
- Keep all automatic update checks and downloads disabled in DEBUG mode
- Only start the updater manually in release builds if needed
- This ensures no update-related dialogs appear during development
2025-06-16 06:11:34 +02:00
Peter Steinberger
d4fae5631a Improve ngrok authentication UX and move update settings
- Show alert dialog when attempting to enable ngrok without auth token
- Move update channel and check for updates from Advanced to General settings
- Place update controls under Application section for better accessibility
- Add AppKit import for NSAlert functionality
2025-06-16 06:07:03 +02:00
Armin Ronacher
e8fb468a19 Implement half broken SSE 2025-06-16 06:04:03 +02:00
Mario Zechner
e27657a9fe WIP: Interactive session view needs refinement
- Basic routing and keyboard handling implemented
- Terminal display and input sending functional
- Still needs polish and bug fixes before fully working

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:54:15 +02:00
Peter Steinberger
70a8da5235 feat: enhance UI and automatic update handling
- Fix session count display to show on single line in menu bar
- Add conditional compilation to disable automatic updates in DEBUG mode
- Add "Open Dashboard" menu item that opens internal server URL
- Convert Help menu from popover to native macOS submenu style
- Enable automatic update downloads in Sparkle configuration
- Increase Advanced Settings tab height from 400 to 500 pixels
- Add Tailscale recommendation with clickable markdown link
- Fix Sendable protocol conformance issues throughout codebase
- Add ApplicationMover utility for app installation location management

These changes improve the overall user experience by making the UI more
intuitive and ensuring automatic updates work correctly in production
while being disabled during development.
2025-06-16 05:53:08 +02:00
Mario Zechner
09cc9edb43 Implement interactive session view with keyboard input
- Add session-view.ts component for full-screen terminal interaction
- Implement real-time keyboard input handling for all key types
- Add routing between session list and interactive session view
- Support special keys, Ctrl combinations, and regular text input
- Remove compiled JS files from git tracking (should be build artifacts)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:51:27 +02:00
Mario Zechner
ba4a86c5db Improve terminal preview layout for better space utilization
- Change asciinema player fit mode from 'both' to 'width' for horizontal expansion
- Add overflow-hidden to prevent vertical overflow from breaking layout
- Terminal previews now always use full card width

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:48:50 +02:00
Peter Steinberger
d80ab6c217 Add ngrok integration for remote access
- Add NgrokService to manage ngrok tunnel lifecycle
- Integrate ngrok with TunnelServer via API endpoints (/api/ngrok/*)
- Add UI controls in Advanced Settings for ngrok configuration
- Store auth tokens securely in macOS Keychain
- Add ServerMonitor to track server status across the app
- Show tunnel status and public URL when active
- Support CLI-based ngrok integration (requires brew install ngrok)

This allows VibeTunnel to be accessed remotely via ngrok tunnels,
fulfilling the "use Claude Code anywhere" promise.
2025-06-16 05:45:51 +02:00
Mario Zechner
64c97832c3 FUUUUU 2025-06-16 05:44:51 +02:00
Armin Ronacher
25293cef7b Added vt command 2025-06-16 05:43:09 +02:00
Mario Zechner
a7dce56757 Fix live streaming for terminal previews with asciinema player
- Configure asciinema player with eventsource driver for SSE support
- Update server stream endpoint to properly format SSE for asciinema
- Session preview cards now display live terminal output

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:43:04 +02:00
Peter Steinberger
520cf9641d Add Help menu to menu bar with website and issue links
- Add Help submenu with links to website and GitHub issues
- Include Check for Updates functionality (using Sparkle stub)
- Display app version (0.1.3) in Help menu
- Move About option from main menu to Help submenu
- Update About description to "Turn any browser into your Mac's terminal."
2025-06-16 05:23:56 +02:00
Mario Zechner
9cbda0d4eb Very good commit 2025-06-16 05:11:09 +02:00
Mario Zechner
79509ea251 Simplify UI with clean header and button styling
- Replace complex ASCII header with simple "VibeTunnel" text
- Remove ASCII brackets from buttons: CREATE, CLEAN, CLEAN EXITED, kill
- Add border to header for visual separation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:11:09 +02:00
Armin Ronacher
2bc2c2f3c7 Kill leftover prototype 2025-06-16 05:05:42 +02:00
Mario Zechner
179d0db754 Clean up file naming by removing -new suffixes
- Renamed server-new.ts → server.ts
- Renamed app-new.ts → app.ts
- Renamed app-new-entry.ts → app-entry.ts
- Updated package.json scripts to remove all -new references
- Updated custom element name from vibetunnel-app-new to vibetunnel-app
- Updated index.html to reference cleaned up files
- Added CLAUDE.md with development notes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:55:18 +02:00
Armin Ronacher
19b428a879 Remove unused stuff 2025-06-16 04:52:30 +02:00
Armin Ronacher
482f48052c Hook up cleanup 2025-06-16 04:48:20 +02:00
Peter Steinberger
eb12804a0b Remove Tunnel2 2025-06-16 04:42:22 +02:00