Parse and display the subagent_type field from Claude Code's Task tool
calls to show specific agent names (e.g., "codebase-analyzer") instead
of the generic "Task" label. This brings the WUI display in line with
how Claude Code presents named subagents.
- Show subagent_type in main event display when available
- Display subagent names in task group headers
- Include subagent names in collapsed task previews
- Maintain backward compatibility for tasks without subagent_type
Fixes ENG-1893
Adds a help icon button to the status bar that opens the keyboard shortcuts
panel, improving discoverability of the existing '?' hotkey functionality.
The button displays a tooltip indicating it shows keyboard shortcuts and
maintains consistent styling with other status bar buttons.
Fixes#449
- Create mcp.ts with claude_approvals command for local daemon integration
- Register MCP command in index.ts
- Uses daemon RPC instead of HumanLayer API for approval management
Resolves issue #443 where meta+enter keyboard shortcut only worked from
the prompt textarea. Now works consistently from title, directory, and
prompt fields by moving keyboard handling to the modal level.
- Add global meta+enter handler at SessionLauncher modal level
- Remove input-specific keyboard handler from CommandInput textarea
- Update visual hints to show shortcut on Launch button
- Clean up footer hints for consistency
- Update OpenAPI spec to support both stdio and HTTP MCP server configurations
- Add type, url, and headers fields for HTTP servers alongside existing stdio fields
- Update mapper to handle optional fields for both server types
- Remove 5-minute timeout from MCP approval handler for better session resumption
- Configure WUI to use HTTP MCP server endpoint instead of stdio npx command
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enable the 'i' key to close the ToolResultModal for a true toggle experience.
This allows users to navigate sessions with one hand - j/k for scrolling
and 'i' to toggle the modal open/closed, without reaching for ESC.
- Add 'i' hotkey handler to close modal when open
- Update footer hint to show "i or ESC to close"
- Keep query persistence feature from upstream
- Preserve title field functionality from feature branch
- Remove redundant query field from config object
NB - SOME TEST IS STALLING OUT RIGHT NOW! Needs a timeout/failure or something.
- Add console.debug logging in WUI to track tool_use_id in approval events
- Update CLAUDE.md documentation for test commands
- Use updateSession instead of updateSessionOptimistic in Layout when receiving server data
- Fix stale closure issue in meta+y hotkey by reading current state directly from store
- Ensures bypass permissions toggle always uses the most current session state
Prevents loss of draft prompts when users accidentally close the launcher
by saving the query text to localStorage on every keystroke. The draft
is restored when the launcher reopens and cleared only after successful
session launch.
- Save draft to localStorage on every query change
- Restore draft when launcher reopens (via 'c' shortcut or Cmd+K)
- Clear draft only after successful session creation
- Preserve draft on errors for retry attempts
- Follow existing ResponseInput localStorage pattern for consistency
Enables quick submission of the bypass permissions dialog using meta+Enter (Cmd+Enter on Mac, Ctrl+Enter on Windows/Linux). The shortcut respects validation rules and only submits when the form is valid. Visual indicator shows the keyboard shortcut next to the submit button when enabled.
- Kept debugLogSnapshotFailure function and logger import uncommented
- Function invocation remains commented in catch block
- Added proper ESLint and TypeScript ignore comments for unused function
- Cleaner approach that keeps debug code readily available
- Commented out entire debug function as block comment
- Logger import also commented to avoid unused import
- Clean approach that preserves debug code for future use
- All checks now pass (lint, typecheck, format)
- Created debugLogSnapshotFailure helper function with original logging logic
- Commented out just the function invocation instead of entire code block
- Kept logger import active for potential future use
- Cleaner approach that preserves debug capability without code clutter
- Hide 'Brainrot Mode' until user types 'brain' in search
- Show context-aware 'Archive'/'Unarchive' label based on session state
- Improves UI clarity and reduces clutter in command palette
- Add title field to CreateSession API endpoint
- Update SDK and client libraries to support title parameter
- Add title input to UI session launcher
- Add --title flag to CLI launch command
- Store and display custom titles instead of using query as title
- Fix claudecode-go to pass query as positional argument with --print flag
- Allow failed sessions with claude_session_id to be resumed in backend
- Add debug logging for failed session resumption attempts
- Update integration tests to match new behavior allowing failed sessions
- Remove unnecessary session status restrictions in frontend components
The archivedOnly parameter was not being passed from the HTTP client
adapter to the underlying SDK, causing archive view to show all sessions
instead of just archived ones. This regression was introduced in 436e4a1
when the previous fix from PR #394 was inadvertently reverted.
- Fix session ID extraction from assistant/user messages
- Process token updates even without Claude session ID
- Skip incorrect cumulative token counts from result events
- Update UI to reflect real-time token changes in active session
- Publish token update events to keep UI in sync
The API sends result events with cumulative cache read tokens that incorrectly accumulate across the entire session. This fix only trusts token counts from individual assistant messages which are accurate.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Kept upstream's migration 12 for model_id column
- Moved token tracking fields to migration 13
- Regenerated server.gen.go from OpenAPI spec
- All GetSession queries already include model_id field
* Add model_id to stored session fields
* feat(wui): add stacked cards component and demo
Create a reusable StackedCards component inspired by Sonner's toast stacking,
with smooth animations for card dismissal and stack reorganization.
- Add StackedCards component with configurable gap and visible card count
- Implement smooth scale and translate animations for stacking effect
- Create demo page at /demo/stacked_cards with interactive controls
- Cards stack with negative Y offset to show peeking effect
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: Add database info to debug panel with improved layout
- Add REST API endpoint /api/v1/database-info to expose SQLite stats
- Implement GetDatabaseInfo handler with file size, counts, and metadata
- Add helper methods to SQLiteStore for session/approval/event counts
- Update debug panel with wider grid layout (max-w-3xl)
- Display database path, size, table counts, and statistics in organized grid
- Add copy button for database path
- Remove unused RPC implementation in favor of REST endpoint
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* post cherry-pick regen
* Couple additional goodies from 166411c4a6
* mct; includes fix for permission_denials
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Add proper escape key handling to back out of modals and session detail view
- Fix ESC key in bypass permissions dialog to blur input instead of closing modal
- Implement hotkey scope stealing for modals to prevent background hotkey conflicts
- Add SessionDetailHotkeysScope to all session detail hooks for proper scope management
- Prevent modal stacking by checking active scopes before opening modals (alt+y, cmd+y)
- Fix tool result modal scope cleanup to prevent stuck states blocking global hotkeys
- Improve escape key cascade: blur inputs → clear confirmations → unfocus → close view
- Handle escape key properly when fork view and other modals are open
- Clean up debug logging from development
- Track input, output, cache creation, and cache read tokens in sessions
- Calculate and store effective context tokens (sum of all token types)
- Add context limit management with default of 168k tokens
- Display token usage badge in UI with visual warnings at 60% and 90%
- Update OpenAPI spec and regenerate TypeScript SDK types
- Add database migrations for new token tracking columns