Fix white scrollbar issue in Tauri dark theme
- Added color-scheme: dark meta tag for native dark scrollbar support
- Implemented ultra-thin (3px) elegant scrollbars globally
- Removed overflow-hidden container that was cutting scrollbar
- Cleaned up redundant CSS scrollbar styling
- Optimized scrollbar appearance for both web and Tauri environments
- Add missing zustand dependency to package.json
- Fix unused variable errors in ToolWidgets.tsx
- Remove invalid 'white' theme comparison in claudeSyntaxTheme.ts
- Add proper TypeScript types to stores using StateCreator pattern
- Add null checks and type casting in Settings.tsx filter operations
- Add onChange handler to Switch component to suppress React warning
- Add 'check' script for TypeScript validation
These changes ensure the TypeScript build passes without errors.
- Add ThemeContext with support for dark, gray, light, and custom themes
- Create theme switching UI in Settings with theme selector
- Add custom color editor for custom theme mode
- Update styles.css with theme-specific CSS variables
- Add theme storage API methods for persistence
- Update syntax highlighting to match selected theme
- Wrap App with ThemeProvider for global theme access
The theming system allows users to switch between predefined themes
or create their own custom theme with live color editing.
Adds a comprehensive slash command system that allows users to create and manage custom commands:
- Backend implementation in Rust for discovering, loading, and managing slash commands
- Support for both user-level (~/.claude/commands/) and project-level (.claude/commands/) commands
- YAML frontmatter support for command metadata (description, allowed-tools)
- Command namespacing with directory structure (e.g., /namespace:command)
- Detection of special features: bash commands (\!), file references (@), and arguments ($ARGUMENTS)
Frontend enhancements:
- SlashCommandPicker component with autocomplete UI and keyboard navigation
- SlashCommandsManager component for CRUD operations on commands
- Integration with FloatingPromptInput to trigger picker on "/" input
- Visual indicators for command features (bash, files, arguments)
- Grouped display by namespace with search functionality
API additions:
- slash_commands_list: Discover all available commands
- slash_command_get: Retrieve specific command by ID
- slash_command_save: Create or update commands
- slash_command_delete: Remove commands
This implementation provides a foundation for users to create reusable command templates and workflows. Commands are stored as markdown files with optional YAML frontmatter for metadata.
Addresses #127 and #134
- Add TodoReadWidget component with multiple view modes (list, board, timeline, stats)
- Implement search and filtering functionality for todo items
- Add export capabilities (JSON and Markdown formats)
- Include rich UI with animations, progress tracking, and interactive elements
- Integrate TodoReadWidget into StreamMessage component for todoread tool support
- Add status indicators, dependency tracking, and completion rate calculations
- Refactor database path handling in agents.rs to initialize paths earlier and make them available to all async tasks
- Add immediate session ID updates to the database when session IDs are extracted
- Implement stop/cancel functionality for running agent sessions in both AgentRunOutputViewer and AgentRunView
- Improve loading states and event listener management in AgentRunOutputViewer
- Add stop button UI controls with proper styling and positioning
- Enhance error handling and logging throughout the agent execution flow
- Add new storage commands module with full CRUD operations
- Implement SQLite database viewer with table browsing, search, and pagination
- Add row editing, insertion, and deletion capabilities
- Include SQL query editor for advanced operations
- Add database reset functionality with confirmation dialogs
- Export storage API methods for frontend integration
- Add storage tab to settings with modern UI components
- Implement comprehensive error handling and loading states
- Add tooltips for truncated content and responsive design
- Include proper TypeScript interfaces for all data structures
This enables users to directly interact with the SQLite database through a
user-friendly interface, providing transparency and control over stored data.
- Fix session ID extraction to use correct field name "session_id" instead of "sessionId"
- Add comprehensive database update logging with error handling
- Implement cross-project session file search in get_session_output
- Add new load_agent_session_history command for robust JSONL loading
- Update UI components to prioritize JSONL file loading over fallback methods
- Improve error handling and logging throughout the session management flow
- Fix BufReader imports and alias conflicts in Tauri backend
This enhances the reliability of agent session tracking and output retrieval
by properly handling Claude Code's actual JSON structure and implementing
better fallback mechanisms for session data access.
- Add trailing border effect to agent and project cards with animated conic gradient
- Fix rotating symbol vertical alignment from text-bottom to middle with position offset
- Implement CSS custom properties for smooth border animation on hover
- Maintain consistent styling across shimmer.css and styles.css files
- Implement regex-based version extraction for more reliable parsing
- Add version detection for bundled sidecar installations with proper execution
- Improve version checking for sidecar binary with timeout and error handling
- Update UI to display version with "v" prefix for consistency
- Add comprehensive logging for version detection debugging
- Handle edge cases in version extraction with fallback mechanisms
- Increase rotating symbol size to 1.5rem for better visibility
- Remove inline size classes in favor of CSS-based sizing
- Add 'claude' command capability alongside 'claude-code' sidecar
- Remove deprecated externalBin configuration from tauri.conf.json
- Standardize rotating symbol styling across components
This improves the visual feedback for loading states and cleans up
the command execution configuration for better flexibility.
- Add slide-in animation to timeline sidebar using framer-motion
- Implement responsive layout adjustments for main content area
- Add proper timeline header with close button
- Fix floating prompt input positioning to accommodate timeline
- Reorder CSS imports for proper style precedence
- Fix animation scaling issue in rotating symbol keyframes
The timeline now slides in from the right with a smooth spring animation
and properly adjusts the main content area width on larger screens.
Remove the screenshot capture system and associated UI components to simplify the codebase.
- Remove screenshot.rs command module and related functionality
- Remove headless_chrome dependency from Cargo.toml
- Update Cargo.lock to reflect dependency changes
- Remove screenshot handlers and UI from WebviewPreview component
- Clean up screenshot-related API calls and imports
- Remove camera icon and capture controls from preview interface
This reduces bundle size and eliminates an underutilized feature.
Add comprehensive remote repository synchronization workflow to git commit bot:
- Implement git fetch and status checking before committing
- Add automatic pull and merge conflict resolution procedures
- Include detailed merge conflict handling instructions
- Ensure local repository is up-to-date before proceeding with commits
This enhancement improves the reliability of the git commit bot by preventing
conflicts and ensuring proper synchronization with remote repositories.
- Add prompt queue to handle multiple prompts when Claude is processing
- Improve session reconnection with better event listener management
- Fix race conditions in session initialization and cleanup
- Replace Loader2 with rotating symbol for consistent loading states
- Remove TokenCounter integration and loading-disabled input restrictions
- Enhance cancellation logic with proper state cleanup
- Update thinking mode phrase formatting in FloatingPromptInput
- Improve UI layout with better spacing and error positioning
This enables users to queue multiple prompts without waiting for the current
one to complete, providing a smoother interaction experience.
- Cross-check database running sessions with actual process registry
- Filter out stale database entries for crashed processes without cleanup
- Add comprehensive comments explaining the reliability improvements
- Fix sticky header z-index layering issue in AgentExecution component
This addresses cases where agent processes crash without properly updating
the database status, ensuring the UI shows only truly active sessions.
Resolves#87 and #9 by implementing a robust three-tier process
termination approach:
1. ProcessRegistry kill - primary method using run_id tracking
2. ClaudeProcessState kill - fallback via stored process handle
3. System kill command - last resort using PID and OS commands
Key improvements:
- Enhanced logging throughout termination flow for better debugging
- Graceful fallback between termination methods
- Proper UI state management even when backend termination fails
- Track run_id in AgentExecution component for targeted process killing
- Comprehensive error handling with user-friendly feedback
- Consistent event emission for UI synchronization
This ensures agents can be properly stopped without requiring
application restart, addressing the core issue where STOP
requests were ignored and processes continued running.
This comprehensive update adds support for resumable Claude Code sessions that can run in the background and be resumed later. Key improvements include:
Backend enhancements:
- Enhanced ProcessRegistry to track both agent runs and Claude sessions
- Added new Tauri commands: list_running_claude_sessions, get_claude_session_output
- Improved Claude process management with proper session ID extraction and lifecycle handling
- Enhanced cancellation logic with registry-based process killing and fallback mechanisms
- Added live output capture and storage for session persistence
Frontend improvements:
- New RunningClaudeSessions component to display and manage active sessions
- Added streaming state management and session tracking in App component
- Implemented navigation protection when Claude is actively streaming
- Enhanced ClaudeCodeSession component with streaming callbacks and session management
Configuration updates:
- Updated .gitignore to exclude documentation files (AGENTS.md, CLAUDE.md, *_TASK.md)
This feature enables users to start Claude sessions, navigate away while Claude continues processing, and resume sessions later from the Projects view, significantly improving the user experience for long-running AI interactions.
- Add WebSearchWidget for displaying search results with collapsible sections and clickable links
- Enhance GrepWidget with improved result parsing, visual design, and structured display
- Replace external links in GitHubAgentBrowser with Tauri shell integration for desktop security
- Update StreamMessage to support WebSearch tool rendering
- Add ReactMarkdown support for rich text display in search results
Add comprehensive thinking mode selection with 5 levels (Auto, Think, Think Hard, Think Harder, Ultrathink) to the FloatingPromptInput component. Features include:
- New ThinkingModeIndicator component with visual level bars
- Thinking mode picker with tooltips and descriptions
- Automatic phrase appending to prompts based on selected mode
- Brain icon integration and enhanced UI layout
- State management for thinking mode selection
This enhancement allows users to control Claude's reasoning depth directly from the prompt interface.
- Remove debug console.log from StreamMessage component
- Simplify ThinkingWidget by removing unused signature parameter
- Update ThinkingWidget color scheme from purple to gray for subtlety
- Add italic styling to thinking content for better visual distinction
- Trim whitespace from thinking content display
- Streamline ThinkingWidget layout by removing unnecessary prose wrapper
- Add ThinkingWidget component for displaying AI reasoning content in collapsible interface
- Improve session initialization by removing redundant event listener and enhancing ID extraction
- Enhance StreamMessage component to handle diverse content structures and thinking content
- Add comprehensive debug logging for better message structure understanding
- Fix cost display logic to handle both cost_usd and total_cost_usd fields
- Refactor user message rendering to support both nested and direct content structures
- Remove Rust linter step from CI workflow to speed up builds
- Remove unused gaol dependency from Cargo.toml
- Update windows-sys dependency to 0.60.2 in Cargo.lock
This simplifies the build process and reduces unnecessary dependencies
while maintaining core functionality.
- Remove Rust formatting check from CI workflow since formatting is now applied
- Standardize import ordering and organization throughout codebase
- Fix indentation, spacing, and line breaks for consistency
- Clean up trailing whitespace and formatting inconsistencies
- Apply rustfmt to all Rust source files including checkpoint, sandbox, commands, and test modules
This establishes a consistent code style baseline for the project.
- Replace platform-specific icon formats (icns, ico) with single icon.png
- Add icon_template.ico for development reference
- Streamlines build process across platforms
- Add detailed documentation for CC Agents feature
- Include agent catalog with Git Commit Bot, Security Scanner, and Unit Tests Bot
- Document import/export functionality and file format specifications
- Provide technical implementation details for backend and frontend
- Add contributing guidelines for community agent development
- Include visual elements with badges and structured tables for better UX
- Add conditional compilation for Unix-specific gaol sandbox functionality
- Implement Windows-compatible SandboxExecutor with no-op sandboxing
- Update ProfileBuilder to handle both Unix and Windows platforms
- Add platform-specific dependency declaration for gaol crate
- Modify agent and claude commands to use appropriate sandbox implementation
- Update test modules with conditional compilation for Unix-only tests
- Ensure graceful degradation on Windows with logging warnings
This change enables the application to build and run on Windows while
maintaining full sandbox security on Unix-like systems.
- Remove obsolete migrate_agent_runs_to_session_ids function from agents commands
- Add trailing empty line removal logic to ReadResultWidget for cleaner code display
- Improve code presentation consistency in UI components
- Add GitHub Actions workflow for automated build testing
- Support multi-platform builds (Linux, Windows, macOS)
- Include Rust formatting and linting checks
- Add Bun frontend build and caching
- Implement concurrency cancellation for efficiency
- Add build artifact upload on failure for debugging
- Include PR status comments with build results
This commit provides a comprehensive solution to Claude binary detection issues
by implementing a user-friendly version selector UI and improving the binary
discovery logic. It addresses all concerns raised in multiple PRs and comments.
Changes:
- Add ClaudeVersionSelector component for selecting from multiple installations
- Update ClaudeBinaryDialog to use version selector instead of manual path input
- Fix unused variable warning in production builds (claude.rs:442)
- Improve select_best_installation to handle production build restrictions
- Add listClaudeInstallations API endpoint to fetch all available installations
- Make Claude version indicator clickable to navigate to Settings
- Move Claude installation selector to General tab in Settings (per user request)
- Enhance dialog UX with loading states and clear installation instructions
- Add Radix UI radio-group dependency for version selector
Fixes:
- Production build warning about unused claude_path variable
- Version detection failures in production builds due to process restrictions
- Poor UX when Claude binary is not found (now shows helpful dialog)
- Inability to easily switch between multiple Claude installations
This implementation takes inspiration from:
- PR #3: Version selector dropdown approach (preferred by users)
- PR #4: Binary detection improvements and path validation
- PR #39: Additional detection methods and error handling
- Commit 5a29f9a: Shared claude binary detection module architecture
Addresses feedback from:
- getAsterisk/claudia#4 (comment): User preference for dropdown selector
- Production build restrictions that prevent version detection
- Need for better error handling when Claude is not installed
The solution provides a seamless experience whether Claude is installed via:
- npm/yarn/bun global installation
- nvm-managed Node.js versions
- Homebrew on macOS
- System-wide installation
- Local user installation (~/.local/bin, etc.)
Refs: #3, #4, #39, 5a29f9a
- Add run_id/session_id based event isolation for concurrent executions
- Enhance process registry with graceful shutdown and fallback kill methods
- Implement session-specific event listeners in React components
- Add proper process cleanup with timeout handling
- Support both isolated and backward-compatible event emissions
- Improve error handling and logging for process management
This change prevents event crosstalk between multiple concurrent agent/claude sessions
running simultaneously, ensuring proper isolation and user experience.
Restructure AgentExecution component layout to enhance user experience:
- Make header and configuration sections sticky to remain visible during scrolling
- Optimize scrollable output display area with proper overflow handling
- Improve container structure for better layout management and responsiveness
- Maintain existing functionality while providing better visual organization
- Add AgentRunOutputViewer modal component for inline run preview
- Implement IconPicker component with expanded icon selection
- Refactor AgentRunsList to use modal instead of full-page navigation
- Improve CreateAgent form layout with better grid structure
- Update agent icon system to support wider range of icons
- Enhance UI components with better animations and styling
- Add scroll-area component for better content scrolling
- Remove unused AgentRunView in favor of modal approach
- Refactor message filtering logic across AgentExecution, ClaudeCodeSession, SessionOutputViewer, and StreamMessage components to better handle visibility of user messages with tool results
- Replace inefficient every() loop with for-loop for better performance when checking message content visibility
- Add renderedSomething tracking in StreamMessage to prevent rendering empty components
- Optimize SessionOutputViewer with useMemo for displayableMessages filtering
- Remove unused GitHub API response fields (url, html_url, git_url) in Rust agents command
- Add Vite build configuration with manual code splitting for better bundle optimization
- Remove TypeScript expect-error comment for process global variable
These changes improve UI performance by reducing unnecessary re-renders and bundle size through better code splitting.
Introduces a dedicated module for detecting Claude Code binary installations
with support for multiple sources including NVM, aliased paths, and
version-based selection. This shared module improves the reliability of
finding Claude installations across different environments.
Key features:
- Supports multiple installation sources (NVM, system, homebrew, npm, yarn, bun)
- Handles aliased paths from 'which' command
- Version-aware selection to prefer latest installations
- Database caching of discovered binary paths
- Comprehensive logging for debugging
- Environment variable preservation for NVM compatibility
The implementation is inspired by:
- https://github.com/getAsterisk/claudia/pull/3
- https://github.com/getAsterisk/claudia/pull/4
- Remove empty cc_agents file that was previously added
- Add cc_agents directory containing three agent configuration templates:
- git-commit-bot: Automated git commit message generation
- security-scanner: SAST security vulnerability detection
- unit-tests-bot: Comprehensive unit test generation
- Each agent includes detailed system prompts and workflow configurations
- Templates are exported in .claudia.json format for easy import
This change provides ready-to-use agent templates for common development workflows.
The README incorrectly stated the project was licensed under MIT,
while the LICENSE file contains AGPL. This commit updates the README
to accurately reflect the AGPL license used by the project.
Fixes#30Fixes#33
- Add onLinkDetected callback prop
- Integrate with URL detection system
- Support enhanced message types from upstream
Enables automatic detection of URLs in Claude's responses
and terminal command outputs.
- Replace static rendering with @tanstack/react-virtual
- Optimize rendering for long conversation histories
- Maintain smooth auto-scroll behavior
- Integrate with enhanced message system from upstream
Significantly improves performance when handling extensive
agent execution outputs and long Claude sessions.
- Add imperative handle for programmatic image attachment
- Expose addImage() method via React ref
- Support screenshot integration from preview pane
Enables automatic attachment of screenshots to Claude prompts.
- Detect URLs including localhost addresses in terminal output
- Support for various URL formats and localhost patterns
- Provide utilities to make links clickable
Automatically detects when development servers start and offers
to open them in the preview pane.
- Implement WebviewPreview component with browser-like navigation
- Add headless Chrome integration for capturing screenshots
- Create split-pane component for side-by-side layout
- Add dialog for URL detection prompts
Allows users to preview web applications and capture screenshots
directly into Claude prompts for better context sharing.
- Add headless_chrome for screenshot functionality
- Add @tanstack/react-virtual for performance optimization
- Add @radix-ui/react-tooltip for UI components
- Update Tailwind CSS to v4 with new build tools
- Add ImagePreview component for displaying embedded image thumbnails
- Enable drag-and-drop functionality for images in FloatingPromptInput
- Configure Tauri asset protocol to properly serve local image files
- Support image mentions via @path syntax in prompts
- Add visual feedback for drag hover states
- Implement full-size image preview dialog with navigation
- Handle duplicate images and limit preview to 10 thumbnails