Commit graph

214 commits

Author SHA1 Message Date
Peter Steinberger
fe49e9e19f add support for password on Hummingbird 2025-06-16 20:56:23 +02:00
Peter Steinberger
0f5f264f0b Explain user field 2025-06-16 20:56:23 +02:00
Peter Steinberger
a5d11b4563 Option to bind server to different ip 2025-06-16 20:56:23 +02:00
Peter Steinberger
1967868780 add password for Rust server 2025-06-16 20:56:23 +02:00
Peter Steinberger
f56cef3ad3 Add access mode for settings 2025-06-16 20:56:23 +02:00
Peter Steinberger
2086850759 Add password service for Dashboard 2025-06-16 20:56:23 +02:00
Peter Steinberger
3d68c64fb2 Center dialogs 2025-06-16 20:56:23 +02:00
Peter Steinberger
4f2d5d55ac Default to rust server 2025-06-16 20:56:23 +02:00
Peter Steinberger
7286f3417d don't trigger keychain dialog right away 2025-06-16 20:56:23 +02:00
Peter Steinberger
0c505f77be delete UI test stubs 2025-06-16 20:56:23 +02:00
Armin Ronacher
db752fc39c Added browse command 2025-06-16 20:39:46 +02:00
Armin Ronacher
f328e2c1cb Added password protection 2025-06-16 20:27:07 +02:00
Armin Ronacher
f8ac02d5e5 Removed accidentally added code 2025-06-16 19:58:46 +02:00
Peter Steinberger
2821c399a8 Update welcome screen text and fix Observable pattern usage
- Update dashboard access text for clarity
- Fix ServerManager to work with @Observable macro
- Update CLIInstaller to use @Observable instead of ObservableObject
- Update SettingsView to use @State with ServerManager
- Fix ServerConsoleView to work with async streams
- Update WindowSizeAnimator to use @Observable pattern
2025-06-16 19:52:24 +02:00
Peter Steinberger
47fd447713 Merge remote changes and resolve conflicts 2025-06-16 19:50:26 +02:00
Peter Steinberger
2951b157c2 Add welcome tutorial screen
- Create 3-page onboarding experience for new users
- Page 1: Welcome message with app overview
- Page 2: VT command explanation with CLI installer
- Page 3: Dashboard access with tunneling options
- Add "Show Tutorial" option in Help menu
- Add button in Debug settings to reopen tutorial
- Welcome screen opens Settings on finish
- Support for marking tutorial as seen

The tutorial provides a smooth introduction to VibeTunnel's
key features and helps users get started quickly.
2025-06-16 19:48:36 +02:00
Armin Ronacher
3ba568119e Update readme 2025-06-16 19:42:55 +02:00
Armin Ronacher
9213d59cf9 Added -i / --shell 2025-06-16 19:34:36 +02:00
Armin Ronacher
013ba77a04 Fix cursor rendering 2025-06-16 19:19:18 +02:00
Peter Steinberger
2596b1714e Explain architecture 2025-06-16 19:11:43 +02:00
Peter Steinberger
f14ad81733 Add cleanup on startup setting and fix build issues
- Add "Clean up old sessions on startup" toggle in Advanced settings (defaults to ON)
- Trigger cleanup API automatically after server starts if enabled
- Fix settings window activation for menu bar apps by temporarily switching activation policy
- Enhanced window focusing with deminiaturize and floating level
- Auto-restore menu bar mode when settings window closes
- Change "Purge All" button to use borderedProminent style with red tint
- Fix build errors: MainActor isolation in SettingsOpener
- Fix Package.swift to exclude all non-source files (xcconfig, assets, etc.)
- Move debug mode toggle to last position in Advanced settings
2025-06-16 18:51:35 +02:00
Peter Steinberger
d36dd7bb1e Add Swift Testing tests for session ID handling
Added comprehensive tests to document and verify the session ID fix:

