Commit graph

61 commits

Author SHA1 Message Date
Mario Zechner
99bd45271c Add build artifacts to .gitignore and remove from tracking
- 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>
2025-06-16 04:01:10 +02:00
Mario Zechner
7f63c9e168 Fix session card UI and file browser issues
- 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>
2025-06-16 03:59:39 +02:00
Mario Zechner
0bee6f13aa Clean up old unused files and components
- 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>
2025-06-16 03:50:22 +02:00
Mario Zechner
920b040b61 Improve session card UI with asciinema players
- 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>
2025-06-16 03:49:42 +02:00
Armin Ronacher
fdd6c33289 Add a way to kill a process 2025-06-16 03:49:28 +02:00
Peter Steinberger
a6fb6ca6c0 Remove static tty-fwd binary from Resources
The tty-fwd binary is now built dynamically by the build script phase,
so we don't need the static copy in the Resources folder anymore.
2025-06-16 03:45:38 +02:00
Peter Steinberger
066d2882f9 Add window size animation for Settings and build script for tty-fwd
- Implement smooth window size animations when switching Settings tabs
- Add Xcode build phase to automatically build tty-fwd universal binary
- Configure build script with proper input/output dependencies for efficiency
- Fix Settings window animation using NSViewAnimation API
- Update project configuration for optimized builds
2025-06-16 03:45:06 +02:00
Mario Zechner
2324be0706 Web WIP 2025-06-16 03:35:14 +02:00
Armin Ronacher
c4e5890aa8 Small refactor 2025-06-16 03:34:48 +02:00
Armin Ronacher
63d57d6ab9 Refactor session listing 2025-06-16 03:32:23 +02:00
Armin Ronacher
a4560e0bed Updated heuristics to fix some issues 2025-06-16 03:32:23 +02:00
Armin Ronacher
a9d75c2f04 Initial notification channel support 2025-06-16 03:32:23 +02:00
Peter Steinberger
1048e21083 Simplify server port configuration
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.
2025-06-16 03:24:54 +02:00
Peter Steinberger
7bffb2ae7b Add tty-fwd universal binary build step to release process
- 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
2025-06-16 03:19:17 +02:00
Peter Steinberger
e59fc9d835 Fix server port 800 permission denied error
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.
2025-06-16 03:05:39 +02:00
Peter Steinberger
f022d71778 Add debug logging to diagnose port 800 issue
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.
2025-06-16 03:03:11 +02:00
Peter Steinberger
ef112c82b5 Fix serverPort UserDefaults type mismatch
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.
2025-06-16 02:43:10 +02:00
Peter Steinberger
ed19be138b Fix server port binding issue and refactor tunnel services
- 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.
2025-06-16 02:39:19 +02:00
Peter Steinberger
223fa898b1 Fix Swift compatibility for older versions
- 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
2025-06-16 02:36:17 +02:00
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