Commit graph

82 commits

Author SHA1 Message Date
Mario Zechner
79509ea251 Simplify UI with clean header and button styling
- Replace complex ASCII header with simple "VibeTunnel" text
- Remove ASCII brackets from buttons: CREATE, CLEAN, CLEAN EXITED, kill
- Add border to header for visual separation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 05:11:09 +02:00
Armin Ronacher
2bc2c2f3c7 Kill leftover prototype 2025-06-16 05:05:42 +02:00
Mario Zechner
179d0db754 Clean up file naming by removing -new suffixes
- Renamed server-new.ts → server.ts
- Renamed app-new.ts → app.ts
- Renamed app-new-entry.ts → app-entry.ts
- Updated package.json scripts to remove all -new references
- Updated custom element name from vibetunnel-app-new to vibetunnel-app
- Updated index.html to reference cleaned up files
- Added CLAUDE.md with development notes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:55:18 +02:00
Armin Ronacher
19b428a879 Remove unused stuff 2025-06-16 04:52:30 +02:00
Armin Ronacher
482f48052c Hook up cleanup 2025-06-16 04:48:20 +02:00
Peter Steinberger
eb12804a0b Remove Tunnel2 2025-06-16 04:42:22 +02:00
Peter Steinberger
ac4a0df33b Add new icon 2025-06-16 04:42:13 +02:00
Mario Zechner
2eeb996be4 Improve create button styling when disabled
- Added disabled:opacity-50 to make button appear grayed out when disabled
- Added disabled:cursor-not-allowed for better UX when button is disabled
- Added disabled:hover:bg-vs-user to prevent hover effects on disabled button
- Button is disabled when command field is empty or only whitespace

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:39:06 +02:00
Armin Ronacher
ce85d70ba6 Changed the path to the control 2025-06-16 04:36:44 +02:00
Mario Zechner
12a9659de1 Optimize cleanup functionality using tty-fwd bulk cleanup
- Discovered that tty-fwd --cleanup (without session ID) cleans all exited sessions
- Added new /api/cleanup-exited endpoint that uses bulk cleanup command
- Updated client to use single API call instead of multiple individual deletions
- Improved performance and reliability for cleaning multiple exited sessions
- Simplified error handling with single bulk operation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:33:46 +02:00
Mario Zechner
6e22984ee8 Add Clean Exited button and improve button row styling
- Added handleCleanExited method to delete all exited sessions in batch
- Added cleaningExited state to track cleaning progress
- Added Clean Exited button with proper styling and disabled state
- Improved button row layout with grouped buttons on left and checkbox on right
- Added transition-colors for smooth hover effects
- Button automatically disables when no exited sessions exist

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:31:01 +02:00
Armin Ronacher
5ffc2dca8d Vibed up some stuff for the api 2025-06-16 04:25:46 +02:00
Mario Zechner
ab36c56836 Rebuild client components to make Create Session button visible
Updated compiled JavaScript files to include the latest TypeScript changes
for the Create Session button and modal functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:24:59 +02:00
Mario Zechner
a868752e40 Fix Create Session button visibility by removing duplicate form
Removed the duplicate session-create-form component from the main app since
the session list now manages its own modal. Added session-created event
handler to the session-list component.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:21:16 +02:00
Mario Zechner
77706ab1f5 Improve session card filtering and new session handling
- Add checkbox filter to hide exited sessions with custom styling
- Limit responsive grid to max 3 columns instead of 4
- Add smart delay for new session snapshots (3 seconds)
- Load existing session snapshots immediately
- Prevent asciinema player errors on new sessions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:14:10 +02:00
Armin Ronacher
8f2219f9f9 We apparently need to ignore some files 2025-06-16 04:09:08 +02:00
Armin Ronacher
d6f7d81155 Checked in ported tunnel server. No idea if it works 2025-06-16 04:09:08 +02:00
Mario Zechner
26d0624333 Add missing components.js to .gitignore
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:02:45 +02:00
Mario Zechner
48ce0c6b98 Remove all build artifacts from git tracking
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:02:27 +02:00
Mario Zechner
56edbebe4c Fix dev script to use server-new.ts
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 04:01:49 +02:00
Mario Zechner
3fdcd1b926 Revert "Clean up old unused files and components"
This reverts commit 0bee6f13aa.
2025-06-16 04:01:28 +02:00
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