- Created ResponsiveTerminal Lit component with mobile touch scrolling
- Implements XTerm.js with custom scaling algorithm for different viewport sizes
- Added setViewportSize() method for testing content reflow without regeneration
- Fixed mobile viewport issues using 100dvh for proper height calculation
- Added debounced ResizeObserver to prevent resize loops
- Component uses Tailwind classes and aggressive XTerm CSS constraints
- Test page allows switching viewport dimensions to observe content reflow
- Touch handlers scoped only to terminal content, not affecting external UI
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add CLI command handling to VibeTunnelApp.swift for spawn-terminal command
- Remove all distributed notification code from TerminalLauncher
- Update Rust tty-fwd to invoke VibeTunnel CLI instead of sending notifications
- Add --vibetunnel-path parameter to tty-fwd server
- Update RustServer to pass VibeTunnel executable path to tty-fwd
- Fix terminal launcher improvements from user updates
- Add timeout handling for CLI spawn operations
This approach bypasses macOS 15 distributed notification restrictions and provides more reliable terminal spawning.
- Force add shared scheme to track OS_ACTIVITY_MODE=disable setting
- Update .gitignore to allow shared schemes while ignoring user schemes
- This suppresses network framework log spam for all developers
- Use explicit Xcode 16.3 instead of generic Xcode.app
- Add timeouts to build steps (30 min for builds, 20 min for tests)
- Update both DEVELOPER_DIR env var and xcode-select paths
The hanging was likely due to using the default Xcode 16.0 on macOS-15
which may have compatibility issues with the project.
Swift 6 has issues with NotificationCenter's AsyncSequence returning
non-Sendable types. Use traditional selector-based observer to avoid
concurrency issues.