- Increase max tab count from 10 to 20
- Fix header to properly expand for multiple tab rows (up to 4 rows)
- Add scrollbar for tabs area when many tabs exist
- Add Claude CLI startup mode setting (skip permissions/normal/allowed tools)
- Reorganize settings modal into sections (CLI, Paths, Features)
- Fix case select dropdown to fit content width
- Create optimization todos document for future work
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Tasks to top of info section
- Rename "Waiting for" to "Phrase" for better alignment
- Order: Tasks, Phrase, Elapsed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Merge Waiting for, Elapsed, and Tasks into one unified card:
- All labels aligned on left (60px width)
- Values aligned after labels
- Task cards flow to the right
- Cleaner, more compact layout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add gradient definition to mini ring SVG so it shows colors when
collapsed (was only defined in large ring)
- Change meta items to row layout so "Waiting for" and completion
phrase are inline
- Reduce font sizes for completion phrase and elapsed time
- Add text overflow handling for long completion phrases
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The toggle icon was confusing because CSS rotation (90deg when expanded)
combined with JS icon swapping caused left arrow → right arrow transitions.
Changes:
- Remove CSS rotation transform from .ralph-toggle
- Use consistent down/up arrows matching Monitor panel convention
- Collapsed: ▼ (down) - click to expand
- Expanded: ▲ (up) - click to collapse
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Horizontal layout: ring | meta | tasks in one row
- Smaller progress ring (60px)
- Tasks displayed inline with wrap
- Removed Iterations counter from summary and detail
- Reduced overall panel height
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add close button (×) to Ralph Wiggum tracker panel
- Add close button (×) to Monitor panel
- Add "Show Monitor Panel" toggle in app settings (default: on)
- closeRalphTracker() disables tracker and hides panel
- closeMonitor() hides panel and saves setting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use same detach icon (⧉) for Ralph panel as Monitor panel
- Auto-focus on single session tab when only one session exists
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove the large "done" animation that appeared when Ralph loops completed.
The completion state is now simply reflected in the tracker panel without
the intrusive overlay.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change toggle icon to show ▲ when closed, ▼ when open
- Update detach/attach icons: ⧉ (detach) and ⊞ (attach)
- Adjust panel width to 380px
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add visibility toggles in App Settings modal for A-/A+, CPU/MEM, and token count
- Make settings gear icon larger (32px) for better accessibility
- Apply settings on startup and immediately when saved
- All options enabled by default, persisted to localStorage
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ability to enable/disable the Ralph tracker:
- Per-session toggle in Session Options > Ralph Wiggum tab
- Global default toggle in App Settings
Changes:
- Add "Enable Tracker" toggle to ralph-tab in session options modal
- Add "Enable Ralph Wiggum Tracker" toggle to app settings modal
- Update /api/sessions/:id/inner-config endpoint to handle `enabled` param
- Add CSS for toggle switch component
- New sessions inherit global setting from app settings
- Setting is saved in innerConfig and synced with backend
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ability to detach the Ralph Wiggum tracker panel as a floating
window that can be dragged around the screen.
Changes:
- Add detach button to the Ralph panel header
- Restructure HTML to separate clickable content from controls
- Add CSS styles for detached state (floating, draggable, resizable)
- Add toggleRalphDetach() and setupRalphDrag() JavaScript methods
- Panel auto-expands when detached for better visibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add cache-busting to /api/cases fetch to prevent stale data
- Use created case path from API response (was using old empty caseData)
- Add selectCaseName parameter to loadQuickStartCases for post-create selection
- Add toast() alias for showToast() to fix "toast is not a function" error
- Prevent duplicate event listeners on case dropdown
- Show "(will be created)" hint when no cases exist
- Add Ralph Wiggum config tab to session options modal
- Add inner-config API endpoint for Ralph loop settings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add polished, animated Ralph Wiggum Loop panel with:
- Circular progress ring showing task completion percentage
- Task cards with status indicators (pending/in-progress/completed)
- Animated status badge with pulsing indicator when active
- Completion celebration animation with animated checkmark
- Smart time formatting ("1h 23m" instead of "1.38 hours")
Enhanced detection patterns based on official Ralph plugin:
- /ralph-loop command detection
- Iteration patterns: "Iteration 5/50", "[5/50]"
- Max iterations from YAML: "max-iterations: 50"
- TodoWrite tool output detection
Adds maxIterations field to InnerLoopState for tracking loop limits.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Auto-compact now uses writeViaScreen with \r
- Auto-clear now uses writeViaScreen with \r
- Standardized respawn controller to use \r consistently
- Removed session name input from options modal (use right-click to rename)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shortens the session options modal by putting the name input
and action buttons on the same row at the top.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fixed respawn controller immediately sending commands when Claude
becomes idle, which prevented users from typing. Now waits for
idleTimeoutMs (default 10s) before triggering the respawn cycle.
- Removed Directory field from Session Options modal for cleaner UI
- Compacted CLAUDE.md documentation for better readability
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace the simple number input for respawn duration with a preset
button group (30m, 1h, 2h, 4h, 8h, ∞, Custom). Move duration to be
the first option in the Respawn Controller settings.
- Add duration preset buttons with visual highlighting for selection
- ∞ (unlimited) is selected by default
- Custom option reveals a number input for arbitrary values
- Reset to default when modal opens
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add InnerLoopTracker to detect and expose internal Claude Code state
running inside claudeman sessions by parsing terminal output patterns.
Detection patterns:
- Completion phrases: <promise>PHRASE</promise>
- Todo items: checkbox format, indicator icons, status parentheses
- Loop status: cycle counts, elapsed time, start/completion
New features:
- Inner state panel UI (collapsible, below session tabs)
- SSE events: innerLoopUpdate, innerTodoUpdate, innerCompletionDetected
- API endpoint: GET /api/sessions/:id/inner-state
- State persistence to ~/.claudeman/state-inner.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Kickstart Prompt:
- Remove Idle Timeout setting from respawn UI (uses 10s default)
- Add Kickstart Prompt field sent when /init doesn't trigger work
- New states: monitoring_init, sending_kickstart, waiting_kickstart
- Monitors 3s after /init to detect if Claude started working
Auto-Compact Context:
- Add auto-compact at 110k tokens (sends /compact with optional prompt)
- Preserves summarized context unlike /clear which wipes everything
- Optional focus prompt to guide what compact should preserve
- Blocks auto-clear while compacting to prevent conflicts
Also updates auto-clear default threshold from 100k to 140k tokens.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The interStepDelayMs config is rarely needed and clutters the UI.
Backend still supports it with default value (1000ms).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove "Connected/Disconnected" indicator to save header space
- Move token count to the far right of the header (after settings icon)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Redesign Run Claude button with purple gradient
- Redesign Run Shell button with dark green gradient
- Add + button to create new cases from toolbar
- Add Create Case modal for quick case creation
- Add Kill All modal with two options (tabs only vs full kill)
- Add CPU/Memory progress bars with color gradients
- Make monitor panel detachable as floating draggable window
- Monitor panel resizable when detached (min 350x250)
- Default CLAUDE.md template now uses /home/arkon/default/CLAUDE.md
- Streamline CLAUDE.md documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Kill All button with confirmation dialog to monitor panel header
- Button shows red X icon, confirms before killing all sessions
- Center-align close session modal options for better UX
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Monitor panel now 500px wide and 80vh max height
- Removed Copy, Clear, Monitor, Kill buttons from toolbar
- Redesigned close session modal with cleaner options:
- "Remove Tab" keeps screen running
- "Kill Claude" terminates completely
- Auto-switch to new session when created
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When clicking (x) on a session tab, users now choose:
- Hide Tab (Keep Screen): removes tab but screen session stays alive
- Close & Kill Screen: terminates both tab and screen session
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Monitor panel now opens by default on webapp start
- Replace "Reconcile" button with refresh icon (↻)
- Change close button to toggle (▼/▲) for collapse/expand
- Preserve session display names when saving screen info
- Use stored name when restoring sessions (no more "Restored:" prefix)
- Show session name in Monitor panel instead of screen name
- Kill screen session when closing a tab
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Instead of showing "No background tasks" message, the section is now
completely hidden when there are no tasks, making the UI cleaner.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move font controls (A+/A-) to left of connection status
- Redesign tab count with stepper buttons (−/number/+)
- Remove respawn panel, integrate settings into session options modal
- Fix Monitor panel SSE handler (wrong element ID)
- Add screen wrapping support to Session class
- Add E2E testing skill using agent-browser
- Document testing approach in README.md and CLAUDE.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add number input (1-10) next to "Run Claude" button in toolbar
- When tabCount > 1, create sessions named "1-projectname", "2-projectname", etc.
- All sessions share the same working directory (case folder)
- First session is auto-selected after creation
- Add CSS for small number input in toolbar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Combine two separate panels into unified Monitor panel with sections
- Move font size controls from toolbar to header
- Add CSS styles for new monitor panel with section headers
- Update JS to handle combined panel with toggleMonitorPanel()
- Keep legacy toggleTaskPanel() as alias for backward compatibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove New Session slide-up panel from HTML
- Remove createNewSession, hideNewSessionPanel, createSessionFromPanel functions
- Remove Ctrl+N keyboard shortcut
- Remove "New Session" from help modal
- Clean up loadQuickStartCases and closeAllPanels references
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The gear icon for app settings was already added, but the old New Session
tab was not removed. Users can still create sessions via Ctrl+N or other UI elements.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add screen session management infrastructure:
- ScreenManager class to create, track, and kill GNU screen sessions
- Persistence of screen sessions to ~/.claudeman/screens.json
- Process stats collection (memory, CPU, child count)
- Reconciliation to detect dead/orphan screens
New API endpoints:
- GET /api/screens - list screens with stats
- DELETE /api/screens/:sessionId - kill screen
- POST /api/screens/reconcile - find dead screens
- POST /api/screens/stats/start|stop - control stats polling
New Process Monitor panel:
- Slide-up panel with real-time stats (2s updates)
- Shows memory, CPU, child processes per screen
- Kill button for each screen session
- Reconcile button to clean up dead screens
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shows a confirmation modal when clicking "x" on session tabs to warn
the user that the Claude session and running processes will be
terminated. Users can cancel or confirm the close action.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move respawn controls from toolbar to session options modal
- Remove unnecessary Mode label from session options (visible in tab)
- Increase directory input width from 200px to 350px
- Add RTL direction to directory display to show end of long paths
- Add respawn status indicator with stop/configure buttons in modal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix terminal welcome message to say "Run Claude" instead of "Quick Start"
- Fix Ctrl+Enter keyboard shortcut by using capture phase
- Auto-select default case and show directory on load
- Make gear icon larger (1rem) with rotation animation on hover
- Add right-click on session tabs for inline rename
- Update directory display when case selection changes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add session name property with rename API endpoint
- Add shell session mode (plain bash/zsh without Claude)
- Add gear icon on session tabs for options (rename)
- Add mode indicator on tabs for shell sessions
- Rename "Quick Start" button to "Run Claude"
- Add "Shell" button to start plain shell sessions
- Replace cost counter with total token counter
- Add session options modal for renaming
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add token tracking to Session class (input/output tokens)
- Add auto-clear feature that sends /clear when token threshold reached
- Add API endpoint to enable respawn on existing running sessions
- Add timed duration setting for respawn (auto-stops after N minutes)
- Add TaskTracker class for background task detection and tree display
- Update UI with duration input, auto-clear settings, and "Enable on Current" button
- Add respawn timer display in banner when timed run is active
- Add token count display in respawn banner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Show start time in timer banner (e.g., "Started: 14:30")
- Style with monospace font for consistent width
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add retry button when SSE connection is lost
- Add reconnectSSE method for manual reconnection
- Add session count to header stats
- Include session costs in total cost calculation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add floating help button (?) with keyboard shortcuts modal
- Add Ctrl+? shortcut to open help modal
- Add copy terminal button to copy output to clipboard
- Style kbd elements for keyboard shortcut display
- Update Escape key to close all modals
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add comprehensive responsive styles for tablets (1024px), phones (768px, 480px)
- Add touch optimization media query for larger tap targets
- Add SVG favicon with lightning bolt icon
- Add meta description and theme-color tags
- Add dynamic page title updates based on session/timer state
- Update README with keyboard shortcuts documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>