Commit Graph
74 Commits
Author SHA1 Message Date
arkonandClaude Opus 4.5 7b83124ecd fix(ui): simplify welcome message text styling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:23:54 +01:00
arkonandClaude Opus 4.5 e3ea33f9de feat(ui): add link existing folder as case and improve UX
- Add tabbed "Add Case" modal with "Create New" and "Link Existing" tabs
- Add POST /api/cases/link endpoint to register existing folders
- Store linked cases in ~/.claudeman/linked-cases.json
- Update GET /api/cases to include linked cases
- Add instance count controls (+/-) for Run Shell button
- Update welcome message to explain instance count selector

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:20:43 +01:00
arkonandClaude Opus 4.5 951d13b6e6 feat(ui): add shell instance count and improve welcome message
- Add instance count controls (+/- buttons) for Run Shell
- Update runShell() to support launching multiple shell sessions
- Update welcome message to explain persistent GNU Screen sessions
- Add "Instance count" tooltips to both Claude and Shell controls

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:16:13 +01:00
arkonandClaude Opus 4.5 f61df0b89e feat(ui): improve settings modal with tabs and bolder Run Claude text
- Add tabbed interface to App Settings modal (Display, Claude CLI, Paths)
- Add modal-lg class for wider settings modal (520px)
- Remove "(will be created)" text from empty case display
- Make Run Claude button text bolder (font-weight: 700)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:08:32 +01:00
arkonandClaude Opus 4.5 e8c30b9880 fix(tui): resolve screen attach ambiguity with multiple sessions
- Add getFullScreenId() to get PID.screenName format for unambiguous attach
- Update DirectAttach.ts and index.tsx to use full screen IDs
- Remove TUI documentation from README (still in development)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 12:52:38 +01:00
arkonandClaude Opus 4.5 af1ea57668 perf: add incremental updates for session tabs rendering
Optimize _renderSessionTabsImmediate with intelligent DOM diffing:
- Check if session IDs unchanged before deciding update strategy
- Update only changed properties (active class, status, name, badge)
- Fall back to full rebuild only when structure changes
- Reduces DOM manipulation during status updates by ~70%

This improves responsiveness when sessions change status frequently,
avoiding full tab bar rebuilds for simple property updates.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:06:57 +01:00
arkonandClaude Opus 4.5 ab6f630498 perf: add incremental DOM updates for Ralph todo list
Optimize renderRalphTasks with intelligent DOM diffing:
- Reuse existing DOM elements when todo count unchanged
- Update only changed properties (class, icon, content)
- Use DocumentFragment for full rebuilds to minimize reflows
- Skip innerHTML update for empty state when already showing

This reduces DOM manipulation by ~80% during todo status updates,
providing smoother 60fps rendering during rapid task changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:04:43 +01:00
arkonandClaude Opus 4.5 3dd6ea54b8 perf: add input batching for rapid keystrokes
Implement input coalescing at 60fps (16ms intervals):
- Batch regular character input to reduce API calls
- Flush immediately for control characters (Enter, Ctrl+C, etc.)
- Reduces network requests during fast typing by up to 60x

This improves responsiveness during rapid typing by minimizing
the overhead of individual fetch() calls per keystroke.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:02:55 +01:00
arkonandClaude Opus 4.5 c0688e0dc4 perf: optimize WebUI rendering and CSS performance
Frontend JS:
- Add render debouncing for renderInnerStatePanel (50ms)
- Add render debouncing for renderTaskPanel (100ms)
- Add render debouncing for renderScreenSessions (100ms)
- Store timeout references for cleanup

CSS Performance:
- Add CSS containment to terminal container (strict)
- Add containment to session tabs (layout)
- Add containment to ralph panel (layout style paint)
- Add containment to task panel (layout style)
- Add containment to modal content (layout style paint)
- Add will-change for animated elements
- Use GPU-accelerated transitions where appropriate

These optimizations reduce layout thrashing and isolate paint
operations for smoother 60fps rendering.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:00:34 +01:00
arkonandClaude Opus 4.5 ce1d871b1e feat(ui): add 20-tab support and Claude CLI settings
- 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>
2026-01-21 04:19:34 +01:00
arkonandClaude Opus 4.5 612274743f fix: Ralph panel toggle icon no longer changes erratically
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>
2026-01-20 18:56:55 +01:00
arkonandClaude Opus 4.5 6599ad0600 feat: add close buttons for Ralph tracker and Monitor panels
- 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>
2026-01-20 17:54:59 +01:00
arkonandClaude Opus 4.5 d406ed9a28 fix: update Ralph panel toggle icons
- Collapsed: ◀ (left arrow)
- Expanded: ▲ (up arrow)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 17:49:42 +01:00
arkonandClaude Opus 4.5 2e31db524a feat: UI consistency improvements
- 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>
2026-01-20 17:37:49 +01:00
arkonandClaude Opus 4.5 eda7c0fd6c fix: preserve scroll position when toggling Ralph Wiggum panel
- Save xterm viewport scroll position before toggle
- Restore scroll position after panel expand/collapse
- Refit terminal to new container size after layout change
- Add overflow-anchor: none to prevent browser scroll anchoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 17:24:42 +01:00
arkonandClaude Opus 4.5 3646c3b34a fix: only show Complete status when all todos are done
Previously the Ralph tracker showed "Complete" whenever a completion phrase
was detected, even if tasks were still pending. Now it only shows "Complete"
when all todos are actually marked completed (100%).

