feat: interactive teammate tmux pane windows with xterm.js terminals
feat: auto-cleanup teams/subagents/pane windows on session delete
fix: only show agent/teammate windows when matching Claudeman tab exists
fix: UTF-8 encoding in teammate pane terminal output (Uint8Array)
fix: standalone pane window cleanup via subagentParentMap lookup
fix: xterm.js dimensions crash with deferred init + null-safe dispose
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add scripts/capture-subagent-screenshots.mjs for automated capture
- Creates real Claude sessions that spawn Task tool subagents
- Records video and converts to optimized GIF via FFmpeg
- Add subagent-spawn.png, subagent-demo.gif to docs/images
- Update README Live Agent Visualization with real screenshots
- Replace ASCII diagram with actual subagent window screenshots
- Add capture:subagents npm script
- Document both screenshot scripts in CLAUDE.md
Commit from flight QR118 in an Airbus A350-1000, stable connection thanks to Starlink!
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Case button to mobile toolbar (between Run Claude and Run Shell)
- Add bottom sheet modal for case selection on mobile
- Show current case name on button (truncated)
- Allow creating new cases from mobile picker
- Sync selection with desktop dropdown
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove display:none from CSS for all settings-controlled elements
- System stats, token count, monitor, subagents, project insights,
file browser now respect user settings on mobile
- Settings already saved independently (mobile/desktop) via getSettingsStorageKey()
- Add compact mobile styling for each element instead of hiding
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove display:none from mobile CSS for font controls
- Let JS control visibility based on user setting
- Add compact styling for font controls on tablet/phone
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use consistent 20x20px boxes for both icons
- Remove position offsets, rely on flexbox centering
- Increase gear font-size to 0.7rem for better visibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Push gear icon to right with margin-left: auto
- Reduce gap between gear and close with negative margins
- Keep both icons tightly grouped at tab end
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Close button: 24px with 0.85rem font for easy tapping
- Gear icon: 16px with 0.55rem font, less prominent
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Increase min-width and height for better touch target
- Add align-items/justify-content for proper centering
- Adjust padding for balanced appearance
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Document fixed toolbar and keyboard handling
- Swipe navigation between sessions
- Keyboard accessory bar with /init, /clear, /compact
- Confirmation dialogs for commands
- Touch target sizes and mobile simplifications
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix Run Claude button being squeezed on mobile (use fit-content width)
- Remove Send button from accessory bar
- Add /init, /clear, /compact buttons with confirmation dialogs
- Center toolbar buttons instead of stretching
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added relativePath field to ImageDetectedEvent
- Compute relative path from working directory in image-watcher
- Use relativePath in frontend URL (fixes 'Failed to load image' for subdirs)
- Minor CLAUDE.md improvements
chore: bump version to 0.1461
- Terminal has hidden textarea that was triggering scrollIntoView
- Exclude elements inside .xterm or .terminal-container
- Fixes scroll being broken when tapping terminal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove all complex viewport tracking (was causing scroll issues)
- Remove keyboard-visible class and CSS (not needed)
- Remove --keyboard-height CSS variable (not needed)
- Simple approach: on focusin, wait 400ms, scrollIntoView
- Keep scroll-margin on phone inputs as CSS fallback
- Much more reliable and no side effects
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Revert interactive-widget viewport meta (caused iOS layout shifts)
- Delay initial viewport height capture to let viewport stabilize
- Update initialViewportHeight on window resize (address bar changes)
- Remove visualViewport scroll handler (not needed, caused issues)
- Scope keyboard CSS to .modal.active only
- Use vh instead of dvh for more stable layout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove top/bottom positioning from modal-content when keyboard visible
- Reset --viewport-offset-top to 0 when keyboard closes
- Add focusout handler to help reset keyboard state on iOS
- Simplify modal keyboard CSS to only adjust max-height
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add KeyboardHandler module using visualViewport API for keyboard detection
- Set --keyboard-height CSS variable and toggle .keyboard-visible class
- Auto-scroll focused inputs into view after keyboard appears (350ms delay)
- Update viewport meta with interactive-widget=resizes-content for Android
- Add scroll-margin on inputs for tablet/phone breakpoints
- Resize modal-content and modal-body when keyboard visible on mobile
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rearranged bottom toolbar: Run Claude + Run Shell left, + case selector center
- Made Run Claude button gray instead of blue gradient
- Fixed mobile CSS that was hiding toolbar-center with display:none
- Reduced toolbar height 20%, increased header height
- Tighter session tab styling (smaller padding, font, border-radius)
- Added version display to header next to logo
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
xterm.js has known limited mobile touch support because the viewport
sits underneath the screen rows. Fixed by:
- Setting xterm-viewport z-index: 10 on mobile to receive touch events
- Enabling native browser scrolling with touch-action: pan-y
- Adding -webkit-overflow-scrolling: touch for iOS momentum
- Skipping custom JS scroll handlers on mobile devices
- Moving wizard drag listeners to only attach during actual drag
See: https://github.com/xtermjs/xterm.js/issues/5377
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>