Commit graph

985 commits

Author SHA1 Message Date
Peter Steinberger
2b5060e75f feat(tauri): Major refactoring with enhanced features and managers
- Add comprehensive manager system for various features:
  - Notification manager for in-app notifications
  - Permission manager for system permissions
  - Update manager for app updates
  - Backend manager for server backend management
  - Debug features manager for debugging tools
  - API testing manager for API test suites
  - Auth cache manager for credential caching
  - Terminal integrations manager for terminal emulator support
  - Session monitor for tracking active sessions
  - Port conflict resolver for port management
  - Network utilities for network information
  - TTY forward manager for TTY forwarding
  - Cast manager for terminal recording
  - App mover for macOS app location management
  - Terminal spawn service for launching terminals
  - File system API for file operations

- Add settings UI pages (settings.html, server-console.html)
- Update tauri.conf.json with new configuration
- Enhance server implementation with better state management
- Add comprehensive command system for all managers
- Update dependencies in Cargo.toml
- Add welcome screen manager for onboarding
- Implement proper state management across all components
2025-06-23 04:07:16 +02:00
Peter Steinberger
18f724ae22 feat(tauri): Add Mac-like welcome screen with light/dark mode support
- Create welcome.html with 4-page onboarding flow
- Support system light/dark mode with appropriate color schemes
- Add smooth page transitions and keyboard navigation
- Include finish button that closes the welcome window
- Copy app icon to public folder for welcome screen
- Update tauri.conf.json to include public folder resources
2025-06-23 04:07:16 +02:00
Peter Steinberger
cd7f9c4cb9 feat: Add standalone Tauri app in /tauri folder
This commit adds the Tauri desktop app as a completely separate project
in the /tauri folder without modifying anything in the web project.

- Created /tauri folder with standalone Tauri system tray application
- Configured as menu bar/system tray app (matching Mac app architecture)
- Runs embedded HTTP server on port 4020
- Opens web dashboard in default browser
- No embedded web view or frontend code
- Minimal package.json with only Tauri CLI dependency