TunnelServerTests:
- Tests for session creation capturing UUID from tty-fwd stdout
- Validation of error handling when session ID is missing
- API endpoint tests for session input validation
- Integration test scenarios for full session lifecycle

SessionIdHandlingTests:
- UUID format validation tests
- Session ID parsing from various response formats
- URL encoding and path construction tests
- Regression test documenting the specific bug that was fixed
- Tests for parsing tty-fwd session list responses

These tests use Swift Testing framework with:
- @Test attributes and #expect assertions
- Parameterized tests for multiple test cases
- Tags for categorization (.sessionManagement, .regression)
- .bug trait to link tests to specific issues

The tests serve as both validation and documentation of the fix
where the Swift server now correctly captures and returns the
actual session UUID from tty-fwd instead of its own generated name.
2025-06-16 18:30:12 +02:00
Armin Ronacher
510be54304 Implemented copy/paste 2025-06-16 18:28:43 +02:00
Peter Steinberger
f871a18fb3 Fix session ID mismatch in Swift server
The Swift server was returning its own generated session name instead of the actual UUID created by tty-fwd, causing 404 errors when trying to send input to sessions.

Changed TunnelServer to:
- Capture stdout from tty-fwd process when creating sessions
- Read the actual session ID (UUID) printed by tty-fwd
- Return this real session ID to clients
- Match the behavior of the Node.js reference implementation

This ensures the session ID used by clients matches what tty-fwd expects for all subsequent operations.
2025-06-16 18:25:06 +02:00
Peter Steinberger
46408a387c Fix server startup coordination and health endpoint consistency
- Fix server health check to use /api/health endpoint consistently
- Improve ServerManager error handling to properly sync state
- Fix async/await warning in DebugSettingsView
- Ensure server state is properly reported even if initial check fails
2025-06-16 18:18:24 +02:00
Armin Ronacher
6299e28e8f Added support for shell expansion in vt 2025-06-16 18:15:28 +02:00
Mario Zechner
ab5a34398d Improve mobile UI and add localStorage for session creation
- Add localStorage persistence for last used working directory and command
- Values are saved on successful session creation and loaded on component creation
- Survives page reloads and provides better UX for repeated session creation
- Enhance mobile terminal buttons with larger Unicode symbols (arrows, tab, enter)
- Make arrow keys, tab, and enter buttons more visible and easier to tap

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 17:46:44 +02:00
Mario Zechner
d164db3496 Add Kill All sessions button and fix terminal scaling
- Add Kill All button to session list that appears when running sessions exist
- Button triggers individual session kill animations by clicking each kill button
- Fix terminal scaling issues with proper character width ratio (0.63)
- Constrain terminal containers to viewport width to prevent overflow
- Override XTerm's fixed width CSS to respect container bounds
- Reduce minimum font size to 4px for better scaling flexibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 17:37:48 +02:00
Armin Ronacher
3e3f81b892 Fix terminal handling 2025-06-16 17:35:00 +02:00
Peter Steinberger
936806edd6 Improve setting front logic 2025-06-16 17:32:06 +02:00
Peter Steinberger
b5d043cba8 Fix build script and input handling
- Change npm build to npm bundle in Xcode build script
- Update session JSON parsing to handle dictionary format
- Make input text optional in InputRequest struct
- Add ctrl_enter and shift_enter to special keys list
2025-06-16 17:23:33 +02:00
Armin Ronacher
420ec3117c Added health endpoint 2025-06-16 17:17:40 +02:00
Armin Ronacher
a803b5ae7d Fixed session create 2025-06-16 17:10:36 +02:00
Armin Ronacher
231aa7040d Simplify url matching 2025-06-16 16:57:08 +02:00
Armin Ronacher
55056ce37e cargo fmt 2025-06-16 16:54:45 +02:00
Mario Zechner
70d53f0b19 Update root gitignore for web build files 2025-06-16 16:48:04 +02:00
Peter Steinberger
0a067ca7a7 Update CI to build Rust binaries and clarify Node.js builds
- Rename Node.js job to clarify it builds both frontend and backend
- Add comment explaining what npm run build does (CSS, client, server)
- Include public/bundle/ in Node.js artifacts for frontend assets
- Add Rust binary build job with matrix strategy for multiple platforms:
  - Linux (x86_64)
  - macOS (x86_64 and arm64)
  - Windows (x86_64)
