- 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>
- Add --session-id flag to Claude CLI startup so Claudeman and Claude share the same session ID
- Set claudeSessionId immediately on session start (no waiting for JSON messages)
- Add persistent subagentParentMap to store agent-to-tab associations permanently
- Add /api/subagent-parents endpoints for server-side persistence
- Add fallback: use active session when claudeSessionId matching fails
- Connection lines now reliably connect agent windows to their parent tabs
- Survives page refresh, reconnect, and server restart
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change cursor to default arrow when hovering close button
- Increase clickable area with more padding
- Add subtle background highlight on hover
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove TUI from git (moved to .gitignore for local development)
- Remove React/Ink dependencies (unused in published version)
- Remove tui command from CLI
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reduce getRecentSubagents window from 60 to 15 minutes
- Skip old/completed agents when restoring window states (10 min cutoff)
- Clear old activity data when new agent with same ID is discovered
- Force close existing window for agentId before opening fresh one
Fixes issue where old prompts/input from previous Ralph Loop runs
were displayed when clicking on subagent windows.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Localhost is treated as a secure context by browsers, so notifications
and all browser APIs work without HTTPS. Updated README, CLI help,
install script, and systemd service to default to HTTP.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When multiple Claudeman sessions share the same workingDir, subagents were
incorrectly attaching to the newest session instead of the actual parent.
Now uses direct claudeSessionId matching for reliable parent detection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>