The web folder remains completely untouched, ensuring clean separation
between the web and desktop projects.
2025-06-23 04:07:16 +02:00
Peter Steinberger
2a0b08497c ios work 2025-06-23 04:07:15 +02:00
Peter Steinberger
b884986203 update favicon 2025-06-23 04:07:15 +02:00
Peter Steinberger
0a75e27948 Update PWA icon 2025-06-23 04:07:15 +02:00
Peter Steinberger
acf00c4042 iOS updates 2025-06-23 04:07:15 +02:00
noppe
e52c15085d
Enable scrolling in ConnectionView for narrow windows
Wraps the connection form in a ScrollView to improve usability on small screens, landscape orientation, and when accessibility text sizes are increased. The scroll bounce behavior is intelligently set based on content size.
2025-06-23 03:35:17 +02:00
Peter Steinberger
fce126cf5d use flex-grid for terminals 2025-06-23 03:22:01 +02:00
Peter Steinberger
8c07b60940 Further improve vt script resilience 2025-06-23 03:20:36 +02:00
Peter Steinberger
47d41693b4 improve custom node doc 2025-06-23 03:20:19 +02:00
Peter Steinberger
686860b088 improve CI commenter 2025-06-23 03:20:03 +02:00
Peter Steinberger
456143185a Filter index paths from derived data finder 2025-06-23 03:01:23 +02:00
Peter Steinberger
685562112b lint 2025-06-23 03:01:10 +02:00
Peter Steinberger
382fcedd91 re-enable custom node 2025-06-23 02:56:40 +02:00
Peter Steinberger
dd2ca4042f span all width 2025-06-23 02:56:01 +02:00
Peter Steinberger
40899a3612 properly apply black hole effect 2025-06-23 02:55:27 +02:00
Peter Steinberger
6377a3189c add phosphor decay effect for dead terminals 2025-06-23 02:55:19 +02:00
Mario Zechner
5d0fe3e7cf Update README with shell alias support and debug logging
- Document automatic shell alias resolution feature
- Add debug logging instructions using VIBETUNNEL_DEBUG
- Include examples of using aliases with vt command

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 02:49:31 +02:00
Mario Zechner
402143716e Add shell alias support and improve debug logging
- Add automatic shell alias resolution via ProcessUtils.resolveCommand()
- Support aliases like 'claude-danger' by running through user's shell
- Detect user's shell properly on all platforms (zsh, bash, pwsh, cmd, etc.)
- Replace --debug CLI flag with VIBETUNNEL_DEBUG environment variable
- Update spec.md with new functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 02:45:54 +02:00
Mario Zechner
435d8bfc27 Unfuck web build 2025-06-23 01:53:41 +02:00
Mario Zechner
92b7819fc7 FIX SHIT 2025-06-23 01:33:32 +02:00
Peter Steinberger
5a954377d6 fix build on macOS Tahoe 2025-06-23 01:30:36 +02:00
Armin Ronacher
f25194d3c8 Fixed home path detection (hopefully) 2025-06-23 01:22:13 +02:00
Armin Ronacher
96460fa5e4 Fix path insert 2025-06-23 01:14:54 +02:00
Peter Steinberger
44fb40bfc3 Move uuid from devDependencies to dependencies
The uuid package is used in runtime code (server.ts, hq-client.ts,
pty-manager.ts) so it needs to be in dependencies, not devDependencies.
This fixes the esbuild bundling errors during the build process.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 01:06:34 +02:00
Peter Steinberger
fe5f4eaa23 Fix build script to handle missing hash file gracefully
- Change error to warning when hash file is not found
- Force full rebuild instead of failing when hash is missing
- This fixes build failures when the hash calculation phase hasn't run

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 01:03:51 +02:00
Armin Ronacher
a8f96f8129 Replace monaco with codemirror for previews (works now) 2025-06-23 00:52:50 +02:00
Mario Zechner
4ab8d6bb46 Add font size control to terminal settings dropdown
- Fix keyboard event handling to allow typing in terminal width input field
- Add font size adjustment controls (8-32px range) with +/- buttons and reset
- Store font size preference in localStorage for persistence
- Trigger terminal resize events when font size changes to update PTY dimensions
- Improve UX by preventing input event bubbling in settings dropdown

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 00:48:46 +02:00
Mario Zechner
c93297d4b8 Fix buffer aggregator mesage handling in client. 2025-06-23 00:48:46 +02:00
Peter Steinberger
a582ab5188 Improve zoom animation and add black hole for cleanup 2025-06-23 00:45:51 +02:00
Peter Steinberger
c574121f21 feat: exited sessions can be exited with esc key 2025-06-23 00:45:37 +02:00
Peter Steinberger
136ca9ff29 yellow X is to clean up sessions 2025-06-23 00:19:03 +02:00
Peter Steinberger
177856d5aa New Session now supports enter+esc. 2025-06-23 00:18:37 +02:00
Peter Steinberger
55d9ffef07 Add detailed documentation about custom node install 2025-06-23 00:18:37 +02:00
Peter Steinberger
9424ad27ca Improve CI commenter 2025-06-23 00:18:37 +02:00
Peter Steinberger
ad90606f73 fix: iOS top safe area not respected #50 2025-06-23 00:18:37 +02:00
Peter Steinberger
1325085986 Show yellow (X) on killed cards to clean up 2025-06-23 00:18:37 +02:00
Peter Steinberger
15e18111af Improve server change detection 2025-06-23 00:18:37 +02:00
Peter Steinberger
f2d89352f0 Some terminals like Warp start up slow, 5 sec is too strict 2025-06-23 00:18:37 +02:00
Mario Zechner
302063327e feat: Add unified logging infrastructure with web viewer
- Implement client-side logger that mirrors server interface
- Add /api/logs endpoints for client log submission and retrieval
- Create real-time log viewer component at /logs with filtering
- Update all client files to use new logging system
- Add responsive design for log viewer (mobile/desktop layouts)
- Implement smart auto-scroll that preserves reading position
- Add Mac-style auto-hiding scrollbars
- Configure Express to serve .html files with clean URLs
- Update spec.md with logging infrastructure documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 00:05:43 +02:00
Mario Zechner
04cfe992ee refactor: Apply unified logging style guide to all server files
- Remove all colors from error/warn logs per style guide
- Add appropriate colors to logger.log calls (green=success, yellow=warning, blue=info, gray=metadata)
- Remove all prefixes like [STREAM], ERROR:, WARNING:
- Ensure all messages start lowercase (except acronyms) with no periods
- Add missing essential logs for lifecycle events and state changes
- Add debug logs for troubleshooting and performance monitoring
- Ensure all error logs include the error object
- Add proper logging to previously silent catch blocks
- Enhance context in logs with relevant IDs, counts, and durations

