Commit graph

166 commits

Author SHA1 Message Date
Peter Steinberger
19f80eaf5c
Fix screencap authentication (fixes #264) (#374) 2025-07-16 23:15:45 +02:00
Peter Steinberger
253d0ae3e7
Fix npm package build and installation issues (#360)
Co-authored-by: Alex Mazanov <alexandr.mazanov@gmail.com>
2025-07-16 23:05:26 +02:00
Peter Steinberger
2f3a4217d0
Fix control message loop and simplify welcome screen repository display (#372) 2025-07-16 09:30:56 +02:00
Peter Steinberger
d40a78b4f2
Synchronize repository base path from Mac app to web UI (#358) 2025-07-16 03:09:19 +02:00
Peter Steinberger
32d92e306a
feat: add verbosity control to vt command (#356) 2025-07-15 22:43:38 +02:00
Peter Steinberger
de2f5bcf59
Only show spawn window toggle when Mac app is connected (#357) 2025-07-15 22:41:51 +02:00
Luke
2b8db854d9
fix: prevent duplicating sessions (#345)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2025-07-15 03:50:51 +02:00
Peter Steinberger
192fd7e941
Improve asciicast clear offset caching (#333)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-15 03:24:15 +02:00
Marek Šuppa
e8191181c9
feat(web): Add repository discovery to web client (#301)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2025-07-15 03:23:28 +02:00
Peter Steinberger
29f938dcc1
Terminal theme improvements (#332)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-12 22:11:30 +02:00
Peter Steinberger
93ba0064bd feat: add compression, security headers, and caching optimizations
Implement several performance and security improvements for Express 5:

Performance:
- Add compression middleware with Brotli support for all responses
- Enable WebSocket compression (perMessageDeflate) for terminal data
- Exclude compression for SSE streams (/api/sessions/:id/stream) to prevent asciicast issues
- Add intelligent caching headers for static assets:
  - Immutable assets (JS, CSS, fonts, images): 1 year cache
  - HTML files: 1 hour cache
  - Enable ETags and Last-Modified headers

Security:
- Add Helmet middleware for security headers
- Disable CSP and COEP to maintain compatibility with terminal features

Additional improvements:
- Remove obsolete @ts-expect-error directives (Express 5 properly types res.flush)
- Balanced compression level (6) for optimal performance

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 19:42:54 +02:00
Peter Steinberger
cd2378c665 fix: add user ID for no-auth mode and improve TypeScript imports
Extract improvements from PR #318:

1. Set default user ID in no-auth mode for auth middleware
   - Ensures consistent behavior when authentication is disabled
   - Prevents potential issues with undefined user IDs

2. Convert to type-only imports in push notification service
   - Use TypeScript type imports for better tree shaking
   - Remove .js extensions from imports for consistency
   - Minor logging improvement for service worker registration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 19:21:29 +02:00
Peter Steinberger
b16035b9f8
Remove activity indicator to prevent title jumping (#309) 2025-07-11 08:22:54 +02:00
Peter Steinberger
dc0676b0a0 change server cleanup logic to only kill zombies 2025-07-08 22:05:01 +02:00
Peter Steinberger
e65843064c Remove unnecessary Fish shell expansion comment 2025-07-08 00:47:11 +01:00
Raghav Sethi
966c671755
feat: add fish shell expansion support (#228) (#242)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: raghav-latte <131696988+raghav-latte@users.noreply.github.com>
2025-07-08 00:44:31 +01:00
Peter Steinberger
85d9f3d17a
Unified control protocol and deferred screen recording permissions (#239) 2025-07-08 00:42:13 +01:00
Peter Steinberger
7e697d6774
Delete old sessions when VibeTunnel version changes (#254) 2025-07-07 00:05:26 +01:00
Peter Steinberger
9db8fd284b Fix shell configuration files not being loaded
- Ensure bash, zsh, and fish spawn as login shells to read config files
- Add -i and -l flags for bash/zsh, --interactive and --login for fish
- Avoid duplicate flags if already present
- Add user feedback when starting shells in login mode

Fixes #251
2025-07-06 23:30:41 +01:00
Peter Steinberger
7f7b4b682b
Fix terminal flow control to prevent xterm.js buffer overflow (#223) 2025-07-06 12:45:31 +01:00
Armin Ronacher
36337cfd7a Fix linter 2025-07-06 11:25:27 +01:00
Armin Ronacher
6fd74b6282 Move screencap out of /api to fix auth issues 2025-07-06 11:25:27 +01:00
Helmut Januschka
f3b2022d48
Integrate screencap functionality for remote screen sharing (#209)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2025-07-06 03:31:34 +01:00
Igor Tarasenko
9fad6301a0
feat: Add Bonjour/mDNS service discovery for iOS app (#226)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2025-07-05 11:34:36 +01:00
Peter Steinberger
0c67a89622 feat: expand Playwright test coverage with comprehensive test suite
- Add 50+ new Playwright tests covering key features
- Implement test helpers for session management and data cleanup
- Add page objects for better test maintainability
- Improve test stability with better selectors and wait strategies
- Fix flaky tests with proper timing and synchronization
- Add comprehensive coverage for:
  - Session creation and management
  - Terminal interactions
  - File browser operations
  - Keyboard shortcuts
  - Authentication flows
  - Activity monitoring
  - Search functionality
  - UI responsiveness
- Update test infrastructure for better CI/CD integration
- Fix linting issues and improve code quality

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-04 05:08:34 +01:00
Peter Steinberger
ba372b09de
feat(tauri): Implement full feature parity with Mac app (#213) 2025-07-04 04:52:00 +01:00
Peter Steinberger
d3d0ce9dde
Add magic wand button to inject prompts into Claude sessions (#210) 2025-07-03 23:57:30 +01:00
Peter Steinberger
14b7dc1992
feat: implement parallel test execution with improved stability (#205)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-03 16:40:03 +01:00
Peter Steinberger
45d8f97a30
Improve release scripts and add git app integration (#208) 2025-07-03 12:40:09 +01:00
Billy Irwin
b74de48ddd ```
fix: prevent file browser flashing and reduce log verbosity

- Split visibility and session change handling to avoid redundant directory loads
- Only reload directory when component becomes visible or session changes while visible
- Change directory browse success log from info to debug level to reduce noise
- Fixes issue where file browser would flash/reload unnecessarily on prop changes
```
2025-07-03 00:32:01 +01:00
Peter Steinberger
2a937eac4a
Make popover window sticky during new session creation (#194) 2025-07-02 16:49:34 +01:00
Peter Steinberger
ad05e0267d Fix title injection race conditions
- Add titleInjectionInProgress flag to prevent concurrent injections
- Update lastWriteTimestamp immediately before enqueueing to prevent quiet period violations
- Clear pendingTitleToInject only after successful write completion
- Compare titles before clearing to avoid losing newer updates
- Stop injection timer only when no pending titles remain
- Use try-finally to ensure in-progress flag is always cleared

This prevents both lost title updates and quiet period violations that could
occur when titles were cleared prematurely or timestamps updated too late.
2025-07-02 07:28:48 +01:00
Peter Steinberger
d112c5300f
Remove titleDebouncer and fix stdout write ordering issues (#190) 2025-07-02 07:06:55 +01:00
Mario Zechner
43ef2d962d Optimize TitleSequenceFilter by compiling regexes once as static properties 2025-07-02 05:12:43 +01:00
Mario Zechner
f322d746af Updated spec.md 2025-07-02 05:12:43 +01:00
Peter Steinberger
920d96207b Fix logger double initialization causing log file deletion
- Modified initLogger() to return early if already initialized
- Removed explicit false parameter in server.ts to preserve debug mode from CLI
- Fixes test failure where log file was being deleted after first write
2025-07-02 00:00:53 +01:00
Peter Steinberger
a8dd9af10a Reduce terminal title update frequency to once per second
- Change periodic activity update interval from 500ms to 1000ms
- Ensure all title updates go through debouncer (including session name changes)
- Prevents excessive terminal updates while maintaining responsiveness
2025-07-02 00:00:53 +01:00
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
b452251a47
Improve Mac menu bar UI with better form styling and animations (#179) 2025-07-01 17:46:46 +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
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
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
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
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
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