Commit Graph
100 Commits
Author SHA1 Message Date
arkonandClaude Opus 4.6 9702739e67 fix: restore active session tab on page reload (mobile + desktop)
Save activeSessionId to localStorage on tab switch and restore it in
handleInit so reloading the page jumps back to the session you were
viewing instead of always selecting the first tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 20:07:36 +01:00
arkon 8f1eeca5b9 chore: bump version to 0.1490 2026-02-12 18:29:49 +01:00
arkonandClaude Opus 4.6 0314de7789 fix: bulletproof test safety — IS_TEST_MODE guards prevent tests from killing real tmux sessions
Added IS_TEST_MODE (process.env.VITEST) guards to every method in TmuxManager and
ScreenManager that touches real tmux/screen sessions. Tests can never create, kill,
discover, or send input to real sessions. Removed broken E2E test suite entirely.
Rewrote test/setup.ts from 459 lines to minimal cleanup. Rewrote tmux-related tests
to verify test-mode safety behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:26:16 +01:00
arkon cdc822d657 fix: add Agent Teams types to types.ts, remove unused server imports 2026-02-12 14:42:58 +01:00
arkon e44f827473 chore: bump version to 0.1488 2026-02-12 14:41:27 +01:00
arkonandClaude Opus 4.6 2b685cea65 feat: full Agent Teams support with tmux split-pane mode
- Enable tmux mouse mode on session creation for click-to-select panes
- Auto-discover teammate panes via tmux list-panes when config.json lacks paneIds
- Enable mouse mode dynamically when team pane streams start (restored sessions)
- Suppress teammate subagent popup windows (false info); teammates use main tmux panes
- Remove standalone teammate terminal windows in favor of native tmux interaction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 13:54:40 +01:00
arkonandClaude Opus 4.6 a4e778c7c4 chore: bump version to 0.1486
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>
2026-02-12 13:44:07 +01:00
arkon 59a8f6bd7d chore: bump version to 0.1485 2026-02-12 11:35:10 +01:00
arkon 336aff2d2c chore: bump version to 0.1484 2026-02-12 11:17:49 +01:00
arkon a687416798 chore: bump version to 0.1483 2026-02-12 11:13:05 +01:00
arkon 669a2b7773 chore: bump version to 0.1482 2026-02-12 11:11:06 +01:00
arkon 65f81667d0 chore: bump version to 0.1481 2026-02-12 10:29:57 +01:00
arkon 8a85064748 chore: bump version to 0.1480 2026-02-12 08:58:00 +01:00
arkonandClaude Opus 4.6 3145b3f9a3 chore: bump version to 0.1479
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 08:34:51 +01:00
arkonandClaude Opus 4.6 df84804189 docs: remove mobile-with-keyboard screenshot from README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:32:56 +01:00
arkonandClaude Opus 4.6 c2ab0c6a6f chore: bump version to 0.1478
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:29:53 +01:00
arkonandClaude Opus 4.5 8f0bbf33d6 chore: bump version to 0.1477
Location: Ko Samui

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 07:24:32 +01:00
arkonandClaude Opus 4.5 99fa04df29 fix: revert broken selectSession optimization
The optimization introduced a duplicate 'session' variable declaration
that caused a SyntaxError, breaking the web UI entirely.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 05:14:18 +01:00
arkon 30f73871c6 chore: bump version to 0.1476 2026-02-02 05:09:23 +01:00
arkonandClaude Opus 4.5 b0d3dfe3a6 perf: optimize tab switching responsiveness
- Increase chunked write size from 64KB to 128KB (halves write time)
- Start buffer fetch immediately before other setup work
- Show "Loading session..." indicator during fetch
- Parallelize session attach with buffer fetch
- Fire-and-forget resize call (don't block on it)

Reduces perceived tab switch latency by ~50-100ms for large buffers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 05:08:51 +01:00
arkon efd00658aa chore: bump version to 0.1475 2026-02-02 04:50:08 +01:00
arkonandClaude Opus 4.5 e37d2f6f49 docs: add terminal anti-flicker system documentation
- Document 6-layer anti-flicker pipeline (server batching, DEC 2026,
  SSE broadcast, client rAF, sync parser, chunked loading)
- Add detailed implementation notes for server and client sides
- Document responsiveness considerations and latency sources
- Fix cross-session data bleed: clear pendingWrites and syncWaitTimeout
  on session switch and SSE reconnect
- Improve flicker filter to detect cursor-up patterns (ESC[nA)
- Add adaptive batching: extend batch window during rapid-fire events
- Update BATCH_FLUSH_THRESHOLD from 1KB to 32KB for effective batching

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 04:49:15 +01:00
arkonandClaude Opus 4.5 dc0b9f0fb6 fix: capture script now properly spawns subagents
- Fix input submission: add \r and useScreen:true for reliable input
- Link to real codebase instead of empty test case
- Select correct session tab before sending input
- Filter subagents by session for accurate tracking
- Screenshots now show real subagent windows with activity
- Optimized GIF to 3.9MB (was 62MB)

Commit from flight QR118 in an Airbus A350-1000, stable connection thanks to Starlink!

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 07:16:02 +01:00
arkonandClaude Opus 4.5 2186d16616 docs: replace ASCII art with tables in README
- Replace Respawn Controller state machine diagram with state table
- Replace Zero-Flicker pipeline ASCII with flow table
- Cleaner presentation that renders well on GitHub

Commit from flight QR118 in an Airbus A350-1000, stable connection thanks to Starlink!

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 00:37:21 +01:00
arkonandClaude Opus 4.5 cc7c188f1f feat: add subagent screenshot capture script and README images
- 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>
2026-02-01 00:35:18 +01:00
arkon 45f7381534 chore: bump version to 0.1474 2026-01-31 23:55:40 +01:00
arkonandClaude Opus 4.5 404092bd32 docs: improve CLAUDE.md with quick reference and gotchas
- Add Quick Reference table at top for common commands
- Add Common Gotchas section documenting 5 key pitfalls
- Add Import Conventions section for utilities/types/config
- Add test setup exported helpers to Testing section
- Fix port range inconsistency (now all say 3183-3193)
- Add missing files to core files table

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 23:52:44 +01:00
arkonandClaude Opus 4.5 eb7c005363 fix: memory leaks and performance optimizations
- WebServer: Store session listener refs for explicit cleanup on delete
- RespawnController: Fix clearInterval bug (was using clearTimeout)
- RespawnController: Add try/catch to interval callbacks
- PlanOrchestrator: Guarantee progressInterval cleanup with try/finally
- SubagentWatcher: Guard idle timer against deleted agents
- Session: Add threshold validation for auto-clear/compact (1k-500k)
- Session: Add token sum overflow check in restoreTokens
- Session: Use LRUMap for _recentTaskDescriptions auto-eviction

Commit from flight QR118 in an Airbus A350-1000, stable connection thanks to Starlink!

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 23:48:59 +01:00
arkonandClaude Opus 4.5 cd4905287e feat: add mobile case picker to toolbar
- 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>
2026-01-31 22:17:47 +01:00
arkonandClaude Opus 4.5 d7608a4885 fix: allow all display settings to work on mobile
- 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>
2026-01-31 17:34:31 +01:00
arkonandClaude Opus 4.5 b62ae9e42f fix: allow font controls to be shown on mobile when enabled
- 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>
2026-01-31 17:31:33 +01:00
arkonandClaude Opus 4.5 29916f4202 fix: bring gear and X closer together on mobile tabs
- Changed margin-left from 2px to -2px for tighter grouping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 17:28:04 +01:00
arkonandClaude Opus 4.5 ed42c6bea3 fix: larger X button, closer to gear on mobile tabs
- X: 1.1rem font, 20x18px (bigger)
- Gap reduced to 2px (closer together)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 16:08:25 +01:00
arkonandClaude Opus 4.5 acb1ec36c7 fix: make gear icon tiny, X larger on mobile tabs
- Gear: 0.5rem font, 12x12px, 60% opacity (subtle)
- X: 0.9rem font, 18x16px (prominent for tapping)
- 6px gap between icons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 16:07:17 +01:00
arkonandClaude Opus 4.5 824a79413e fix: perfect vertical alignment of gear and X icons on mobile tabs
- 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>
2026-01-31 16:04:13 +01:00
arkonandClaude Opus 4.5 dfb8937ba4 fix: align gear and close icons together on mobile tabs
- 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>
2026-01-31 15:52:45 +01:00
arkonandClaude Opus 4.5 2fcd794daf fix: adjust mobile tab icon sizes - larger X, smaller gear
- 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>
2026-01-31 15:50:33 +01:00
arkonandClaude Opus 4.5 236442a8dd fix: center gear icon in mobile session tabs
- 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>
2026-01-31 15:46:26 +01:00
arkonandClaude Opus 4.5 a85603d8cf docs: add Mobile UI section to README
- 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>
2026-01-31 15:41:15 +01:00
arkonandClaude Opus 4.5 d70e2d1d93 fix: mobile toolbar button sizing and accessory bar commands
- 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>
2026-01-31 14:46:26 +01:00
arkon b655d2e29e fix: image watcher now uses relative path for subdirectory images
- 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
2026-01-31 14:32:20 +01:00
arkon c7488c4a56 fix: move mobile toolbar to bottom edge 2026-01-31 08:33:37 +01:00
arkon d3bc6fe655 fix: move mobile toolbar closer to bottom (30px -> 10px) 2026-01-31 08:30:51 +01:00
arkon 65f8cd7384 fix: scroll terminal to bottom when mobile keyboard appears 2026-01-31 08:29:14 +01:00
arkon 0f8ea635b5 fix: increase mobile content margin below fixed header 2026-01-31 08:25:25 +01:00
arkon 92ec121ce7 feat: fixed floating tabs on mobile - header stays at top when scrolling 2026-01-31 08:19:41 +01:00
arkonandClaude Opus 4.5 8641296aa2 fix: exclude xterm terminal from keyboard scroll handling
- 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>
2026-01-31 08:11:37 +01:00
arkonandClaude Opus 4.5 24af779d54 fix: drastically simplify mobile keyboard handling
- 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>
2026-01-31 08:06:38 +01:00
arkonandClaude Opus 4.5 61c7a57426 fix: prevent app offset on mobile refresh - simplify keyboard handling
- 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>
2026-01-31 08:02:27 +01:00
arkonandClaude Opus 4.5 1288338e58 fix: keyboard visibility offset issue - remove problematic top positioning
- 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>
2026-01-31 07:58:12 +01:00
arkonandClaude Opus 4.5 fd30040289 feat: mobile keyboard input visibility - scroll inputs into view when keyboard opens
- 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>
2026-01-31 07:51:29 +01:00
arkon 5b4f79a3a5 fix: restore desktop UI to pre-mobile-optimization state, keep mobile optimizations in media queries 2026-01-31 07:17:02 +01:00
arkon ef220e9987 fix: hide header version display 2026-01-31 07:14:05 +01:00
arkon 09572ce9e2 fix: restore desktop Run Claude button with blue gradient, keep mobile optimizations separate 2026-01-31 07:13:23 +01:00
arkon c8d5fe0621 chore: bump version to 0.1447 2026-01-31 06:30:32 +01:00
arkonandClaude Opus 4.5 140bf6fdd6 fix: bottom toolbar layout - show case selector, gray Run Claude button
- 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>
2026-01-31 05:48:55 +01:00
arkonandClaude Opus 4.5 ad8410e29a fix: mobile terminal scroll - z-index viewport above screen rows
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>
2026-01-31 05:36:12 +01:00
arkon 6123ce8ba9 chore: bump version to 0.1444 2026-01-31 04:44:46 +01:00
arkonandClaude Opus 4.5 2a8882a94b chore: bump version to 0.1443
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:25:59 +01:00
arkonandClaude Opus 4.5 ce0139e393 chore: bump version to 0.1442
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:50:19 +01:00
arkonandClaude Opus 4.5 20283019f4 feat: comprehensive codebase improvements (cleanup, logic, performance)
Code Cleanups:
- Consolidated PlanTaskStatus and TddPhase types to types.ts
- Standardized node: prefix for Node.js builtin imports
- Fixed timer type to NodeJS.Timeout in respawn-controller

Logic Improvements:
- Fixed AI check race condition with UUID tracking in respawn-controller
- Added comprehensive _isStopped guards in session timer callbacks
- Made RalphTracker reset events non-reentrant via process.nextTick()
- Improved SessionManager mutex pattern reliability

Performance Optimizations:
- Fixed pendingToolCalls memory leak with TTL cleanup in subagent-watcher
- Improved LRUMap.newest() from O(n) to O(1) with _newestKey tracking

Documentation:
- Enhanced README antiflicker section with 6-layer technical details

Version: 0.1441

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:05:46 +01:00
arkon ea81d94173 chore: bump version to 0.1440 2026-01-30 18:01:07 +01:00
arkon b520ce44e5 chore: bump version to 0.1439 2026-01-30 17:50:02 +01:00
arkon 5b6dd078f1 chore: bump version to 0.1438 2026-01-30 17:20:53 +01:00
arkon f4612278ef chore: bump version to 0.1437 2026-01-30 14:14:45 +01:00
arkonandClaude Opus 4.5 e27c046abf test: add memory leak prevention pattern tests (P1)
Add comprehensive tests for the cleanup patterns used to prevent
memory leaks in long-running sessions:

- Task description cache with TTL expiration
- Promise callback null-after-rejection pattern
- Event listener tracking and removal
- DOM handler storage for frontend cleanup
- Timer/interval management
- Map cleanup patterns and safe iteration
- WeakRef/WeakMap usage patterns
- Cleanup order verification (LIFO)

Update CLAUDE.md with reference to new test file.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:07:27 +01:00
arkonandClaude Opus 4.5 322802c1b9 perf(css): add CSS containment to floating windows
Added `contain: layout paint` to modal, subagent-window, log-viewer-window,
image-popup-window, plan-file-window, and plan-file-manager. This tells
the browser that these elements' layout and paint are independent from
the rest of the page, enabling rendering optimizations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:36:18 +01:00
arkonandClaude Opus 4.5 0b257753a6 fix(frontend): add imagePopups cleanup to cleanupAllFloatingWindows
The imagePopups Map was not being cleaned up during SSE reconnects,
causing memory leaks from orphaned drag event listeners on document.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:33:40 +01:00
arkonandClaude Opus 4.5 b83d458156 docs: update CLAUDE.md with memory leak fix notes
- Added memory leak prevention patterns section
- Documented 2026-01-30 P0 fixes (commit e3e0d22)
- Added cleanup pattern guidance for future development

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:28:30 +01:00
arkonandClaude Opus 4.5 e3e0d226ce fix(memory): prevent memory leaks in session, server, and frontend
Backend fixes:
- Session: clear _recentTaskDescriptions Map in stop() and clearBuffers()
- Session: null promise callbacks after rejection in runPrompt() catch block
- Server: store subagent/image watcher listener refs and remove on shutdown

Frontend fixes:
- Plan file windows: store drag/resize handlers and clean up on close
- Plan file manager: store drag handler and clean up on close
- cleanupAllFloatingWindows: now cleans up plan file windows

These prevent unbounded memory growth in long-running sessions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:25:18 +01:00
arkonandClaude Opus 4.5 2693aea11e fix: make test screen cleanup registration-based only
Previously killOrphanedTestScreens() would kill ANY detached claudeman
screen that wasn't in preExistingScreens. This was dangerous because:
- User screens can become temporarily detached (web server reconnect)
- Tests might start before user creates sessions
- Race conditions between screen status and cleanup timing

Now we ONLY kill screens that tests explicitly register via
registerTestScreen(). Orphaned screens are warned about but not killed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:17:38 +01:00
arkonandClaude Opus 4.5 a92826b66d refactor: simplify ralph wizard from 9 agents to 2
Remove execution layer that never actually controlled execution:
- execution-bridge.ts (model param was ignored)
- group-scheduler.ts (task-tool mode never used)
- model-selector.ts (recommendations were display-only)
- context-manager.ts (never invoked)
- execution-limits.ts

Remove redundant agent prompts (overlapping outputs):
- requirements-analyst, architecture-planner, risk-analyst
- testing-specialist, verification (merged into planner.ts)
- execution-optimizer (output was ignored)
- final-review (scores were cosmetic)

Simplify plan-orchestrator.ts from 2400 LOC to 520 LOC:
- Before: 9 agents, 6 phases, ~40-60 minutes
- After: 2 agents (research + planner), ~18 minutes

Remove /api/execution/* endpoints and related server code.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:15:09 +01:00
arkon 0020ae5a3e chore: bump version to 0.1436 2026-01-30 11:39:15 +01:00
arkon 1fb06ecf47 chore: bump version to 0.1435 2026-01-30 11:32:23 +01:00
arkon 7dfd97df58 chore: bump version to 0.1434 2026-01-30 11:30:51 +01:00
arkon da5d86a84f chore: bump version to 0.1433 2026-01-29 16:13:18 +01:00
arkonandClaude Opus 4.5 b13b725bd8 fix: robust agent-to-tab connection lines with persistent parent tracking
- 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>
2026-01-29 14:56:11 +01:00
arkon 28f37d9d7c chore: remove screenshot 2026-01-29 13:24:44 +01:00
arkon 7b866c1998 chore: bump version to 0.1431 2026-01-29 13:22:02 +01:00
arkonandClaude Opus 4.5 8ed1c218f4 fix: remove stats cards from Summary tab
Remove Respawn Cycles, Tokens Used, Active Time, Issues stats
that cluttered the Summary tab.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:03:17 +01:00
arkonandClaude Opus 4.5 6b101ba919 fix: simplify respawn tab in session options
Remove advanced options (After Update Prompt, Kickstart, Auto-Accept)
to reduce clutter. Defaults preserved via hidden inputs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:59:42 +01:00
arkonandClaude Opus 4.5 e92ae7c3ce fix: improve tab close button usability
- 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>
2026-01-29 12:49:44 +01:00
arkonandClaude Opus 4.5 db20f4f63d chore: bump version to 0.1427
- 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>
2026-01-29 12:47:23 +01:00
arkonandClaude Opus 4.5 a73f7c3a4f fix: prevent stale subagent data from showing in windows
- 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>
2026-01-29 12:04:14 +01:00
arkonandClaude Opus 4.5 5c2d985dce chore: bump version to 0.1425
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:49:00 +01:00
arkonandClaude Opus 4.5 d040722d1d docs: clarify HTTP is fine for localhost, HTTPS only for remote
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>
2026-01-29 11:47:24 +01:00
arkonandClaude Opus 4.5 8c908ec5e4 chore: bump version to 0.1423
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:40:55 +01:00
arkonandClaude Opus 4.5 c667e0baac fix: match subagents to sessions by claudeSessionId instead of newest heuristic
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>
2026-01-29 11:39:12 +01:00
arkon ed2a2323f8 chore: bump version to 0.1422 2026-01-29 11:27:44 +01:00
arkon 662a2418a0 chore: bump version to 0.1421 2026-01-29 11:19:01 +01:00
arkon e8b688d24f chore: bump version to 0.1420 2026-01-29 11:11:55 +01:00
arkon f7c884ecff chore: bump version to 0.1419 2026-01-29 11:06:22 +01:00
arkonandClaude Opus 4.5 6c07541288 refactor: consolidate shared regex patterns and token validation
- Create src/utils/regex-patterns.ts with ANSI_ESCAPE_PATTERN_FULL,
  ANSI_ESCAPE_PATTERN_SIMPLE, TOKEN_PATTERN, and helper functions
- Create src/utils/token-validation.ts with MAX_SESSION_TOKENS and
  validation utilities
- Update session.ts, respawn-controller.ts, ai-checker-base.ts,
  ralph-tracker.ts, state-store.ts to use shared utilities
- Export all new utilities from src/utils/index.ts

Reduces code duplication while maintaining pre-compiled patterns
for performance.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:55:49 +01:00
arkonandClaude Opus 4.5 451f0854eb docs: update CLAUDE.md with execution system documentation
- Add execution-bridge, group-scheduler, model-selector, context-manager files
- Add prompts directory reference
- Document execution limits configuration
- Update task description reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:19:20 +01:00
arkonandClaude Opus 4.5 8fb8e6fa83 fix: memory leaks and error handling improvements
- execution-bridge: track and cleanup retry timers to prevent memory leaks
- model-selector: add exhaustive type check for ModelTier
- ralph-tracker: fix division by zero when summary.total is 0
- respawn-controller: remove event listeners on stop to prevent memory leaks
- screen-manager: use Promise.allSettled for better error handling in stats
- session-manager: use Promise.allSettled for stopAllSessions resilience

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:19:14 +01:00
arkon e0a695fed7 chore: bump version to 0.1417 2026-01-28 07:18:45 +01:00
arkonandClaude Opus 4.5 55e9f9f0a5 feat(execution): add ExecutionBridge for parallel task execution
Implements the Execution Optimizer Rework plan that enables the system
to actually use the optimizer metadata (parallelGroups, agentType,
recommendedModel, requiresFreshContext, estimatedTokens) that was
previously generated but ignored.

New components:
- ExecutionBridge: Central coordinator that loads optimized plans,
  manages parallel execution within groups, and coordinates with
  SpawnOrchestrator for session-based execution
- ModelSelector: Routes tasks to appropriate models (opus/sonnet/haiku)
  based on user defaults and agent type overrides. Optimizer
  recommendations are advisory only - user preferences always win
- GroupScheduler: Builds topologically ordered execution groups,
  manages dependencies, determines execution mode (session vs task-tool)
- ContextManager: Handles fresh context requirements via /clear+/init
  or new session spawning

Features:
- Parallel task execution within groups (configurable limit)
- Group-level dependency tracking (lower groups complete first)
- Partial failure handling (continue with non-dependent tasks)
- Model configuration in App Settings > Models tab
- Agent type overrides (explore, implement, test, review)
- Execution control API endpoints (start, pause, resume, cancel)
- SSE events for real-time execution progress visibility
- Execution history tracking

API endpoints:
- GET/POST/PUT /api/execution/* for execution control
- GET/PUT /api/execution/model-config for model settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 07:07:18 +01:00
arkonandClaude Opus 4.5 9eccd061b9 fix(orchestrator): pass enriched task description to all subagents
Verification, execution optimizer, and final review agents were receiving
the raw taskDescription instead of effectiveTaskDescription (which includes
research context). This caused them to work with outdated/wrong prompts
when regenerating plans.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 06:19:03 +01:00
arkonandClaude Opus 4.5 c17dc57fd9 feat(wizard): add minimize button and network retry for Ralph wizard
- Add minimize button to Ralph wizard modal header
- Minimized indicator shows at bottom of screen with elapsed time
- Click indicator to restore wizard
- Add retry logic (3 attempts with exponential backoff) for plan generation
- Shows "Connection lost, retrying..." message during retries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 06:03:48 +01:00
arkonandClaude Opus 4.5 e60ef9a931 fix(respawn): preserve respawn state when session is renamed
Session updates (like renaming) were broadcasting toDetailedState() which
doesn't include respawn controller state. The frontend would then overwrite
the session object, losing respawnEnabled/respawnConfig/respawn fields.

Added getSessionStateWithRespawn() helper that includes respawn controller
state in all session:updated broadcasts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 05:56:39 +01:00