Commit graph

442 commits

Author SHA1 Message Date
Peter Steinberger
0534f4b238 Change default server port from 8080 to 4020 and improve UI
- 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
2025-06-16 02:33:54 +02:00
Peter Steinberger
be56723fbe mac 2025-06-16 02:23:04 +02:00
Armin Ronacher
c6a6f67872 Added universal binary build for tty-fwd 2025-06-16 02:04:43 +02:00
Peter Steinberger
99b77c9b53 feat: implement working HTTP server with debug panel
- 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
2025-06-16 02:00:56 +02:00
Peter Steinberger
8d80935bdb Reduce settings window width to 400 points 2025-06-16 01:45:45 +02:00
Peter Steinberger
63510c5d2d Fix build errors by creating stub implementations and removing unavailable dependencies
- 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
2025-06-16 01:41:51 +02:00
Peter Steinberger
8a83d7c2c9 Refactor tunnel client architecture and improve server communication 2025-06-16 01:41:21 +02:00
Armin Ronacher
8bcc669ccc Claude cleans up after itself 2025-06-16 01:38:48 +02:00
Peter Steinberger
fe6f6a1299 Fix remaining build errors
- Remove HTTPTypesFoundation import from TunnelClient2.swift
- Replace APIKeyManager usage with hardcoded demo key in TunnelServerDemo
- Add WSMessage and WSMessageType definitions to TunnelClient.swift
- Remove TunnelClient2.swift to avoid duplicate TunnelClientError definitions
2025-06-16 01:29:24 +02:00
Armin Ronacher
b52ebafb69 Update readme 2025-06-16 01:25:37 +02:00
Armin Ronacher
ba17b2d739 Pick better vibetunnnel control path 2025-06-16 01:14:52 +02:00
Peter Steinberger
62a7394cd0 Fix missing project resources and dependencies
- Add VibeTunnel.entitlements with app sandbox and network permissions
- Create missing menubar@3x.png asset (48x48)
- Note: Package.swift dependency updates reverted by linter
2025-06-16 00:51:02 +02:00
Peter Steinberger
c5a7bcc13f Fix build issues after dependency updates
- 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.
2025-06-16 00:49:38 +02:00
Peter Steinberger
e62543330f Update dependencies to latest versions
- 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.
2025-06-16 00:33:52 +02:00
Mario Zechner
6830517221 Add complete web frontend for terminal multiplexer
- 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>
2025-06-16 00:29:33 +02:00
Armin Ronacher
0032b3c7af Port to jiff 2025-06-16 00:28:29 +02:00
Peter Steinberger
6d8876e2ad Merge remote main after mac-v1 integration 2025-06-16 00:18:21 +02:00
Peter Steinberger
19497cb207 Fix formatting and linting issues
- Add missing newlines at end of files
- Update .swiftlint.yml configuration
- Minor code formatting adjustments
2025-06-16 00:15:12 +02:00
Peter Steinberger
bb65002c64 Merge branch 'origin/mac-v1' into main
- 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
2025-06-16 00:14:31 +02:00
Peter Steinberger
7ea32cfff0 Merge branch 'mac-v1' into main
- 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
2025-06-16 00:13:20 +02:00
Armin Ronacher
6b8bf43444 Read initial terminal size for reporting in the header 2025-06-16 00:12:16 +02:00
Armin Ronacher
488585c2a1 Force stream out path to be absolute 2025-06-15 23:59:40 +02:00
Armin Ronacher
3bf7ce2c25 Add timestamps to session info 2025-06-15 23:55:15 +02:00
Peter Steinberger
702b623d7f Fix settings window not appearing from menu bar
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.
2025-06-15 23:54:17 +02:00
Peter Steinberger
b80c710c08 Add SwiftLint and SwiftFormat configuration for Swift 6
- Configure SwiftLint with Swift 6 compatible rules
- Disable conflicting self-related rules (implicit_self, redundant_self)
- Set up SwiftFormat to avoid self-rewrite conflicts
- Add custom rules for print statements and async/await patterns
- Create lint script and GitHub Actions workflow
- Add Package.swift for SPM dependencies
- Ensure proper exclusions for build directories and tests
2025-06-15 23:48:30 +02:00
Peter Steinberger
b5644d2b17
Add macOS app foundation with release infrastructure (#1) 2025-06-15 23:14:29 +02:00
Armin Ronacher
a47c522967 Added cleanup command 2025-06-15 23:14:07 +02:00
Armin Ronacher
7faab347d8 Remote control helpers 2025-06-15 22:49:49 +02:00
Peter Steinberger
ea35d815c6 Update Hummingbird implementation to v2 API
- 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
2025-06-15 22:36:44 +02:00
Peter Steinberger
01f3666d1f Configure for macOS 14+ and use custom menubar icon
- 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
2025-06-15 22:35:26 +02:00
Peter Steinberger
9c4454b454 Convert to menu bar only app
- 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
2025-06-15 22:33:58 +02:00
Armin Ronacher
20b2b5b855 Kill unused code from tty-spawn 2025-06-15 22:33:20 +02:00
Peter Steinberger
79addfc861 Add basic HTTP server with web interface
- Implement TunnelServer using Hummingbird framework
- Serve HTML page at root with styled interface
- Add API endpoints: /health, /info, /tunnel/command
- WebSocket support at /tunnel/stream
- Add server controls in Advanced settings tab
- Show server status with start/stop functionality
- Display 'Open in Browser' link when server is running
- Port configuration (requires server restart)
2025-06-15 22:23:54 +02:00
Armin Ronacher
c3f5744494 Update session status 2025-06-15 22:17:38 +02:00
Peter Steinberger
3d421cb7ec Fix build errors: Add Sparkle conditional compilation and remove TunnelServer
- Wrap SparkleUpdaterManager with #if canImport(Sparkle) to handle missing framework
- Provide stub implementation when Sparkle is not available
- Remove TunnelServer.swift that used unavailable Hummingbird dependency
- Fix AppDelegate to use public checkForUpdates() method
2025-06-15 22:06:01 +02:00
Armin Ronacher
2801bc870d Added basic session listing command 2025-06-15 22:04:54 +02:00
Peter Steinberger
888f5693c4 Add macOS app foundation with release infrastructure
## 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
2025-06-15 21:59:09 +02:00
Armin Ronacher
a0a35c2641 Also capture resize events 2025-06-15 21:47:11 +02:00
Armin Ronacher
506465ce04 Make the tty-fwd tool output asciinema streams 2025-06-15 21:44:19 +02:00
Armin Ronacher
397b5803ac Add the protocol definitions from asciinema 2025-06-15 21:34:32 +02:00
Armin Ronacher
e439e1dba9 Initial changes for tty forwarding 2025-06-15 21:30:57 +02:00
Peter Steinberger
65b6d0ca8f
Initial commit 2025-06-15 19:56:11 +02:00