Commit graph

33 commits

Author SHA1 Message Date
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