Commit graph

1412 commits

Author SHA1 Message Date
Peter Steinberger
c2f0b79cec Fix logs API test by including lastModified in all responses
- Add lastModified: null when log file doesn't exist
- Ensures consistent API response structure
2025-07-02 00:00:53 +01:00
Peter Steinberger
a6488b5ad9 Improve session display and button state management
- Fix menu bar button highlighting using state instead of highlight()
- Extract process name from command path for cleaner display
- Show session name next to command with dash separator
- Fix corner radius on new session dialog
- Make Create button darker green for better visibility
- Update editing to properly handle session names
2025-07-02 00:00:53 +01:00
Peter Steinberger
f60bd2d5a0 Implement side-rounded menu borders for macOS menu bar
- Create custom SideRoundedRectangle shape with flat top/bottom borders
- Apply custom shape to both SwiftUI background and NSWindow mask layer
- Update CustomMenuContainer to use the new shape for consistent styling
- Maintain rounded corners only on left and right sides as requested

This gives the menu bar dropdown a more integrated appearance with the
menu bar while keeping the modern rounded aesthetic on the sides.
2025-07-02 00:00:53 +01:00
Luis Nell
f1f99be514 Add Apple Silicon Homebrew path check for VT tool
Updates CLIInstaller to check for the VT command-line tool in both:
- /usr/local/bin/vt (default/Intel Macs)
- /opt/homebrew/bin/vt (Apple Silicon Homebrew)

