Commit graph

238 commits

Author SHA1 Message Date
Mario Zechner
edf8f9ee26 Fix terminal cursor visibility and improve paste functionality
- Remove CSS that was hiding XTerm helper textarea, allowing cursor to display properly
- Configure XTerm with visible green cursor (block style, blinking)
- Add paste event handling directly to session-view component
- Improve font scaling with Unicode support in ScaleFitAddon
- Temporarily disable file monitor cancel to prevent crashes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-17 00:20:48 +02:00
Mario Zechner
b54dc7a17c Fix terminal cursor not showing up 2025-06-17 00:20:48 +02:00
Mario Zechner
16f139ce89 Log websocket error, don't throw. 2025-06-17 00:20:38 +02:00
Mario Zechner
16fe254564 Standard control path 2025-06-17 00:20:38 +02:00
Armin Ronacher
17ccdf6661 Fix clippy warning 2025-06-17 00:07:42 +02:00
Peter Steinberger
7172840fa5 better docs 2025-06-16 23:57:17 +02:00
Peter Steinberger
c26be3eefd Update to version 1.0.0 build 100 and fix all linting issues
- Set version to 1.0.0 and build number to 100
- Run SwiftFormat to format all Swift files
- Fix all SwiftLint warnings and errors:
  - Replace force unwrapping with safe optional handling
  - Fix redundant string enum values
  - Replace print statements with proper Logger
  - Fix identifier names (w→width, h→height, a→first, b→second)
  - Fix attributes formatting
  - Fix vertical whitespace issues
  - Fix multiple closures with trailing closure syntax
- Configure SwiftFormat and SwiftLint for Swift 6 compatibility:
  - Disable redundantSelf rule to preserve required self references
  - Set --self insert to maintain Swift 6 compliance
  - Add comments about Swift 6 requirements
- Ensure linting and formatting tools don't create conflicts
2025-06-16 23:45:44 +02:00
Armin Ronacher
b79d5a1fb4 SIGKILL ueber alles 2025-06-16 23:36:06 +02:00
Armin Ronacher
83b46187a8 Detect expired sessions 2025-06-16 23:13:12 +02:00
Mario Zechner
ddb342bdec Fix the stupid terminal scaling calculations, we properly measure glyph width/height and apply linear scaling plus conservative row clamping. Good enough. Scroll could be reset to bottom after fit, but might also kill user scroll position so shrug. 2025-06-16 22:56:21 +02:00
Armin Ronacher
afa48c67d5 Change default term 2025-06-16 22:53:10 +02:00
Armin Ronacher
4cbbf2e457 Fixed header size reporting 2025-06-16 22:49:17 +02:00
Armin Ronacher
535887061a Refactor header writing 2025-06-16 22:26:26 +02:00
Armin Ronacher
f12d8c7463 Cleanup 2025-06-16 21:58:31 +02:00
Peter Steinberger
38c5b2dc5f Add menu icons and improve UI polish
- Add separator before About VibeTunnel menu item
- Update README to use new banner image
- Add high-resolution app icons and banner assets
- Improve menu bar icon visibility
2025-06-16 21:49:21 +02:00
Armin Ronacher
1423902539 Small refactoring to make clippy happy 2025-06-16 21:47:49 +02:00
Armin Ronacher
71f49142ea Show waiting status 2025-06-16 21:39:37 +02:00
Peter Steinberger
7bcdcc37ac Swift 6 fixes 2025-06-16 20:57:18 +02:00
Peter Steinberger
0f84d1f08a fix bundle id 2025-06-16 20:56:23 +02:00
Peter Steinberger
fba3e95e6b cleanup 2025-06-16 20:56:23 +02:00
Peter Steinberger
57e2d457be Escape pw for shell 2025-06-16 20:56:23 +02:00
Peter Steinberger
4873f6c3b0 rename keys 2025-06-16 20:56:23 +02:00
Peter Steinberger
573a3e0eb4 Support health 2025-06-16 20:56:23 +02:00
Peter Steinberger
1eedbd9ff5 rename ids 2025-06-16 20:56:23 +02:00
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