The logging now provides comprehensive visibility into:
- Server initialization and shutdown sequences
- Session lifecycle (creation, usage, termination)
- Connection events and client tracking
- Authentication attempts and security events
- File system operations and Git performance
- Remote server health checks and HQ communication
- Process management across platforms
- Resource cleanup and performance metrics

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 23:10:51 +02:00
Mario Zechner
f6df526f6b feat: Add structured logging system with unified style
- Implement centralized logger utility with file and console output
- Add debug mode support via --debug flag
- Initialize logger at startup for server, fwd, and cli
- Replace all console.log/error calls with structured logger
- Add logging style guide for consistent messaging
- Include proper shutdown handling with closeLogger()

The logger provides:
- Timestamped color-coded console output
- Module identification in all logs
- File logging to ~/.vibetunnel/log.txt
- Debug logs toggled via --debug flag

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 22:40:00 +02:00
Mario Zechner
3a3b5e44e9 feat: Add unified logger utility with file and console output
- Create logger factory with explicit module names (no stack traces)
- Support log/warn/error/debug levels with clean method names
- Write to ~/.vibetunnel/log.txt with automatic cleanup on startup
- Add colored console output with timestamps and module names
- Support debug mode via flag or environment variable

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 22:04:11 +02:00
Mario Zechner
1c007a2181 fix: Track cursor visibility state in terminal renderer
Applications like Claude CLI use ANSI escape sequences to hide the cursor
(\x1b[?25l) and render their own cursor with inverse text. The terminal
component now tracks cursor visibility by parsing these sequences in the
write() method and respects the visibility state when rendering.

- Added cursorVisible state that defaults to true
- Parse \x1b[?25l (hide) and \x1b[?25h (show) sequences in write()
- Only render cursor when both on cursor line AND cursor is visible

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 21:23:38 +02:00
Mario Zechner
1bb15097a4 refactor: Remove unused stream-notifier system
The direct notification system wasn't being used since hasListeners()
was checking before any listeners were set up. All sessions were using
file watching anyway. Simplified the code by removing the unused
notification system and keeping only the optimized file watching.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 21:09:57 +02:00
Mario Zechner
312786230b refactor: Remove unnecessary header construction in StreamWatcher
AsciinemaWriter always writes a header, so we can trust it exists.
Removed all the default header construction logic and headerSent tracking.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 21:00:41 +02:00
Mario Zechner
d7e811412a refactor: Simplify file watching - remove unnecessary OptimizedFileWatcher
- Integrate stat checking directly into StreamWatcher
- Remove platform-specific code paths that all used fs.watch anyway
- Keep the actual optimization: checking file stats to avoid spurious events
- Simpler, cleaner code with the same benefits

The real improvements remain:
1. Direct notifications for in-process sessions
2. Stat checking to verify actual file changes
3. Only processing when file size increases

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 20:57:46 +02:00
Mario Zechner
daa1db3392 Merge branch 'websocket-stream' 2025-06-22 20:46:27 +02:00
Mario Zechner
983f6282c5 Remove latency test scripts 2025-06-22 20:45:02 +02:00