This ensures users who have installed VT via Homebrew on M1/M2 Macs
will see it as already installed in the welcome flow.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 23:42:51 +01:00
Billy Irwin
852078d024
fix: simplify Tailscale integration using local API (#184) 2025-07-01 23:36:59 +01:00
Armin Ronacher
cf51218d7e
Fix alignment of kill all button (#181) 2025-07-01 21:51:18 +02:00
Peter Steinberger
49a263d406
Mac menu bar UI improvements and Tailscale fixes (#180) 2025-07-01 18:53:46 +01:00
Peter Steinberger
fcda54a5f9
Enhance VibeTunnel web interface with modern visual design (#177) 2025-07-01 17:57:57 +01:00
Peter Steinberger
b452251a47
Improve Mac menu bar UI with better form styling and animations (#179) 2025-07-01 17:46:46 +01:00
Billy Irwin
cef2e6bf03
Add more debug logs for Tailscale integration (#178) 2025-07-01 09:13:55 -07:00
Peter Steinberger
a09563ec62 Enhance VibeTunnel web interface with modern visual design
- Implement modern color scheme with cyan/teal primary colors
- Redesign sidebar with card-based sessions and enhanced status indicators
- Create unified header design with gradient backgrounds
- Add JetBrains Mono font and improve typography throughout
- Implement smooth micro-interactions and animations
- Enhance terminal area with better focus states and loading overlays
- Update all buttons and inputs with consistent hover/focus effects
2025-07-01 15:17:50 +01:00
David
9e862f96d5
fix: iOS authentication flow and ConnectionManager architecture improvements (#169)
Co-authored-by: David Collado <davidcollado@MacBook-Pro-de-David.local>
2025-07-01 14:57:38 +01:00
Peter Steinberger
a7d5648c78
feat: Powerful Mac menu bar with rich view and session tracking (#176) 2025-07-01 14:54:30 +01:00
Peter Steinberger
acf91e228d
Add sidebar toggle button with collapse/expand functionality (#175) 2025-07-01 14:52:56 +01:00
Peter Steinberger
cf7ada95e3 fix: Remove incorrect stdin cleanup code
- Remove stdin handler cleanup that was contradicting the comment
- Remove unused stdinHandler and stdinDataListener from PtySession interface
- Stdin is handled via IPC socket, not process.stdin listeners
2025-07-01 13:41:09 +01:00
Peter Steinberger
31d7faec7f refactor: Improve PTY manager resource cleanup and performance
- Add stdin cleanup handlers for process.stdin listeners
- Implement event listener tracking to prevent memory leaks
- Add lazy watcher initialization for session.json monitoring
- Add explicit isExternalTerminal flag for better terminal detection
- Optimize activity file writing to only write on state changes
- Track last written activity state to avoid unnecessary disk I/O
2025-07-01 13:41:09 +01:00
Peter Steinberger
8134ea3a58 ci: Migrate all GitHub Actions runners to ARM architecture
Update all workflow files to use blacksmith-8vcpu-ubuntu-2404-arm instead of
blacksmith-8vcpu-ubuntu-2204 for consistency and improved performance.
2025-07-01 13:41:09 +01:00
Peter Steinberger
dd4e06f249 fix: Improve timer management and error handling in PTY manager
- Fix timer management in setupSessionJsonWatcher to properly assign timer before setTimeout
- Improve IPC socket error handling to throw error instead of silently returning
- Socket path length validation now fails fast with clear error message
2025-07-01 13:41:09 +01:00
Peter Steinberger
6e18fa94e9 fix: Remove debug print and fix PID display for nil values
- Remove debug print statement from MenuBarView
- Fix SessionDetailView to display 'N/A' instead of '0' for nil PIDs
- Prevents confusion with actual PID 0 system process
2025-07-01 13:41:09 +01:00
Peter Steinberger
6c33e16565 feat: Add activity status display to menu bar session entries
- Display activity status (e.g., 'Browsing', 'Considering') below each session
- Show status inline with working directory path, separated by dot
- Match visual style from web frontend with orange status text
- Add compact path display with ~ for home directory
2025-07-01 13:41:09 +01:00
Peter Steinberger
4e5f100074 fix: Remove orphaned test files for non-existent modules
- Delete safe-pty-writer.test.ts and stream-analyzer.test.ts
- These tests were importing modules that no longer exist
- Fixes CI test failures
2025-07-01 13:41:09 +01:00
Peter Steinberger
005a65c399 test: Improve test stability and reduce flakiness
- Remove unused imports to clean up test files
- Use shorter session IDs to avoid path length issues
- Adjust timing in tests for better reliability
- Improve test descriptions and assertions
2025-07-01 13:41:09 +01:00
Peter Steinberger
dfe846cfce feat: Enhance macOS app session monitoring and UI
- Add debug logging for session fetching and status
- Display 'No sessions' text when session list is empty
- Add initial delay for auth token setup on app start
- Improve user feedback in menu bar interface
2025-07-01 13:41:09 +01:00
Peter Steinberger
3b99312fdb fix: Improve heartbeat handling and session.json debounce cleanup
- Echo heartbeat messages back to clients for better connection monitoring
- Properly clear debounce timer references to prevent memory leaks
- Pass client socket to message handler for proper heartbeat responses
2025-07-01 13:41:09 +01:00
Peter Steinberger
646b478075 fix: Add security validation and sanitization for session titles
- Validate session ID format to prevent injection attacks
- Sanitize title input: limit to 256 chars, filter control characters
- Prevent potential security issues with malformed session titles
2025-07-01 13:41:09 +01:00
Peter Steinberger
98795cbb71 feat: Add file browser button to sidebar for UI consistency
- Placed file browser button between notification and create session buttons
- Matches the layout of the full header for better consistency
- Maintains same styling and functionality as main page
2025-07-01 13:41:09 +01:00
Peter Steinberger
92aac0ccfc fix: Integrate SafePTYWriter and fix stdin/IPC socket bugs
- Integrated SafePTYWriter and PTYStreamAnalyzer from PR #171 to prevent terminal corruption
- Fixed stdin listener duplication bug - stdin is now handled via IPC socket only
- Fixed IPC socket handler to properly handle both stdin data and control commands using framed message protocol
- Updated socket paths from 'i.sock' to unified 'ipc.sock'
- Added comprehensive tests for SafePTYWriter and PTYStreamAnalyzer
- Removed global process.stdin listeners to prevent duplication across sessions
2025-07-01 13:41:09 +01:00
Peter Steinberger
740aec5ae6 fix: Stabilize flaky e2e tests with sequential execution and health checks 2025-07-01 13:41:09 +01:00
Peter Steinberger
4699764db4 fix: Remove control pipe code and align with socket-based IPC from main
- Remove controlPipePath and controlWatcher from types
- Remove setupControlPipe method entirely
- Update sendControlMessage to use socket-based IPC
- Remove control pipe cleanup code
- Keep stdin forwarding memory leak fix

The control pipe system was replaced by socket-based IPC in main.
This commit removes the old control pipe code that was accidentally
reintroduced during the rebase.
2025-07-01 13:41:09 +01:00
Peter Steinberger
c5c89fc60f fix: Resolve memory leak in stdin forwarding and TypeScript errors
- Fix memory leak where stdin listeners were never removed
- Store stdin listener reference for proper cleanup
- Add missing controlPipePath property to session types
- Update session manager to include controlPipePath in paths
- Each session now properly tracks and cleans up its stdin listener

This fixes both the CI failures and the reported bug where input
was duplicated across all forwardToStdout sessions.
2025-07-01 13:41:09 +01:00
Peter Steinberger
b515d70de7 fix: Properly track session.json debounce timer for cleanup
- Update session.sessionJsonDebounceTimer when creating new timers
- Clear timer reference after callback execution
- Remove incorrect initial null assignment
- Fixes memory leak where timers continued after session cleanup

The bug occurred because the timer ID was only stored in a local variable,
preventing proper cleanup during session termination.
2025-07-01 13:41:09 +01:00
Peter Steinberger
bb272ce821 refactor: Simplify vt title implementation using fwd --update-title
- Add --update-title flag to fwd.ts for cleaner session title updates
- Replace complex bash/jq/python/sed logic with single fwd.ts call
- Leverage existing SessionManager for type-safe JSON handling
- Improve error handling and messaging
- Reorganize vt script to locate app path before processing commands

This eliminates the fragile bash JSON manipulation in favor of a
robust TypeScript implementation that reuses existing infrastructure.
2025-07-01 13:41:09 +01:00
Peter Steinberger
f6d529a1ab fix: Add error handling verification to vt title command
- Add proper error checking after session.json update
- Return appropriate exit codes on success/failure
- Improve error messaging for better debugging
2025-07-01 13:41:09 +01:00
Peter Steinberger
3fb5b463e8 fix: Security and reliability improvements for vt title
- Fix command injection vulnerability by using jq --arg for safe parameter passing
- Add Python fallback for systems without jq for safe JSON manipulation
- Improve sed fallback with proper escaping (last resort)
- Add debouncing (100ms) to file watcher to prevent rapid updates
- Add error handling for file watcher failures
- Clean up debounce timer on session cleanup
- Fix issue where lastSessionName wasn't properly tracked

Security fix prevents arbitrary command execution through malicious title strings.
Debouncing prevents performance issues from rapid file changes.
2025-07-01 13:41:09 +01:00
Peter Steinberger
a2d80f1fa3 test: Add comprehensive tests for vt title functionality
- Add error handling for 'vt title' when used outside a session
- Create unit tests for session.json watcher in PtyManager
- Add integration tests for vt title command with edge cases
- Test all 4 title modes (none, filter, static, dynamic)
- Test special characters, concurrent updates, and error scenarios
- Ensure proper cleanup of file watchers on session exit
2025-07-01 13:41:09 +01:00
Peter Steinberger
122253f947 feat: Add vt title command for dynamic session naming
- Add 'vt title' command that updates session names from within terminal sessions
- Implement file watcher in PtyManager to detect session.json changes
- Integrate title updates with all 4 title modes (none, filter, static, dynamic)
- Updates terminal titles in real-time when session name changes
- Works by directly editing session.json using the VIBETUNNEL_SESSION_ID env var

This allows users to easily set descriptive names for their terminal sessions,
making it easier to manage multiple VibeTunnel windows.
2025-07-01 13:41:09 +01:00
Jeff Hurray
66998b0672 use pnpm in chained commands 2025-07-01 12:19:13 +01:00
Jeff Hurray
f16536a823 Add precommit command for web app 2025-07-01 12:19:13 +01:00
Jeff Hurray
7662822e10 docs: Update CLAUDE.md with external device testing workflow
Added instructions for Claude Code to use when helping with external
device testing issues. References the new testing guide for detailed
instructions.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 12:18:12 +01:00
Jeff Hurray
9d0f29cf0c docs: Create comprehensive external device testing guide
Added detailed documentation for testing VibeTunnel on external devices,
including setup instructions, troubleshooting, security considerations,
and best practices for cross-device development.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 12:18:12 +01:00
Jeff Hurray
d92a96e3bf docs: Add external device testing instructions to README
Added a new section explaining how to test VibeTunnel development changes
on external devices like iPads and iPhones. Includes both quick dev server
setup and alternative production build method.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 12:18:12 +01:00
Peter Steinberger
6196c55ded
Display Claude status in Mac menubar (#160) 2025-07-01 11:21:28 +01:00
Peter Steinberger
3b3ded548b
Add Special Thanks section to About screen (#168) 2025-07-01 08:39:33 +01:00
Peter Steinberger
6c73decf84
feat: support multiple file uploads via drag & drop and paste (#166) 2025-07-01 07:07:33 +01:00
Jeff Hurray
28913cd490
Fix port argument passthrough for web dev (#163) 2025-07-01 06:50:20 +01:00
Helmut Januschka
8d85c26a84
feat: Add image upload functionality with camera/gallery picker (#140)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2025-07-01 06:47:08 +01:00
devin-ai-integration[bot]
1d9112b9d3
Add SwiftLint and SwiftFormat Husky pre-commit hooks for iOS and mac (#165)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2025-07-01 06:24:59 +01:00
Igor Tarasenko
68ce36828a
fix: correct CLI installation verification after title mode args update (#153)
* fix: correct CLI installation verification after title mode args update (#153)

• Verify CLI install by matching `exec "$VIBETUNNEL_BIN" fwd` (ignores extra args) — resolves #152  
• Allow custom install dir (default `/usr/local/bin`); `vtTargetPath` now dynamic  
• Added regression + flaky-test fix
2025-07-01 07:09:43 +02:00
Peter Steinberger
4bdb21da41
chore: bump version to 1.0.0-beta.6 build 152 (#161)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2025-07-01 05:54:43 +01:00
Peter Steinberger
31a48e7a65
Remove SEA Build Test CI workflow (#164) 2025-07-01 05:18:54 +01:00