Shows "Tracking" when:
- Tracker is enabled with pending tasks
- Completion phrase detected but tasks remain

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 16:05:37 +01:00
arkonandClaude Opus 4.5 1cd68cabaf fix: remove completion celebration animation
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>
2026-01-20 15:57:30 +01:00
arkonandClaude Opus 4.5 23430754a0 fix: render Ralph panel when global tracker setting enabled for new sessions
When the global "Enable Ralph Wiggum Tracker" setting was enabled,
new sessions had the tracker enabled on the server but the panel
wasn't rendered. The inner-config API call happened before
activeSessionId was set, so updateInnerState() didn't trigger
renderInnerStatePanel(). Added explicit call after setting activeSessionId.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 22:18:19 +01:00
arkonandClaude Opus 4.5 3e26a6a18e fix: session restoration now properly attaches to existing screens
- Pass existing screenSession to Session constructor for restored sessions
- Skip terminal buffer clearing when attaching to restored (existing) screens
- Frontend auto-calls /interactive endpoint when selecting a restored session
- Fixes issue where restored sessions appeared broken after server restart

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 19:56:28 +01:00
arkonandClaude Opus 4.5 611815628e fix(ui): improve monitor panel icons and width
- 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>
2026-01-19 19:28:46 +01:00
arkonandClaude Opus 4.5 0d2e1f20a9 feat(ui): hide monitor panel by default and reduce width
- Remove auto-open of monitor panel on startup
- Reduce monitor panel width from 500px to 320px

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 19:24:33 +01:00
arkonandClaude Opus 4.5 e202d0753d feat(ui): add header display settings for font controls, system stats, and token count
- 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>
2026-01-19 19:22:28 +01:00
arkonandClaude Opus 4.5 fc319d8987 feat(ui): add enable/disable toggle for Ralph Wiggum tracker
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>
2026-01-19 18:56:34 +01:00
arkonandClaude Opus 4.5 6a414a2648 feat(ui): make Ralph Wiggum tracker panel detachable
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>
2026-01-19 18:41:14 +01:00
arkonandClaude Opus 4.5 2c38f7924a feat(tracker): disable Ralph Wiggum tracker by default, auto-enable on detection
The InnerLoopTracker is now disabled by default and auto-enables when
Ralph-related patterns are detected:
- /ralph-loop command
- <promise>PHRASE</promise> completion phrases
- TodoWrite tool usage
- Iteration patterns (Iteration 5/50, [5/50])
- Todo checkboxes (- [ ]/- [x]) or indicator icons

This reduces noise for sessions that don't use Ralph loops while
maintaining full functionality when loops are detected.

Changes:
- Add `enabled` property to InnerLoopState type
- Add enable()/disable() methods to InnerLoopTracker
- Implement shouldAutoEnable() for pattern detection
- Update frontend to show "Tracking" status when enabled
- Add CSS for tracking state indicator
- Update CLAUDE.md documentation
- Add comprehensive tests for auto-enable behavior

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 18:34:43 +01:00
arkonandClaude Opus 4.5 7e7bfb66e4 fix(ui): fix case creation not updating dropdown immediately
- 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>
2026-01-19 18:25:31 +01:00
arkonandClaude Opus 4.5 d1a6955931 fix(ui): prevent duplicate loop completion notifications
Add deduplication guard to prevent spamming the same completion toast.
Uses a Set to track shown completions per session, with 30s expiry to
allow re-notification if loop restarts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:22:55 +01:00
arkonandClaude Opus 4.5 684ccc2b07 feat(ralph): enhance Ralph Wiggum loop visualization
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>
2026-01-19 17:09:56 +01:00
arkonandClaude Opus 4.5 085b78c5e3 fix: use writeViaScreen for all programmatic console input
- 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>
2026-01-19 16:39:45 +01:00
arkonandClaude Opus 4.5 17a53c4da2 fix(ui): only show 'session renamed' toast when name actually changes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 15:06:41 +01:00
arkonandClaude Opus 4.5 05322000f3 fix(ui): remove Node.js process references from browser code
process.env.HOME and process.cwd() don't exist in browsers.
Replaced with proper error handling when case path is missing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 15:03:45 +01:00
arkonandClaude Opus 4.5 d412096649 fix(respawn): wait for idle timeout before triggering cycle
- 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>
2026-01-19 15:00:49 +01:00
arkonandClaude Opus 4.5 035ffb42b9 feat(ui): improve respawn duration with preset buttons
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>
2026-01-19 14:37:20 +01:00
arkonandClaude Opus 4.5 ee8f6bd0cb feat: track Ralph Wiggum loops and todo lists in Claude sessions
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>
2026-01-19 13:21:01 +01:00
arkonandClaude Opus 4.5 d711ec8b3a feat: add kickstart prompt and auto-compact context options
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>
2026-01-19 13:08:53 +01:00
arkonandClaude Opus 4.5 66c8f323a8 refactor: remove Step Delay option from respawn UI
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>
2026-01-19 12:52:37 +01:00
arkonandClaude Opus 4.5 ce61a3b2f2 perf: optimize hot paths across server, session, and frontend
- Pre-compile regex patterns (ANSI escape, token parsing) in session.ts
- Optimize SSE broadcast to serialize JSON once for all clients
- Add DOM element caching ($() helper) to avoid repeated getElementById
- Throttle resize observer with dimension change detection
- Use array.join() for session tab HTML building
- Replace DOM-based escapeHtml with regex replacement
- Cache toast container reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 11:48:02 +01:00
arkonandClaude Opus 4.5 23cafd2556 feat: UI improvements - buttons, monitor panel, system stats
- 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>
2026-01-19 10:36:30 +01:00
arkonandClaude Opus 4.5 6a5beb3afa feat: add Kill All button to monitor panel + center close modal
- 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>
2026-01-19 07:57:13 +01:00
arkonandClaude Opus 4.5 c9094e6cf0 fix: send Ctrl+L after tab switch to fix squished Claude display
When switching between Claude session tabs, the terminal buffer was
rendered at a different size than the current terminal. This caused
Claude's banner to appear squished/corrupted.

