- Add all JavaScript build outputs to .gitignore
- Remove compiled files from git tracking
- Keep source files in TypeScript only
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update asciinema player CSS to use proper aspect ratios
- Fix file browser z-index and layout issues
- Remove old unused app.ts and server.ts files
- Keep working app-new components structure
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove old app-new entry points and components
- Remove duplicate/experimental files
- Keep only active session-list and file-browser components
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper card layout with compact header and footer
- Auto-load asciinema players for all sessions
- Change aspect ratio to 640/480 for better terminal display
- Fix z-index issues with file browser overlays
- Center and fit players within card bounds
- Change kill button from 'x' to 'kill' with loading state
- Remove session list header and borders for more space
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove automatic port validation - just use port 4020 as default
if not set in UserDefaults, otherwise use the configured port.
Also removed debug logging added in previous commits.
- Integrate tty-fwd universal binary build into build.sh
- Automatically build and copy tty-fwd-universal to Resources folder
- Ensure binary is executable and included in app bundle
- Update release process to build universal binary for Intel and Apple Silicon
Added automatic port validation to prevent using privileged ports (< 1024).
When a port below 1024 is detected in UserDefaults, the app now:
- Warns the user that the port requires root privileges
- Automatically changes to port 4020
- Updates UserDefaults with the corrected port value
This prevents the "Permission denied (errno: 13)" error when trying to
bind to ports that require root access on macOS.
Also keeps the debug logging from previous commit to help diagnose
any remaining port-related issues.
Added debug logging to track the server port value throughout initialization
to understand why error logs show port 800 when the code uses port 4020.
This will help diagnose the permission denied error.
The serverPort was being stored as a String in SettingsView but read as an
integer in VibeTunnelApp, causing it to default to 0 and then 800. Fixed by
reading it as a String and converting to Int with proper fallback to 4020.
- Change default server port from 800 to 4020 to avoid privileged port restrictions
- Rename TunnelServerDemo.swift to TunnelServer.swift for clarity
- Remove redundant TunnelServerExample.swift
- Update tty-fwd binary
- Add SettingsWindowDelegate for improved window management
- Update UI components and session monitoring
- Add modern Swift refactoring documentation
The server was failing to start because it was trying to bind to port 800,
which requires root privileges on macOS. Port 4020 is now used as the default.
- Replace backtick syntax for hyphenated property names with CodingKeys enum
- Change `stream-out` to streamOut with proper CodingKeys mapping
- Ensures compatibility with older Swift versions that don't support backtick property names
- Change default server port from 8080 to 4020 across all components
- Move server port field to the right in Advanced Settings
- Shorten "Show in Dock" description text for better UI layout
- Update all hardcoded port references in TunnelServerDemo, SessionMonitor, and VibeTunnelApp
- Replace stub TunnelServerDemo with full Hummingbird HTTP server
- Add comprehensive debug settings view with server info and controls
- Implement API endpoint listing with interactive testing
- Add TTYForwardManager for tty-fwd integration
- Auto-start HTTP server on app launch on port 8080
- Show server status, port, and base URL in debug panel
- Add test buttons for GET endpoints with live response preview
- Include debug mode toggle and log level selector
- Add quick access to Console.app and Application Support
- Update bundle identifier to sh.vibetunnel.vibetunnel
- Add code signing configuration templates
- Created VibeTunnel.entitlements with necessary permissions
- Added missing menubar@3x.png and menubar.png assets
- Created TunnelServerDemo as ObservableObject stub for SettingsView
- Moved server-side Hummingbird-dependent files to separate directory
- Created SparkleUpdaterManager stub implementation
- Fixed WSMessage type definitions in TunnelClient
- Commented out HTTPTypesFoundation import in TunnelClient2
- Updated references from TunnelServer to TunnelServerDemo
- Add UserDefaults extension for KVO-compatible updateChannel property
- Fix HTTPField.Name API changes in AuthenticationMiddleware
- Add @preconcurrency annotations to SparkleUpdaterManager protocols
- Wrap KVO observer callback in Task { @MainActor } to fix concurrency warning
- Update deinit to avoid accessing MainActor-isolated properties
These changes address Swift 6 concurrency strictness and API changes
introduced in Hummingbird 2.14.1.
- SwiftLint: 0.57.0 → 0.59.1
- SwiftFormat: 0.55.0 → 0.56.4
- Hummingbird: 2.8.0 → 2.14.1
- Sparkle: 2.7.8 → 2.7.0 (2.7.8 doesn't exist as a tag)
Note: Build currently fails due to Swift 6 concurrency strictness
and missing UserDefaults extension that need to be addressed.
- Implement TypeScript/Express server with tty-fwd integration
- Add real-time terminal streaming via Server-Sent Events using tail -f
- Create asciinema player integration with dynamic resize support
- Implement global keyboard capture for full terminal interaction
- Add session management (create, list, kill) with proper cleanup
- Support instant playback of existing content + real-time new content
- Include directory browser for working directory selection
- Add hot reload development workflow with concurrent build processes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Integrated Sparkle updater with update channels
- Resolved conflicts to use ResponseCodable protocol instead of ResponseGenerator
- Updated to new Hummingbird 2.x APIs
- Kept enhanced Settings window with General, Advanced, and About tabs
- Maintained authentication middleware and terminal management
- Fixed settings window to use NSApp.openSettings()
- Removed .DS_Store files from version control
- Integrated mac-v1 features including:
- Sparkle updater integration with update channels
- Menu bar app functionality
- Settings window with General, Advanced, and About tabs
- Authentication middleware for API security
- Terminal and WebSocket handling
- Launch at login functionality
- Enhanced UI with custom view modifiers and About view
- Updated to use Hummingbird 2.x with ResponseCodable protocol
- Removed .DS_Store files
- Resolved all merge conflicts
Replace deprecated showSettingsWindow: selector with NSApp.openSettings() to properly show the Settings window when clicking "Settings..." in the menu bar. This aligns with the correct SwiftUI pattern used in VibeMeter.
- Update TunnelServer to use Hummingbird v2 Router API
- Use RouterBuilder for middleware and route configuration
- Update Application initialization with generic Router type
- Replace LifecycleTask with Service for cleanup tasks
- Update WebSocketHandler with proper v2 extension methods
- Fix all compilation issues with latest Hummingbird
- Update deployment target to macOS 14.0 (from 15.5)
- Use custom 'menubar' icon from assets catalog instead of SF Symbol
- Set icon as template for proper menu bar appearance
- Update settings window frame for better sizing on macOS 14
- Reorganize menubar assets to use imageset format
- Remove ContentView window - app now launches with settings dialog only
- Add status bar item (menu bar icon) with network shield symbol
- Configure as LSUIElement (background app) by default
- Menu bar menu includes Settings, About, and Quit options
- Auto-show settings on first launch when in menu bar mode
- Maintain Show in Dock toggle for users who prefer dock visibility