- Cache Rust dependencies for faster builds
- Run tests only on native platforms (not cross-compilation targets)
2025-06-16 16:47:42 +02:00
Peter Steinberger
445187d754 Add Node.js server build to CI workflow
- Add dedicated job for building Node.js server
- Use Node 20 on Ubuntu for the server build
- Run npm ci, build, and tests for the web directory
- Upload dist/ folder as build artifacts
2025-06-16 16:44:25 +02:00
Peter Steinberger
f6893e1a61 Improve server mode description clarity 2025-06-16 16:38:16 +02:00
Peter Steinberger
c0b9cc4b87 Improve Rust server configuration handling
- Use absolute path for static directory to avoid path resolution issues
- Quote static path argument to handle paths with spaces
- Remove hardcoded default port - now fetched from user defaults via ServerManager
- Add port validation to ensure server doesn't start without configured port
- Add invalidPort error case for better error handling
2025-06-16 16:37:27 +02:00
Peter Steinberger
67ec9ef118 Add dist/ to web .gitignore
Ignore generated distribution files in the web directory.
2025-06-16 16:30:18 +02:00
Peter Steinberger
ad69ead279 Fix Rust server command to use correct tty-fwd syntax
- Change static path from ../web/dist to web/public
- Reorder arguments to: --static-path web/public --serve <port>
- Update directory existence checks to match new path
2025-06-16 16:23:43 +02:00
Peter Steinberger
d013019b16 cleanup git 2025-06-16 16:20:46 +02:00
Peter Steinberger
f7d72acfca Update MockHTTPClient imports 2025-06-16 16:16:04 +02:00
Peter Steinberger
34d868e5c6 Reorganize view files for better project structure
- Move SettingsView.swift to Presentation/Views/
- Move MenuBarView.swift to Presentation/Views/
- Remove redundant Sources folder
- Consolidate all views under Presentation/Views for consistency
2025-06-16 16:16:04 +02:00
Peter Steinberger
6199a256ca Add server mode architecture with Hummingbird and Rust options
- Implement ServerProtocol for abstracting server implementations
- Create ServerManager to orchestrate server switching
- Add HummingbirdServer wrapper around existing TunnelServer
- Implement RustServer to run tty-fwd with --serve option
- Add server mode selector in debug settings UI
- Create ServerConsoleView for real-time server log viewing
- Update ServerMonitor to work with ServerManager
- Add heartbeat monitoring for server health checks
- Support hot-swapping between server modes
- Stream server logs (stdout/stderr) to console view
2025-06-16 16:16:04 +02:00
Peter Steinberger
95642f4723 Update web/.gitignore to exclude generated JS files in public/
- Add rules to exclude *.js and *.js.map files in web/public/
- Add rules to exclude component JS files in web/public/components/
- These are build artifacts that should not be tracked
2025-06-16 16:16:04 +02:00
Mario Zechner
febcea09fa Add debug logging for static file serving
- Debug static path configuration and existence checks
- Log static file request processing steps
- Track index.html file resolution for root path requests
- Help diagnose why index.html isn't being served for URLs with query params

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:13:32 +02:00
Armin Ronacher
8fcc8f0310 Add hardcore ctrlc handler 2025-06-16 16:10:37 +02:00
Mario Zechner
c5a6e2dd1d Remove unnecessary session polling from session-view
Session-view was polling /api/sessions every 2 seconds unnecessarily.
All session updates come via SSE stream including exit events.
This eliminates redundant API calls and improves performance.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:08:28 +02:00