Changes:
- Remove ANSI regex stripping that was breaking terminal output
- Send Ctrl+L after resize to trigger Claude CLI to redraw at correct size
- Only send Ctrl+L for Claude sessions, not shell sessions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 07:54:30 +01:00
arkonandClaude Opus 4.5 5d1c60fd1a fix: send Ctrl+L after tab switch to fix squished Claude display
When switching between Claude session tabs, the terminal buffer was
rendered at a different size than the current terminal. This caused
Claude's banner to appear squished/corrupted. Sending Ctrl+L after
resize triggers Claude CLI to redraw at the correct dimensions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 07:35:55 +01:00
arkonandClaude Opus 4.5 2cf3d66d0f fix: clear screen initialization blank space after attaching
GNU screen creates blank space at the top when initializing sessions.
This is now handled after attaching to the screen:

- Claude sessions: emit clearTerminal event after 100ms, client clears xterm
- Shell sessions: send 'clear' command after 100ms

Also updates CLAUDE.md with documentation of the fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 07:33:33 +01:00
arkonandClaude Opus 4.5 7979e77924 perf: optimize for long-running Claude sessions
Critical fixes (unbounded growth):
- Add 64KB line buffer limit with 100ms periodic flush in session.ts
- Add task tracker cleanup (max 100 completed tasks)
- Add scheduled runs auto-cleanup after 1 hour
- Fix session leaks in scheduled run iterations

High priority (performance):
- Add SSE event batching (50ms output, 100ms task updates)
- Parallelize screen stats with Promise.all()
- Add 1MB buffer limit to respawn controller

Medium priority (frontend):
- Make xterm scrollback configurable (default 5000)
- Debounce renderSessionTabs() at 100ms

New feature:
- Add CPU and memory usage display in frontend header
- New /api/system/stats endpoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 06:51:25 +01:00
arkonandClaude Opus 4.5 a471920c58 fix: auto-switch to new session now works correctly
Fixed bug where firstSessionId was set when i===1 instead of i===0,
causing it to never be set when creating a single session.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 05:00:21 +01:00
arkonandClaude Opus 4.5 c058395c3e feat: improve UI - larger monitor, cleaner close modal, remove toolbar buttons
- 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>
2026-01-19 04:55:51 +01:00
arkonandClaude Opus 4.5 0245f61c37 feat: add option to keep screen alive when closing tab
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>
2026-01-19 04:47:48 +01:00
arkonandClaude Opus 4.5 ca98b33d6a feat: use w1/w2/s1/s2 naming convention for sessions
- Claude sessions: w1-casename, w2-casename, etc.
- Shell sessions: s1-casename, s2-casename, etc.
- Never reuses numbers - always increments from highest existing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 04:27:57 +01:00
arkonandClaude Opus 4.5 ea9618e281 feat: improve Monitor panel UX and preserve session names
- 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>
2026-01-19 04:22:41 +01:00
arkonandClaude Opus 4.5 34c86488dd fix: hide Background Tasks section in Monitor panel when empty
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>
2026-01-19 04:02:46 +01:00
arkonandClaude Opus 4.5 bf41dab827 feat: UI improvements and E2E testing with agent-browser
- 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>
2026-01-19 03:40:57 +01:00