- Add template variable system with substitution for session, project,
date/time, and git context (e.g., {{SESSION_NAME}}, {{GIT_BRANCH}})
- Display collapsible template variables documentation in AI Commands panel
- Update default /commit command to include {{CLAUDE_SESSION_ID}} for traceability
- Add tag icon indicator for sessions with custom (user-defined) names
- Improve Git Log Viewer date formatting (time for today, full date for older)
- Improve Git Log search UX with better focus handling
- Change Agent Sessions Browser default search mode to 'all'
- Update README with custom AI commands documentation
- Add template variable file reference to CLAUDE.md
Session: 35b88ae2-fc1a-44de-a1a1-4b0f0f5a14f9
Messages sent while the AI is busy are now queued and automatically
processed when the current task completes. Features include:
- Queue display in terminal output with "QUEUED" separator
- Ability to remove individual queued messages via UI
- Blocks slash commands and session clearing while queue has items
- Sequential processing of queued messages on agent exit
Updated README.md and CLAUDE.md to document the new feature.
- Add real-time token usage and cost tracking from Claude Code responses
- New UsageStats type with tokens, cost, and context window
- Context window tooltip shows detailed token breakdown
- Cost displayed in main panel header and session list
- Improve input area UX with $ prefix for terminal mode
- Add Cmd+L shortcut to insert markdown checkbox in Scratchpad
- Add terminalOnly flag for slash commands (/jump is terminal-only)
- Disable LLM Settings panel behind feature flag (documented in BACKBURNER.md)
- Fix AgentSessionsBrowser to use layer stack for Escape handling
- Update README with cost tracking feature and keyboard shortcut
- Update CLAUDE.md with process:usage event and usageStats session field
- Add Option/Alt+Up/Down for page up/down scrolling (viewport height)
- Switch to instant scrolling via Virtuoso for better responsiveness
- Update docs with new keyboard shortcuts
- Add AgentSessionsBrowser component to browse and resume Claude Code sessions
- New IPC handlers for claude:listSessions, readSessionMessages, searchSessions
- Read sessions from ~/.claude/projects/ with lazy loading and search
- Add Cmd+Shift+L shortcut to open agent sessions browser
- Improve shell path resolution using 'which' command with fallbacks
- Source ~/.zshrc and ~/.bashrc before running terminal commands
- Add /jump slash command to navigate to CWD in file tree
- Update documentation with new features and API
- Store onClose callbacks in refs to avoid unnecessary layer
re-registration when parent components re-render
- Applied pattern to GitDiffViewer and SettingsModal
- Updated CLAUDE.md documentation with ref pattern best practice
- Added void to async closeTopLayer call to satisfy linting
Added detailed documentation for the new layer stack system in the 'Key Design
Patterns' section of CLAUDE.md, including:
- Problem statement and architecture overview
- Complete modal priority hierarchy table
- Step-by-step guide for adding new modals with code examples
- Layer type definitions (ModalLayer, OverlayLayer)
- Internal search layer handling patterns
- Performance optimization patterns
- ARIA accessibility requirements
- Debugging instructions for development mode
This documentation provides future developers with clear guidance on:
1. How to integrate new modals with the layer stack
2. How to choose appropriate priority values
3. How to handle internal search/overlay states
4. How to use the dev tools for debugging
5. Benefits of the centralized system over the old approach
Total addition: ~150 lines of comprehensive, example-rich documentation.
Keyboard Navigation:
- Add focus restoration when LogViewer closes to ensure hotkeys work
- Fix useEffect dependencies for keyboard event handlers
- Enhance left arrow in file explorer to navigate to parent folders
- Add auto-scroll to keep selected file visible in file tree
UI Improvements:
- Add visual log history timeline in LogViewer showing log distribution
- Improve escape key handling with stopPropagation
- Add data attributes for file tree items to support scrollIntoView
Maintenance:
- Clean up outdated CLAUDE.md sections (Development Phases, Recent Features)
- Add session status indicators with color-coding (green/yellow/red/orange)
to provide clear visual feedback on agent connection states
- Remove superfluous startup messages from AI and Command Terminals for
cleaner interface on session creation
- Add Cmd+Shift+M shortcut to quickly move sessions to groups
- Standardize terminology across codebase (AI Terminal, Command Terminal,
Left Bar, Right Bar, Main Window, System Log Viewer)
- Update CLAUDE.md and README.md with comprehensive UI overview and
standardized vernacular for better communication and documentation
Added new themes:
- Dark mode: Catppuccin Mocha, Gruvbox Dark
- Light mode: Catppuccin Latte, Ayu Light (medium-darker, less bright)
Changes:
- Reorganized themes.ts with dark themes first, then light themes for better tab ordering
- Updated ThemeId type to include new theme identifiers
- Updated CLAUDE.md to reflect theme location and list all available themes
- Added missing accentText field to theme structure documentation
The light mode themes (Catppuccin Latte and Ayu Light) provide softer, less bright alternatives to the existing bright light themes like GitHub and Solarized.
Theme picker now displays themes in a logical left-to-right, top-to-bottom order in the 2-column grid layout.
Added a new GitStatusWidget component that displays real-time file change tracking:
- Shows counts of additions (green +), deletions (red -), and modifications (orange)
- Positioned in header between LIVE button and Context Window progress bar
- Hover tooltip displays list of all changed files with status indicators
- Click opens modal overlay showing full git diff
- Auto-refreshes every 5 seconds to detect new changes
- Only appears when session is in a Git repository
- Escape key or backdrop click closes diff preview
Implementation details:
- Created GitStatusWidget.tsx component with git status polling
- Updated git service to parse porcelain format output and support full diffs
- Integrated widget into MainPanel.tsx with keyboard controls
- Added comprehensive documentation in CLAUDE.md
Fixes wishlist item PED-TRACK-GIT
Implement separate Enter-to-send configurations for AI and Terminal modes:
- AI mode defaults to Command+Enter to send (Enter creates new line)
- Terminal mode defaults to Enter to send (Shift+Enter creates new line)
- Each mode configurable independently in Settings → General → Input Send Behavior
- Settings persist globally across all sessions and app restarts
Changes:
- Split enterToSend into enterToSendAI and enterToSendTerminal in useSettings hook
- Updated App.tsx, MainPanel, and InputArea to use mode-specific settings
- Added UI controls in SettingsModal General tab with clear toggle buttons
- Implemented migration logic for old enterToSend setting
- Updated CLAUDE.md documentation with new settings and feature description
This allows users to optimize input behavior for different interaction patterns,
e.g., using Command+Enter for thoughtful AI prompts while using Enter for
quick terminal commands.
Implemented Cmd+. keyboard shortcut to jump to the input field from anywhere
in the main interface (excluding modals). This improves keyboard navigation by
providing a quick way to return focus to the input area.
Changes:
- Added 'focusInput' shortcut to DEFAULT_SHORTCUTS with Cmd+. keys
- Implemented keyboard handler in App.tsx to focus input and switch to main panel
- Shortcut is fully configurable in Settings → Shortcuts
- Updated CLAUDE.md to document the new shortcut in keyboard navigation patterns
- Added to Recent Features section in CLAUDE.md
The shortcut works from any focus area including sidebar, output window,
file tree, and right panel tabs.
Users can now select their preferred terminal shell (zsh, bash, sh, fish, tcsh) in General Settings.
Key features:
- Automatic detection of available shells on the system using 'which' or 'where' command
- Only available shells are shown as selectable options in settings UI
- Settings persist across application restarts via electron-store
- Selected shell applies to all new terminal sessions
- Default shell remains zsh for compatibility
Changes:
- Added ShellDetector utility for shell detection via PATH
- Updated ProcessManager to accept and use custom shell parameter
- Added defaultShell setting to electron-store with persistence
- Created shell selector UI in General Settings tab with visual feedback
- Updated IPC handlers to support shells:detect
- Updated preload API to expose shells detection
- Updated CLAUDE.md documentation with new feature
- Marked PED-CUSTOM-SHELL as completed in wishlist
Introduces an extensible slash command framework with autocomplete UI and
completely redesigns terminal output for better visual hierarchy and readability.
New Features:
- Slash commands system with autocomplete dropdown
- Type `/` to open command menu with arrow key navigation
- Tab/Enter to select, Escape to dismiss
- Extensible architecture in src/renderer/slashCommands.ts
- Initial command: /clear to clear output history
Terminal Output Redesign:
- Vertical layout with timestamp at top
- User commands highlighted with $ prefix and accent background
- System messages with sparkle icon indicator
- Improved text wrapping (break-words instead of break-all)
- Better filtering of terminal initialization noise
- Removes bash/zsh welcome messages
- Filters control sequences and prompt lines
UI/UX Improvements:
- Command history deduplication for cleaner history menu
- Session filter moved to SessionList component for better organization
- File tree filter Tab key now focuses tree for keyboard navigation
- Slash command autocomplete with mouse hover support
Documentation:
- Added slash commands section to README.md with usage instructions
- Updated keyboard shortcuts to include slash command navigation
- Added slash commands system architecture to CLAUDE.md
- Updated Recent Features section with detailed feature descriptions
Major architectural improvement where each session now runs two processes
simultaneously (AI agent + terminal), enabling seamless mode switching
without process restarts.
Changes:
- Dual-process model: each session spawns both AI agent and terminal processes
- Session type updated: replaced single `pid` with `aiPid` and `terminalPid`
- Process routing: sessionIds now use `-ai` and `-terminal` suffixes
- Input routing: directs input to correct process based on `inputMode`
- ANSI rendering: terminal output now displays ANSI escape codes with theme-aware colors
- Terminal filtering: bash prompts automatically filtered for cleaner output
- Session restoration: detects and fixes corrupted sessions with mismatched inputMode/toolType
- Agent serialization: strips non-serializable `argBuilder` functions before IPC
- Dependencies: added ansi-to-html and dompurify for secure ANSI rendering
Documentation updates:
- Updated README.md and CLAUDE.md to reflect dual-process architecture
- Added new features to Recent Features section
- Updated tech stack with new dependencies