* feat: add terminal copy/paste keyboard shortcuts for Windows/Linux Implement smart copy/paste keyboard shortcuts in terminal emulator: - Smart CTRL+C: copies selected text or sends ^C interrupt if no selection - CTRL+V paste: pastes clipboard contents on Windows/Linux - Linux CTRL+SHIFT+C/V: alternative copy/paste shortcuts for Linux - Platform detection: correctly identifies Windows/Linux/macOS - Preserves all existing shortcuts (Ctrl+T, Ctrl+W, Ctrl+1-9, etc.) Implementation details: - Added platform detection constants (isMac, isWindows, isLinux) - Smart copy handler checks xterm.hasSelection() before copying - Uses xterm.paste() for proper encoding handling - Includes error handling for clipboard API failures - Handler ordering preserves all existing keyboard shortcuts Tests added: - Unit tests for keyboard event handlers (9/19 passing) - Integration tests for xterm.js + clipboard API - E2E tests for copy/paste flows (platform-specific) Fixes #38 - Terminal copy/paste not working on Windows 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: resolve test failures for terminal copy/paste functionality - Fixed global XTerm mock setup to not interfere with test-specific mocks - Fixed 19 failing tests in useXterm.test.ts by adding proper DOM rendering - Fixed 7 failing tests in terminal-copy-paste.test.ts with same pattern - Added missing Mock type import for TypeScript compatibility Test Changes: - Replaced arrow functions with regular functions for mock constructors - Added ResizeObserver mock for browser API compatibility - Created wrapper components with proper DOM rendering - Used render() with act() instead of just renderHook() - Fixed type assertions (vi.Mock → Mock) All tests now pass (1297 passed, 6 skipped) Typecheck passes Lint passes (warnings only) * refactor: fix linting issues in terminal copy/paste test files E2E Test Changes (terminal-copy-paste.e2e.ts): - Removed unused imports (_android from Playwright, writeFileSync from fs) - Added global Navigator declaration for clipboard typing - Replaced (window as any) with typed navigator.clipboard calls - Removed dead helper functions (getCopyShortcutModifier, getPasteShortcutModifier) - Replaced relative Electron path with absolute path using __dirname - Renamed caught error 'e' to '_error' to satisfy lint rules Integration Test Changes (terminal-copy-paste.test.ts): - Removed unused renderHook import - Added process.platform restoration in afterEach cleanup - Fixed console error spy to safely coerce args[0] with String() Unit Test Changes (useXterm.test.ts): - Created reusable _createXTermMock factory function - Updated test to use TestWrapper pattern consistently - Added process.platform restoration in afterEach - Fixed test assertion (hasSelection: false) for Windows CTRL+SHIFT+C test All tests pass (1297 passed, 6 skipped) Typecheck passes Lint passes (warnings only) * fix: replace process.platform with navigator.platform for renderer compatibility Critical fix for runtime error: "process is not defined" in browser/renderer process. Core Changes (useXterm.ts): - Replaced process.platform (Node.js global) with navigator.platform (browser API) - Platform detection now uses: navigator.platform.toLowerCase() - isMac: navigatorPlatform.includes('mac') - isWindows: navigatorPlatform.includes('win') - isLinux: navigatorPlatform.includes('linux') Test Updates: - Integration tests: Updated to mock navigator.platform instead of process.platform - Added beforeEach/afterEach for proper cleanup - Removed redundant inline cleanup code - Added platform mocks where needed for Windows/Linux paste handler tests - Unit tests: Updated all process.platform references to navigator.platform - Changed originalPlatform to originalNavigatorPlatform - Updated afterEach to restore navigator.platform - Changed platform values: 'win32' → 'Win32', 'darwin' → 'MacIntel', 'linux' → 'Linux' - Removed unused _createXTermMock helper function E2E Test Improvements: - console.log → console.warn for clipboard accessibility message - Improved interrupt signal assertion: toMatch(/\^C|[$#>]\s*$/) All tests pass (1297 passed, 6 skipped) Typecheck passes Lint passes (warnings only) * fix: prevent double-paste by calling event.preventDefault() Fixed issue where pasted text appeared twice in the terminal. Root cause: When Ctrl+V was pressed: 1. Browser's default paste behavior was triggered 2. Our handler also called xterm.paste() Fix: Added event.preventDefault() to both paste handlers: - CTRL+V (Windows/Linux) - CTRL+SHIFT+V (Linux alternative) This prevents the browser's default paste behavior, ensuring only xterm.paste() handles the pasting operation once. Tests still pass (26 passed) * fix: resolve unreachable Linux handlers and improve test reliability Critical Fix (useXterm.ts): - Fixed unreachable CTRL+SHIFT+C/V handlers for Linux - Root cause: Regular CTRL+C/V handlers checked isMod && key, which matched even when SHIFT was pressed, preventing Linux-specific handlers from ever executing - Fix: Reordered checks to handle Linux shortcuts BEFORE regular shortcuts and added !event.shiftKey to regular copy/paste handlers E2E Test Improvements (terminal-copy-paste.e2e.ts): - Replaced fixed sleeps (waitForTimeout) with condition-based waits - Removed try/catch + test.skip anti-pattern, replaced with upfront precondition checks Unit Test Improvements (useXterm.test.ts): - Replaced trivial platform detection tests with comprehensive behavior tests - Added 4 new tests verifying platform-specific keyboard handling Test Results: 1298 passed, 6 skipped * refactor: extract XTerm mock setup into helper function Extract repeated XTerm mock setup code into a reusable setupMockXterm() helper function. This reduces test boilerplate from ~100 lines to ~20 lines per test while maintaining identical test coverage and behavior. Changes: - Added setupMockXterm() helper function that handles all mock initialization - Refactored all 20+ tests in useXterm.test.ts to use the helper - Significantly improved code readability and maintainability * fix(e2e): replace invalid toMatch() with toContainText() in terminal test Replace invalid Playwright locator assertion `toMatch()` with valid `toContainText()` assertion. The `toMatch()` method does not exist for Playwright locators; `toContainText()` is the correct matcher for checking text content with regex patterns. * refactor: extract copy/paste helpers and fix CTRL+SHIFT+C behavior Address PR review feedback: 1. [MEDIUM] Extract copy/paste helper functions - Added handleCopyToClipboard() helper to eliminate duplicate copy logic - Added handlePasteFromClipboard() helper to eliminate duplicate paste logic - Both handlers now use shared helper functions 2. [MEDIUM] Fix CTRL+SHIFT+C without selection on Linux - Changed from returning true (let event pass through) to returning false (consume event) - CTRL+SHIFT+C won't send proper interrupt signal, so consuming is correct behavior 3. [LOW] Add comment for isMac variable - Added comment explaining isMac is declared for documentation purposes Related: #038-terminal-copy-paste-is-not-working-on-windows * refactor: remove unused isMac variable Remove the unused isMac variable since it's not referenced in any conditional logic. The code already excludes macOS by only enabling custom paste handlers for Windows and Linux (isWindows || isLinux). Related: #038-terminal-copy-paste-is-not-working-on-windows * fix(e2e): remove non-existent electron.executablePath() API call Remove the executablePath parameter from electron.launch() to match the pattern used in other E2E tests (flows.e2e.ts, electron-helper.ts). * refactor(terminal): fix platform detection and clarify comments - Replace deprecated navigator.platform with navigator.userAgentData.platform with fallback to navigator.platform for older browsers - Add TypeScript type augmentation for NavigatorUAData interface - Fix misleading comment in handleCopyToClipboard to clarify return value semantics (true = copy attempted, false = no selection) - Add requestAnimationFrame mock to useXterm test for jsdom environment Fixes review findings for terminal copy/paste feature. --------- Co-authored-by: StillKnotKnown <stillknotknown@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Andy <119136210+AndyMik90@users.noreply.github.com>
Auto Claude
Autonomous multi-agent coding framework that plans, builds, and validates software for you.
Download
Stable Release
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.2-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.2-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.2-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.2-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.2-linux-amd64.deb |
Beta Release
⚠️ Beta releases may contain bugs and breaking changes. View all releases
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.2-beta.10-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.2-beta.10-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.2-beta.10-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.2-beta.10-linux-amd64.deb |
| Linux (Flatpak) | Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak |
All releases include SHA256 checksums and VirusTotal scan results for security verification.
Requirements
- Claude Pro/Max subscription - Get one here
- Claude Code CLI -
npm install -g @anthropic-ai/claude-code - Git repository - Your project must be initialized as a git repo
Quick Start
- Download and install the app for your platform
- Open your project - Select a git repository folder
- Connect Claude - The app will guide you through OAuth setup
- Create a task - Describe what you want to build
- Watch it work - Agents plan, code, and validate autonomously
Features
| Feature | Description |
|---|---|
| Autonomous Tasks | Describe your goal; agents handle planning, implementation, and validation |
| Parallel Execution | Run multiple builds simultaneously with up to 12 agent terminals |
| Isolated Workspaces | All changes happen in git worktrees - your main branch stays safe |
| Self-Validating QA | Built-in quality assurance loop catches issues before you review |
| AI-Powered Merge | Automatic conflict resolution when integrating back to main |
| Memory Layer | Agents retain insights across sessions for smarter builds |
| GitHub/GitLab Integration | Import issues, investigate with AI, create merge requests |
| Linear Integration | Sync tasks with Linear for team progress tracking |
| Cross-Platform | Native desktop apps for Windows, macOS, and Linux |
| Auto-Updates | App updates automatically when new versions are released |
Interface
Kanban Board
Visual task management from planning through completion. Create tasks and monitor agent progress in real-time.
Agent Terminals
AI-powered terminals with one-click task context injection. Spawn multiple agents for parallel work.
Roadmap
AI-assisted feature planning with competitor analysis and audience targeting.
Additional Features
- Insights - Chat interface for exploring your codebase
- Ideation - Discover improvements, performance issues, and vulnerabilities
- Changelog - Generate release notes from completed tasks
Project Structure
Auto-Claude/
├── apps/
│ ├── backend/ # Python agents, specs, QA pipeline
│ └── frontend/ # Electron desktop application
├── guides/ # Additional documentation
├── tests/ # Test suite
└── scripts/ # Build utilities
CLI Usage
For headless operation, CI/CD integration, or terminal-only workflows:
cd apps/backend
# Create a spec interactively
python spec_runner.py --interactive
# Run autonomous build
python run.py --spec 001
# Review and merge
python run.py --spec 001 --review
python run.py --spec 001 --merge
See guides/CLI-USAGE.md for complete CLI documentation.
Development
Want to build from source or contribute? See CONTRIBUTING.md for complete development setup instructions.
For Linux-specific builds (Flatpak, AppImage), see guides/linux.md.
Security
Auto Claude uses a three-layer security model:
- OS Sandbox - Bash commands run in isolation
- Filesystem Restrictions - Operations limited to project directory
- Dynamic Command Allowlist - Only approved commands based on detected project stack
All releases are:
- Scanned with VirusTotal before publishing
- Include SHA256 checksums for verification
- Code-signed where applicable (macOS)
Available Scripts
| Command | Description |
|---|---|
npm run install:all |
Install backend and frontend dependencies |
npm start |
Build and run the desktop app |
npm run dev |
Run in development mode with hot reload |
npm run package |
Package for current platform |
npm run package:mac |
Package for macOS |
npm run package:win |
Package for Windows |
npm run package:linux |
Package for Linux |
npm run package:flatpak |
Package as Flatpak (see guides/linux.md) |
npm run lint |
Run linter |
npm test |
Run frontend tests |
npm run test:backend |
Run backend tests |
Contributing
We welcome contributions! Please read CONTRIBUTING.md for:
- Development setup instructions
- Code style guidelines
- Testing requirements
- Pull request process
Community
- Discord - Join our community
- Issues - Report bugs or request features
- Discussions - Ask questions
License
AGPL-3.0 - GNU Affero General Public License v3.0
Auto Claude is free to use. If you modify and distribute it, or run it as a service, your code must also be open source under AGPL-3.0.
Commercial licensing available for closed-source use cases.


