- Include CreditLink component directly in AboutView.swift
- Fix Swift 6 concurrency issue with NSRunningApplication
- Remove Windows build from Rust workflow (tty-fwd is Unix-only)
- tty-fwd uses Unix-specific PTY features not available on Windows
- Create separate workflow files for each language
- Swift: macOS-15 runner with SwiftLint/SwiftFormat, build, and test
- Rust: Multi-platform build with rustfmt/clippy and coverage
- Node.js: TypeScript linting, build, test, and security audit
- Update main CI workflow to use the new language-specific workflows
- Remove old lint.yml workflow (integrated into language workflows)
- Apply code formatting to ensure CI passes
- 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
- 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
- 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
- Move SettingsView.swift to Presentation/Views/
- Move MenuBarView.swift to Presentation/Views/
- Remove redundant Sources folder
- Consolidate all views under Presentation/Views for consistency
- 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
- 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."
- 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
- 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.
## Summary
- Initial SwiftUI macOS app structure with menubar and settings
- Complete release automation scripts adapted from VibeMeter
- Sparkle framework integration for automatic updates (stable/pre-release channels)
- Launch at login functionality
- Single instance detection
- About window with version info and links
## Features Added
- Settings window with General and Advanced tabs
- Update channel switching (stable/pre-release)
- Launch at login toggle
- Debug mode and server port configuration
- Interactive About window with app info
- Single app instance enforcement
## Infrastructure
- Complete release automation (build, sign, notarize, DMG, GitHub release)
- Version 0.1 (build 100)
- Bundle ID: com.amantus.vibetunnel
- Domain: vibetunnel.sh
- GitHub: https://github.com/amantus-ai/vibetunnel
## Next Steps
- Add Sparkle framework dependency
- Generate EdDSA keys for update signing
- Set up appcast hosting on vibetunnel.sh