- 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>
- 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
- 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
- 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
- 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.
- 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
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.
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.
- 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