StillKnotKnown 1c6266025f fix(frontend): resolve TerminalFontSettings infinite re-render loop (#1536)
* fix(frontend): resolve TerminalFontSettings infinite re-render loop (ACS-393)

The TerminalFontSettings component was causing an infinite re-render loop
due to a Zustand selector creating a new object reference on every render.
When combined with LivePreviewTerminal's useEffect that watches the settings
object, this created a cascade where each render triggered the next.

Solution: Replace object selector with individual selectors and useMemo.
- Each selector now only re-renders when its specific value changes
- useMemo creates a stable object reference that only updates when actual values change
- Maintains existing component interface (child components still receive settings object)

This fixes the "Maximum update depth exceeded" error that occurred when
navigating to Settings > Terminal section.

Related console noise about PhaseProgressIndicator is unrelated to this fix.

* test(frontend): add TerminalFontSettings tests for infinite re-render loop fix (ACS-393)

Add comprehensive tests for the TerminalFontSettings component to verify
the infinite re-render loop fix. Tests cover:

- Component rendering without errors
- All expected sections render correctly
- Render cycle completes within reasonable time
- Store integration and state updates
- Rapid state changes without infinite loop
- Preset application and reset to defaults
- Concurrent updates without race conditions
- Import/export functionality
- Child component integration
- xterm.js terminal initialization
- Regression prevention (getSnapshot caching, maximum depth errors)
- Memoization with stable references

All 16 tests pass, confirming the individual selectors + useMemo
implementation correctly prevents infinite re-render loops.

* test(frontend): fix TerminalFontSettings tests for platform-independent defaults (ACS-393)

Fixed 2 failing tests that were checking for OS-specific default values
that don't apply in jsdom test environment. Tests now verify that
resetToDefaults() works correctly without assuming specific platform
defaults.

Changes:
- "should handle reset to defaults without infinite loop": Now verifies
  reset restores defaults without checking specific OS values
- "should render FontConfigPanel with current settings": Now validates
  fontSize is within valid range instead of checking specific value

All 15 tests now pass.

* cleanup & chores

* test(frontend): clean up TerminalFontSettings tests per PR review feedback (ACS-393)

- Replace function-based ResizeObserver mock with class-based mock
- Add note about platform-agnostic nature of infinite re-render fix
- Remove redundant manual state resets (beforeEach already handles cleanup)
- Remove artificial setTimeout delay in rapid state changes test
- Fix rerender() to include I18nextProvider wrapper in memoization test

Addresses CodeRabbit comments and AI PR review feedback.

* test(frontend): fix flaky subprocess-spawn test tracking multiple tasks

The "should track running tasks" test was failing because both tasks
shared the same mock process, but emitting exit once only removed
one task from tracking. Fixed by emitting exit separately for each
task to properly simulate both processes completing.

* test(frontend): address CodeRabbit feedback on TerminalFontSettings tests (ACS-393)

- Capture default values before mutating instead of hardcoding expected values
- Add afterEach hook to restore mocks instead of per-test manual restores
- Import afterEach from vitest for proper test cleanup

Addresses 2 additional CodeRabbit review comments.

---------

Co-authored-by: StillKnotKnown <stillknotknown@users.noreply.github.com>
Co-authored-by: AndyMik90 <andre@mikalsenutvikling.no>
2026-01-27 11:02:16 +01:00
2025-12-22 14:17:08 +01:00
2026-01-27 09:21:43 +01:00
2026-01-02 11:56:36 +01:00
2025-12-10 09:10:55 +01:00
2026-01-21 11:35:44 +01:00
2026-01-02 11:56:36 +01:00
2026-01-27 09:21:43 +01:00
2026-01-27 09:21:43 +01:00
2026-01-02 11:56:36 +01:00
2026-01-02 11:56:36 +01:00
2025-12-15 21:10:27 +01:00

Auto Claude

Autonomous multi-agent coding framework that plans, builds, and validates software for you.

Auto Claude Kanban Board

License Discord YouTube CI


Download

Stable Release

Stable

Platform Download
Windows Auto-Claude-2.7.5-win32-x64.exe
macOS (Apple Silicon) Auto-Claude-2.7.5-darwin-arm64.dmg
macOS (Intel) Auto-Claude-2.7.5-darwin-x64.dmg
Linux Auto-Claude-2.7.5-linux-x86_64.AppImage
Linux (Debian) Auto-Claude-2.7.5-linux-amd64.deb
Linux (Flatpak) Auto-Claude-2.7.5-linux-x86_64.flatpak

Beta Release

⚠️ Beta releases may contain bugs and breaking changes. View all releases

Beta

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

  1. Download and install the app for your platform
  2. Open your project - Select a git repository folder
  3. Connect Claude - The app will guide you through OAuth setup
  4. Create a task - Describe what you want to build
  5. 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.

Agent Terminals

Roadmap

AI-assisted feature planning with competitor analysis and audience targeting.

Roadmap

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:

  1. OS Sandbox - Bash commands run in isolation
  2. Filesystem Restrictions - Operations limited to project directory
  3. 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


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.


Star History

GitHub Repo stars

Star History Chart

S
Description
Autonomous multi-session AI coding
Readme AGPL-3.0 59 MiB
Languages
TypeScript 98.7%
JavaScript 0.6%
CSS 0.5%
Shell 0.2%