Skip to content

Comments

V0.15.0rc#810

Open
gsxdsm wants to merge 176 commits intomainfrom
v0.15.0rc
Open

V0.15.0rc#810
gsxdsm wants to merge 176 commits intomainfrom
v0.15.0rc

Conversation

@gsxdsm
Copy link
Collaborator

@gsxdsm gsxdsm commented Feb 25, 2026

  • Auto-mode service refactor (thanks @Shironex!)
  • Added File Browser and tabbed editor with diff viewer and git status support. Full support for drag, drop, edit, move, download files. Markdown preview and split editor
Screenshot 2026-02-24 at 8 46 50 PM
  • Added ability to duplicate a feature, including duplicate multiple times and as a child (for Ralph-loop style workflows)
Screenshot 2026-02-24 at 8 47 18 PM
  • OAuth credential improvements (thanks @Shironex!)
  • Support for GPT-5.3-Codex, Sonnet 4.6, and Opus 4.6, GLM-5, Minimax-2.5, Kimi 2.5 (thanks @Shironex)
  • Dev Server improvements
  • Git conflict resolution, improved push, pull, sync behavior
Screenshot 2026-02-24 at 8 47 42 PM
  • Git branch tracking
  • Pull request improvements
  • Pull request comment viewer + instant feature creation. View and Resolve PR comments
Screenshot 2026-02-24 at 9 04 59 PM
  • Added merge & rebase options with AI conflict resolution
Screenshot 2026-02-24 at 8 57 22 PM
  • Ability to stash changes and view stashes
Screenshot 2026-02-24 at 8 48 36 PM
  • Cherry-pick support
  • Create worktree from a remote branch
Screenshot 2026-02-24 at 8 48 19 PM
  • Added ability to customize foreground and background color in terminal
Screenshot 2026-02-24 at 8 55 43 PM
  • Mobile shortcut keys in terminal
Screenshot 2026-02-24 at 8 54 12 PM
  • Added "open new tab in worktree" option
Screenshot 2026-02-24 at 8 55 22 PM
  • Fixed copy/paste in terminal on mobile, added "text selection" mode
  • Checkout remote branches when creating a new branch
  • Added ability to view recent commits for a branch
Screenshot 2026-02-24 at 9 00 59 PM
  • Added ability to stage/unstage files for commit, files now show merge status
Screenshot 2026-02-24 at 9 01 25 PM
  • Fix for board crashing after deleting worktree
  • Improved drag/drop scrolling (no more inadvertant card drags)
  • Improved layout of list view
  • Added ability to change tracked PR
Screenshot 2026-02-24 at 9 02 52 PM
  • Quick-add features
Screenshot 2026-02-24 at 8 53 02 PM Screenshot 2026-02-24 at 8 56 25 PM
  • Pre-install Playwright Chromium browser (thanks @Shironex)
  • Improve PWA loading speed 300x with caching and service worker implementation
  • Tons of mobile improvements - layouts fixed
  • Agent Runner view returns to last used view and is scoped to the current worktree
  • Improve all providers - increase max turns (and user configurable), support adaptive thinking for Claude
  • Fixed Claude weekly usage tracking
  • Add Gemini and z.ai usage tracking
Screenshot 2026-02-24 at 8 52 29 PM
  • Tons of bug fixes and improvements
  • Fixed e2e tests from killing automaker ports
  • Fixed event hook settings not saving
  • Feature templates for quick-add features
Screenshot 2026-02-24 at 8 51 21 PM 1
  • Quick-scripts to run in terminal
Screenshot 2026-02-24 at 8 51 56 PM
  • Open terminal at worktree path
Screenshot 2026-02-24 at 8 49 08 PM
  • Use Claude default system prompts
  • Support sub-agents
  • Ability to selectively discard changes
  • Fix Docker CORS issues
  • Select model for commit message and PR generation
  • Create new feature from Github issue
  • Added option to pin worktrees (like previous view)
  • Added ability to specify files to copy on worktree creation (for .env, etc)
Screenshot 2026-02-24 at 8 50 31 PM
  • Fixed event hooks not firing on success
  • Fixed settings not saving
  • Fixed auto mode max concurrency not working

Shironex and others added 30 commits February 2, 2026 15:47
…esting

Fixes #725

AI agents in automated testing mode require Playwright to verify implementations,
but Docker containers had only system dependencies installed, not browser binaries.
This caused verification failures with permissions errors.

Changes:
- Install Playwright Chromium in Dockerfile (~300MB increase)
- Update docker-compose.override.yml.example with clearer Playwright documentation
- Add "Playwright for Automated Testing" section to README
- Document optional volume mount for persisting browsers across rebuilds

Browsers are now pre-installed and work out of the box for Docker users.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Clean up npx cache after Playwright installation to reduce image size
- Clarify README: volume mounts persist cache across container lifecycles,
  not image rebuilds
- Add first-use warning: empty volume overrides pre-installed browsers,
  users must re-install with docker exec command

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Playwright install after node_modules copy to use pinned version
- Use local playwright binary instead of npx to avoid registry fetch
- Add --user automaker -w /app flags to docker exec commands
- Change bold text to proper heading in README (MD036 lint fix)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhanced getClaudeAuthIndicators() to return detailed check information
  including file paths checked and specific error details for debugging
- Added debug logging to server startup credential detection for easier
  troubleshooting in Docker environments
- Show paths that were checked in the warning message to help users debug
  mount issues
- Added support for CLAUDE_CODE_OAUTH_TOKEN environment variable
- Return authType in verify-claude-auth response to distinguish between
  OAuth and CLI authentication methods
- Updated UI to show specific success messages for Claude Code subscription
  vs generic CLI auth
- Added Docker troubleshooting tips to sandbox risk dialog
- Added comprehensive unit tests for OAuth credential detection scenarios

Closes #721

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated getClaudeAuthIndicators() to ensure that empty or token-less credential files do not prevent the detection of valid credentials in subsequent paths.
- Improved error handling for settings file readability checks, providing clearer feedback on file access issues.
- Added unit tests to validate the new behavior, ensuring that the system continues to check all credential paths even when some files are empty or invalid.

This change improves the robustness of the credential detection process and enhances user experience by allowing for more flexible credential management.
- Upgraded @openai/codex-sdk from version 0.77.0 to 0.98.0 in package-lock.json and package.json.
- Introduced new model 'GPT-5.3-Codex' with enhanced capabilities in codex-models.ts and related files.
- Updated descriptions for existing models to reflect their latest features and improvements.
- Adjusted Codex model configuration and display to include the new model and its attributes.

These changes enhance the Codex model offerings and ensure compatibility with the latest SDK version.
…upport

- Changed model identifier from `claude-opus-4-5-20251101` to `claude-opus-4-6` across various files, including documentation and code references.
- Updated the SDK to support adaptive thinking for Opus 4.6, allowing the model to determine its own reasoning depth.
- Enhanced the thinking level options to include 'adaptive' and adjusted related components to reflect this change.
- Updated tests to ensure compatibility with the new model and its features.

These changes improve the model's capabilities and user experience by leveraging adaptive reasoning.
- Added `isAdaptiveThinkingModel` utility to improve model identification logic in the AddFeatureDialog.
- Updated the ThinkingLevelSelector to conditionally display information based on available thinking levels.
- Enhanced model name formatting in agent-context-parser to include 'GPT-5.3 Codex' for better clarity.

These changes improve the user experience by refining model handling and UI feedback related to adaptive thinking capabilities.
- Introduced a new event type 'dev-server:url-detected' to enhance event handling for the development server.
- This addition allows for better tracking and response to URL detection during server operations.

These changes improve the event system's capability to manage server-related events effectively.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- STACK.md - Technologies and dependencies
- ARCHITECTURE.md - System design and patterns
- STRUCTURE.md - Directory layout
- CONVENTIONS.md - Code style and patterns
- TESTING.md - Test structure
- INTEGRATIONS.md - External services
- CONCERNS.md - Technical debt and issues
Refactoring auto-mode-service.ts (5k+ lines) into smaller, focused services with clear boundaries.
User preference: keep .planning/ local-only
- Test lease counting basics (acquire/release semantics)
- Test running count queries (project and worktree level)
- Test feature state queries (isRunning, getRunningFeature, getAllRunning)
- Test edge cases (multiple features, multiple worktrees)
- 36 test cases documenting expected behavior

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Lease-based reference counting for nested execution support
- acquire() creates entry with leaseCount: 1 or increments existing
- release() decrements leaseCount, deletes at 0 or with force:true
- Project and worktree-level running counts
- RunningFeature interface exported for type sharing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AutoModeService now delegates to ConcurrencyManager for all running feature tracking
- Constructor accepts optional ConcurrencyManager for dependency injection
- Remove local RunningFeature interface (imported from ConcurrencyManager)
- Migrate all this.runningFeatures usages to concurrencyManager methods
- Update tests to use concurrencyManager.acquire() instead of direct Map access
- ConcurrencyManager accepts getCurrentBranch function for testability

BREAKING: AutoModeService no longer exposes runningFeatures Map directly.
Tests must use concurrencyManager.acquire() to add running features.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TypedEventBus as wrapper around EventEmitter
- Implement emitAutoModeEvent method for auto-mode event format
- Add emit, subscribe, getUnderlyingEmitter methods
- Create comprehensive test suite (20 tests)
- Verify exact event format for frontend compatibility
- Create WorktreeResolver class for git worktree discovery
- Extract getCurrentBranch, findWorktreeForBranch, listWorktrees methods
- Add WorktreeInfo interface for worktree metadata
- Always resolve paths to absolute for cross-platform compatibility
- Add 20 unit tests covering all worktree operations
- Import TypedEventBus into AutoModeService
- Add eventBus property initialized via constructor injection
- Remove private emitAutoModeEvent method (now in TypedEventBus)
- Update all 66 emitAutoModeEvent calls to use this.eventBus
- Constructor accepts optional TypedEventBus for testing
- Create FeatureStateManager class for feature status updates
- Extract updateFeatureStatus, markFeatureInterrupted, resetStuckFeatures
- Extract updateFeaturePlanSpec, saveFeatureSummary, updateTaskStatus
- Persist BEFORE emit pattern for data integrity (Pitfall 2)
- Handle corrupted JSON with readJsonWithRecovery backup support
- Preserve pipeline_* statuses in markFeatureInterrupted
- Fix bug: version increment now checks old content before applying updates
- Add 33 unit tests covering all state management operations
…utoModeService

- Add WorktreeResolver and FeatureStateManager as constructor parameters
- Remove top-level getCurrentBranch function (now in WorktreeResolver)
- Delegate loadFeature, updateFeatureStatus to FeatureStateManager
- Delegate markFeatureInterrupted, resetStuckFeatures to FeatureStateManager
- Delegate updateFeaturePlanSpec, saveFeatureSummary, updateTaskStatus
- Replace findExistingWorktreeForBranch calls with worktreeResolver
- Update tests to mock featureStateManager instead of internal methods
- All 89 tests passing across 3 service files
- Extract plan approval workflow from AutoModeService
- Timeout-wrapped Promise creation via waitForApproval()
- Resolution handling (approve/reject) with needsRecovery flag
- Cancellation support for stopped features
- Per-project configurable timeout (default 30 minutes)
- Event emission through TypedEventBus for plan_rejected
- 24 tests covering approval, rejection, timeout, cancellation, recovery
- Tests use Vitest fake timers for timeout testing
- Covers needsRecovery flag for server restart recovery
- Covers plan_rejected event emission
- Covers configurable timeout from project settings
- Add PlanApprovalService import and constructor parameter
- Delegate waitForPlanApproval, cancelPlanApproval, hasPendingApproval
- resolvePlanApproval checks needsRecovery flag and calls executeFeature
- Remove pendingApprovals Map (now in PlanApprovalService)
- Remove PendingApproval interface (moved to plan-approval-service.ts)
- Extract parseTasksFromSpec for parsing tasks from spec content
- Extract marker detection functions (task start/complete, phase complete)
- Extract detectSpecFallback for non-Claude model support
- Extract extractSummary with multi-format support and last-match behavior
- Add 65 unit tests covering all functions and edge cases
- Add import for all spec parsing functions from spec-parser.ts
- Remove 209 lines of function definitions (now imported)
- Functions extracted: parseTasksFromSpec, parseTaskLine, detectTaskStartMarker,
  detectTaskCompleteMarker, detectPhaseCompleteMarker, detectSpecFallback, extractSummary
- All server tests pass (1608 tests)
- Create AgentExecutor class with constructor injection for TypedEventBus,
  FeatureStateManager, PlanApprovalService, and SettingsService
- Extract streaming pipeline from AutoModeService.runAgent()
- Implement execute() with stream processing, marker detection, file output
- Support recovery path with executePersistedTasks()
- Handle spec generation and approval workflow
- Multi-agent task execution with progress events
- Single-agent continuation fallback
- Debounced file writes (500ms)
- Heartbeat logging for silent model calls
- Abort signal handling throughout execution

Key interfaces:
- AgentExecutionOptions: All execution parameters
- AgentExecutionResult: responseText, specDetected, tasksCompleted, aborted
- Callbacks: waitForApproval, saveFeatureSummary, updateFeatureSummary, buildTaskPrompt
- Test constructor injection with all dependencies
- Test interface exports (AgentExecutionOptions, AgentExecutionResult)
- Test callback type signatures (WaitForApprovalFn, SaveFeatureSummaryFn, etc.)
- Test dependency injection patterns with custom implementations
- Verify execute method signature

Note: Full integration tests for streaming/marker detection require
complex mocking of @automaker/utils module which has hoisting issues.
Integration testing covered in E2E and auto-mode-service tests.
- Add AgentExecutor import to auto-mode-service.ts
- Add agentExecutor as constructor parameter (optional, with default)
- Initialize AgentExecutor with TypedEventBus, FeatureStateManager,
  PlanApprovalService, and SettingsService dependencies

This enables constructor injection for testing and prepares for
incremental delegation of runAgent() logic to AgentExecutor.
The AgentExecutor contains the full execution pipeline;
runAgent() delegation will be done incrementally to ensure
stability.
- Replace stream processing loop with AgentExecutor.execute() delegation
- Build AgentExecutionOptions object from runAgent() parameters
- Create callbacks for waitForApproval, saveFeatureSummary, etc.
- Remove ~930 lines of duplicated stream processing code
- Progress events now flow through AgentExecutor

File: auto-mode-service.ts reduced from 5086 to 4157 lines
gsxdsm and others added 16 commits February 21, 2026 08:57
…vider fixes. Terminal background/foreground colors (#791)

* Changes from fix/dev-server-state-bug

* feat: Add configurable max turns setting with user overrides. Address pr comments

* fix: Update default behaviors and improve state management across server and UI

* feat: Extract branch sync logic to separate service. Fix settings sync bug. Address pr comments

* refactor: Extract magic numbers to named constants and improve branch tracking logic

- Add DEFAULT_MAX_TURNS (1000) and MAX_ALLOWED_TURNS (2000) constants to settings-helpers
- Replace hardcoded 1000 values with DEFAULT_MAX_TURNS constant throughout codebase
- Improve max turns validation with explicit Number.isFinite check
- Update getTrackingBranch to split on first slash instead of last for better remote parsing
- Change isBranchCheckedOut return type from boolean to string|null to return worktree path
- Add comments explaining skipFetch parameter in worktree creation
- Fix cleanup order in AgentExecutor finally block to run before logging
```

* feat: Add comment refresh and improve model sync in PR dialog
…#792)

* Changes from fix/delete-worktree-hotifx

* fix: Improve bot detection and prevent UI overflow issues

- Include GitHub app-initiated comments in bot detection
- Wrap handleQuickCreateSession with useCallback to fix dependency issues
- Truncate long branch names in agent header to prevent layout overflow

* feat: Support GitHub App comments in PR review and fix session filtering

* feat: Return invalidation result from delete session handler
* Changes from fix/docker-compose-cors-error

* Update apps/server/src/index.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Fix: Delete Worktree Crash + PR Comments + Dev Server UX Improvements (#792)

* Changes from fix/delete-worktree-hotifx

* fix: Improve bot detection and prevent UI overflow issues

- Include GitHub app-initiated comments in bot detection
- Wrap handleQuickCreateSession with useCallback to fix dependency issues
- Truncate long branch names in agent header to prevent layout overflow

* feat: Support GitHub App comments in PR review and fix session filtering

* feat: Return invalidation result from delete session handler

* fix: Improve CORS origin validation to handle wildcard correctly

* fix: Correct IPv6 localhost parsing and improve responsive UI layouts

* Changes from fix/pwa-cache-fix (#794)

* fix: Add type checking to prevent crashes from malformed cache entries

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Changes from fix/codex-cli-timeout

* test: Clarify timeout values and multipliers in codex-provider tests

* refactor: Rename useWorktreesEnabled to worktreesEnabled for clarity
* Changes from fix/improve-pull-request-prompt

* Update apps/ui/src/components/views/board-view/dialogs/create-pr-dialog.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Changes from fix/event-hook-persistence

* feat: Add explicit permission escape hatch for clearing eventHooks and improve error handling in UI
* Changes from fix/deleting-worktree

* fix: Improve worktree deletion safety and branch cleanup logic

* fix: Improve error handling and async operations across auto-mode and worktree services

* Update apps/server/src/routes/auto-mode/routes/analyze-project.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…eed up some cli models with session resume (#801)

* Changes from fix/restoring-view

* feat: Add resume query safety checks and optimize store selectors

* feat: Improve session management and model normalization

* refactor: Extract prompt building logic and handle file path parsing for renames
* Changes from feature/quick-add

* feat: Clarify system prompt and improve error handling across services. Address PR Feedback

* feat: Improve PR description parsing and refactor event handling

* feat: Add context options to pipeline orchestrator initialization

* fix: Deduplicate React and handle CJS interop for use-sync-external-store

Resolve "Cannot read properties of null (reading 'useState')" errors by
deduplicating React/react-dom and ensuring use-sync-external-store is
bundled together with React to prevent CJS packages from resolving to
different React instances.
* Changes from feature/worktree-view-customization

* Feature: Git sync, set-tracking, and push divergence handling (#796)

* Add quick-add feature with improved workflows (#802)

* Changes from feature/quick-add

* feat: Clarify system prompt and improve error handling across services. Address PR Feedback

* feat: Improve PR description parsing and refactor event handling

* feat: Add context options to pipeline orchestrator initialization

* fix: Deduplicate React and handle CJS interop for use-sync-external-store

Resolve "Cannot read properties of null (reading 'useState')" errors by
deduplicating React/react-dom and ensuring use-sync-external-store is
bundled together with React to prevent CJS packages from resolving to
different React instances.

* Changes from feature/worktree-view-customization

* refactor: Remove unused worktree swap and highlight props

* refactor: Consolidate feature completion logic and improve thinking level defaults

* feat: Increase max turn limit to 10000

- Update DEFAULT_MAX_TURNS from 1000 to 10000 in settings-helpers.ts and agent-executor.ts
- Update MAX_ALLOWED_TURNS from 2000 to 10000 in settings-helpers.ts
- Update UI clamping logic from 2000 to 10000 in app-store.ts
- Update fallback values from 1000 to 10000 in use-settings-sync.ts
- Update default value from 1000 to 10000 in DEFAULT_GLOBAL_SETTINGS
- Update documentation to reflect new range: 1-10000

Allows agents to perform up to 10000 turns for complex feature execution.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* feat: Add model resolution, improve session handling, and enhance UI stability

* refactor: Remove unused sync and tracking branch props from worktree components

* feat: Add PR number update functionality to worktrees. Address pr feedback

* feat: Optimize Gemini CLI startup and add tool result tracking

* refactor: Improve error handling and simplify worktree task cleanup

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* Changes from fix/cursor-fix

* feat: Enhance provider error messages with diagnostic context, address test failure, fix port change, move playwright tests to different port

* Update apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* ci: Update test server port from 3008 to 3108 and add environment configuration

* fix: Correct typo in health endpoint URL and standardize port env vars

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…sends model (#809)

When the Plan dialog sends a model (e.g. MiniMax-M2.1 from phase
settings), the server now:

- Calls getProviderByModelId() so the correct provider config
  (baseUrl, credentials) is used for backlog plan generation.
- Falls back to getPhaseModelWithOverrides('backlogPlanningModel')
  when model lookup finds no provider, so the phase's provider is
  used when the model matches.
- Uses a plain system prompt instead of the claude_code preset when
  a Claude-compatible provider is set; the preset is for native
  Claude CLI and can break requests to MiniMax/GLM APIs.

Previously the request was sent to the default Anthropic endpoint
and/or used the preset, causing plan generation to fail for
MiniMax/GLM users.

Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: Add dev-server:url-detected to EventType

The dev-server-service emits this event when a dev server URL is
detected from output; the type was missing from the EventType union
and caused a TypeScript build error.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Update libs/types/src/event.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@coderabbitai
Copy link

coderabbitai bot commented Feb 25, 2026

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

📥 Commits

Reviewing files that changed from the base of the PR and between dfe6920 and 6b97219.

📒 Files selected for processing (300)
  • .github/actions/setup-project/action.yml
  • .github/workflows/e2e-tests.yml
  • .github/workflows/release.yml
  • .gitignore
  • .husky/pre-commit
  • .planning/PROJECT.md
  • .planning/codebase/ARCHITECTURE.md
  • .planning/codebase/CONCERNS.md
  • .planning/codebase/CONVENTIONS.md
  • .planning/codebase/INTEGRATIONS.md
  • .planning/codebase/STACK.md
  • .planning/codebase/STRUCTURE.md
  • .planning/codebase/TESTING.md
  • CLAUDE.md
  • DEVELOPMENT_WORKFLOW.md
  • Dockerfile
  • OPENCODE_CONFIG_CONTENT
  • README.md
  • apps/server/.env.example
  • apps/server/eslint.config.mjs
  • apps/server/package.json
  • apps/server/src/index.ts
  • apps/server/src/lib/cli-detection.ts
  • apps/server/src/lib/error-handler.ts
  • apps/server/src/lib/exec-utils.ts
  • apps/server/src/lib/git-log-parser.ts
  • apps/server/src/lib/git.ts
  • apps/server/src/lib/permission-enforcer.ts
  • apps/server/src/lib/sdk-options.ts
  • apps/server/src/lib/settings-helpers.ts
  • apps/server/src/lib/worktree-metadata.ts
  • apps/server/src/providers/claude-provider.ts
  • apps/server/src/providers/codex-models.ts
  • apps/server/src/providers/codex-provider.ts
  • apps/server/src/providers/codex-sdk-client.ts
  • apps/server/src/providers/copilot-provider.ts
  • apps/server/src/providers/cursor-provider.ts
  • apps/server/src/providers/gemini-provider.ts
  • apps/server/src/providers/opencode-provider.ts
  • apps/server/src/providers/provider-factory.ts
  • apps/server/src/providers/simple-query-service.ts
  • apps/server/src/routes/agent/routes/history.ts
  • apps/server/src/routes/agent/routes/queue-list.ts
  • apps/server/src/routes/agent/routes/send.ts
  • apps/server/src/routes/agent/routes/start.ts
  • apps/server/src/routes/app-spec/common.ts
  • apps/server/src/routes/app-spec/generate-features-from-spec.ts
  • apps/server/src/routes/app-spec/sync-spec.ts
  • apps/server/src/routes/auto-mode/index.ts
  • apps/server/src/routes/auto-mode/routes/analyze-project.ts
  • apps/server/src/routes/auto-mode/routes/approve-plan.ts
  • apps/server/src/routes/auto-mode/routes/commit-feature.ts
  • apps/server/src/routes/auto-mode/routes/context-exists.ts
  • apps/server/src/routes/auto-mode/routes/follow-up-feature.ts
  • apps/server/src/routes/auto-mode/routes/reconcile.ts
  • apps/server/src/routes/auto-mode/routes/resume-feature.ts
  • apps/server/src/routes/auto-mode/routes/resume-interrupted.ts
  • apps/server/src/routes/auto-mode/routes/run-feature.ts
  • apps/server/src/routes/auto-mode/routes/start.ts
  • apps/server/src/routes/auto-mode/routes/status.ts
  • apps/server/src/routes/auto-mode/routes/stop-feature.ts
  • apps/server/src/routes/auto-mode/routes/stop.ts
  • apps/server/src/routes/auto-mode/routes/verify-feature.ts
  • apps/server/src/routes/backlog-plan/common.ts
  • apps/server/src/routes/backlog-plan/generate-plan.ts
  • apps/server/src/routes/backlog-plan/routes/apply.ts
  • apps/server/src/routes/backlog-plan/routes/generate.ts
  • apps/server/src/routes/context/routes/describe-image.ts
  • apps/server/src/routes/enhance-prompt/routes/enhance.ts
  • apps/server/src/routes/features/index.ts
  • apps/server/src/routes/features/routes/create.ts
  • apps/server/src/routes/features/routes/export.ts
  • apps/server/src/routes/features/routes/generate-title.ts
  • apps/server/src/routes/features/routes/import.ts
  • apps/server/src/routes/features/routes/list.ts
  • apps/server/src/routes/features/routes/update.ts
  • apps/server/src/routes/fs/index.ts
  • apps/server/src/routes/fs/routes/browse-project-files.ts
  • apps/server/src/routes/fs/routes/copy.ts
  • apps/server/src/routes/fs/routes/download.ts
  • apps/server/src/routes/fs/routes/mkdir.ts
  • apps/server/src/routes/fs/routes/move.ts
  • apps/server/src/routes/fs/routes/resolve-directory.ts
  • apps/server/src/routes/fs/routes/save-board-background.ts
  • apps/server/src/routes/fs/routes/save-image.ts
  • apps/server/src/routes/fs/routes/validate-path.ts
  • apps/server/src/routes/fs/routes/write.ts
  • apps/server/src/routes/gemini/index.ts
  • apps/server/src/routes/git/index.ts
  • apps/server/src/routes/git/routes/details.ts
  • apps/server/src/routes/git/routes/diffs.ts
  • apps/server/src/routes/git/routes/enhanced-status.ts
  • apps/server/src/routes/git/routes/stage-files.ts
  • apps/server/src/routes/github/index.ts
  • apps/server/src/routes/github/routes/common.ts
  • apps/server/src/routes/github/routes/list-pr-review-comments.ts
  • apps/server/src/routes/github/routes/resolve-pr-comment.ts
  • apps/server/src/routes/github/routes/validate-issue.ts
  • apps/server/src/routes/github/routes/validation-endpoints.ts
  • apps/server/src/routes/models/routes/providers.ts
  • apps/server/src/routes/projects/index.ts
  • apps/server/src/routes/projects/routes/overview.ts
  • apps/server/src/routes/running-agents/index.ts
  • apps/server/src/routes/running-agents/routes/index.ts
  • apps/server/src/routes/settings/routes/update-global.ts
  • apps/server/src/routes/setup/routes/auth-claude.ts
  • apps/server/src/routes/setup/routes/auth-opencode.ts
  • apps/server/src/routes/setup/routes/copilot-models.ts
  • apps/server/src/routes/setup/routes/opencode-models.ts
  • apps/server/src/routes/setup/routes/verify-claude-auth.ts
  • apps/server/src/routes/terminal/common.ts
  • apps/server/src/routes/terminal/routes/auth.ts
  • apps/server/src/routes/worktree/common.ts
  • apps/server/src/routes/worktree/index.ts
  • apps/server/src/routes/worktree/routes/abort-operation.ts
  • apps/server/src/routes/worktree/routes/branch-commit-log.ts
  • apps/server/src/routes/worktree/routes/branch-tracking.ts
  • apps/server/src/routes/worktree/routes/check-changes.ts
  • apps/server/src/routes/worktree/routes/checkout-branch.ts
  • apps/server/src/routes/worktree/routes/cherry-pick.ts
  • apps/server/src/routes/worktree/routes/commit-log.ts
  • apps/server/src/routes/worktree/routes/commit.ts
  • apps/server/src/routes/worktree/routes/continue-operation.ts
  • apps/server/src/routes/worktree/routes/create-pr.ts
  • apps/server/src/routes/worktree/routes/create.ts
  • apps/server/src/routes/worktree/routes/delete.ts
  • apps/server/src/routes/worktree/routes/diffs.ts
  • apps/server/src/routes/worktree/routes/discard-changes.ts
  • apps/server/src/routes/worktree/routes/generate-commit-message.ts
  • apps/server/src/routes/worktree/routes/generate-pr-description.ts
  • apps/server/src/routes/worktree/routes/list-branches.ts
  • apps/server/src/routes/worktree/routes/list.ts
  • apps/server/src/routes/worktree/routes/merge.ts
  • apps/server/src/routes/worktree/routes/open-in-editor.ts
  • apps/server/src/routes/worktree/routes/pull.ts
  • apps/server/src/routes/worktree/routes/push.ts
  • apps/server/src/routes/worktree/routes/rebase.ts
  • apps/server/src/routes/worktree/routes/set-tracking.ts
  • apps/server/src/routes/worktree/routes/stage-files.ts
  • apps/server/src/routes/worktree/routes/stash-apply.ts
  • apps/server/src/routes/worktree/routes/stash-drop.ts
  • apps/server/src/routes/worktree/routes/stash-list.ts
  • apps/server/src/routes/worktree/routes/stash-push.ts
  • apps/server/src/routes/worktree/routes/switch-branch.ts
  • apps/server/src/routes/worktree/routes/sync.ts
  • apps/server/src/routes/worktree/routes/update-pr-number.ts
  • apps/server/src/routes/zai/index.ts
  • apps/server/src/services/agent-executor-types.ts
  • apps/server/src/services/agent-executor.ts
  • apps/server/src/services/agent-service.ts
  • apps/server/src/services/auto-loop-coordinator.ts
  • apps/server/src/services/auto-mode-service.ts
  • apps/server/src/services/auto-mode/compat.ts
  • apps/server/src/services/auto-mode/facade.ts
  • apps/server/src/services/auto-mode/global-service.ts
  • apps/server/src/services/auto-mode/index.ts
  • apps/server/src/services/auto-mode/types.ts
  • apps/server/src/services/branch-commit-log-service.ts
  • apps/server/src/services/branch-sync-service.ts
  • apps/server/src/services/branch-utils.ts
  • apps/server/src/services/checkout-branch-service.ts
  • apps/server/src/services/cherry-pick-service.ts
  • apps/server/src/services/claude-usage-service.ts
  • apps/server/src/services/commit-log-service.ts
  • apps/server/src/services/concurrency-manager.ts
  • apps/server/src/services/dev-server-service.ts
  • apps/server/src/services/event-history-service.ts
  • apps/server/src/services/event-hook-service.ts
  • apps/server/src/services/execution-service.ts
  • apps/server/src/services/execution-types.ts
  • apps/server/src/services/feature-export-service.ts
  • apps/server/src/services/feature-loader.ts
  • apps/server/src/services/feature-state-manager.ts
  • apps/server/src/services/gemini-usage-service.ts
  • apps/server/src/services/github-pr-comment.service.ts
  • apps/server/src/services/ideation-service.ts
  • apps/server/src/services/merge-service.ts
  • apps/server/src/services/pipeline-orchestrator.ts
  • apps/server/src/services/pipeline-types.ts
  • apps/server/src/services/plan-approval-service.ts
  • apps/server/src/services/pr-review-comments.service.ts
  • apps/server/src/services/pr-service.ts
  • apps/server/src/services/pull-service.ts
  • apps/server/src/services/push-service.ts
  • apps/server/src/services/rebase-service.ts
  • apps/server/src/services/recovery-service.ts
  • apps/server/src/services/settings-service.ts
  • apps/server/src/services/spec-parser.ts
  • apps/server/src/services/stage-files-service.ts
  • apps/server/src/services/stash-service.ts
  • apps/server/src/services/sync-service.ts
  • apps/server/src/services/typed-event-bus.ts
  • apps/server/src/services/worktree-branch-service.ts
  • apps/server/src/services/worktree-resolver.ts
  • apps/server/src/services/worktree-service.ts
  • apps/server/src/services/zai-usage-service.ts
  • apps/server/src/tests/cli-integration.test.ts
  • apps/server/src/types/settings.ts
  • apps/server/test/git-log-parser.test.js
  • apps/server/tests/integration/services/auto-mode-service.integration.test.ts
  • apps/server/tests/unit/lib/enhancement-prompts.test.ts
  • apps/server/tests/unit/lib/git-log-parser.test.ts
  • apps/server/tests/unit/lib/model-resolver.test.ts
  • apps/server/tests/unit/lib/nul-delimiter.test.ts
  • apps/server/tests/unit/lib/sdk-options.test.ts
  • apps/server/tests/unit/lib/thinking-level-normalization.test.ts
  • apps/server/tests/unit/providers/claude-provider.test.ts
  • apps/server/tests/unit/providers/codex-provider.test.ts
  • apps/server/tests/unit/providers/copilot-provider.test.ts
  • apps/server/tests/unit/providers/cursor-provider.test.ts
  • apps/server/tests/unit/providers/gemini-provider.test.ts
  • apps/server/tests/unit/providers/opencode-provider.test.ts
  • apps/server/tests/unit/providers/provider-factory.test.ts
  • apps/server/tests/unit/routes/backlog-plan/generate-plan.test.ts
  • apps/server/tests/unit/routes/worktree/switch-branch.test.ts
  • apps/server/tests/unit/services/agent-executor.test.ts
  • apps/server/tests/unit/services/agent-output-validation.test.ts
  • apps/server/tests/unit/services/agent-service.test.ts
  • apps/server/tests/unit/services/auto-loop-coordinator.test.ts
  • apps/server/tests/unit/services/auto-mode-service-planning.test.ts
  • apps/server/tests/unit/services/auto-mode-service.test.ts
  • apps/server/tests/unit/services/claude-usage-service.test.ts
  • apps/server/tests/unit/services/concurrency-manager.test.ts
  • apps/server/tests/unit/services/dev-server-service.test.ts
  • apps/server/tests/unit/services/event-hook-service.test.ts
  • apps/server/tests/unit/services/execution-service.test.ts
  • apps/server/tests/unit/services/feature-state-manager.test.ts
  • apps/server/tests/unit/services/ideation-service.test.ts
  • apps/server/tests/unit/services/pipeline-orchestrator.test.ts
  • apps/server/tests/unit/services/plan-approval-service.test.ts
  • apps/server/tests/unit/services/recovery-service.test.ts
  • apps/server/tests/unit/services/settings-service.test.ts
  • apps/server/tests/unit/services/spec-parser.test.ts
  • apps/server/tests/unit/services/typed-event-bus.test.ts
  • apps/server/tests/unit/services/worktree-resolver.test.ts
  • apps/ui/docs/AGENT_ARCHITECTURE.md
  • apps/ui/eslint.config.mjs
  • apps/ui/index.html
  • apps/ui/nginx.conf
  • apps/ui/package.json
  • apps/ui/playwright.config.ts
  • apps/ui/public/manifest.json
  • apps/ui/public/sw.js
  • apps/ui/scripts/kill-test-servers.mjs
  • apps/ui/src/app.tsx
  • apps/ui/src/components/codex-usage-popover.tsx
  • apps/ui/src/components/dialogs/index.ts
  • apps/ui/src/components/dialogs/pr-comment-resolution-dialog.tsx
  • apps/ui/src/components/dialogs/project-file-selector-dialog.tsx
  • apps/ui/src/components/dialogs/sandbox-rejection-screen.tsx
  • apps/ui/src/components/dialogs/sandbox-risk-dialog.tsx
  • apps/ui/src/components/layout/project-switcher/components/project-context-menu.tsx
  • apps/ui/src/components/layout/project-switcher/project-switcher.tsx
  • apps/ui/src/components/layout/sidebar/components/project-selector-with-options.tsx
  • apps/ui/src/components/layout/sidebar/components/sidebar-header.tsx
  • apps/ui/src/components/layout/sidebar/hooks/use-navigation.ts
  • apps/ui/src/components/layout/sidebar/hooks/use-project-picker.ts
  • apps/ui/src/components/layout/sidebar/sidebar.tsx
  • apps/ui/src/components/layout/sidebar/types.ts
  • apps/ui/src/components/session-manager.tsx
  • apps/ui/src/components/shared/use-model-override.ts
  • apps/ui/src/components/ui/app-error-boundary.tsx
  • apps/ui/src/components/ui/branch-autocomplete.tsx
  • apps/ui/src/components/ui/codemirror-diff-view.tsx
  • apps/ui/src/components/ui/dialog.tsx
  • apps/ui/src/components/ui/git-diff-panel.tsx
  • apps/ui/src/components/ui/provider-icon.tsx
  • apps/ui/src/components/ui/select.tsx
  • apps/ui/src/components/ui/task-progress-panel.tsx
  • apps/ui/src/components/ui/test-logs-panel.tsx
  • apps/ui/src/components/ui/truncated-file-path.tsx
  • apps/ui/src/components/usage-popover.tsx
  • apps/ui/src/components/views/agent-view.tsx
  • apps/ui/src/components/views/agent-view/components/agent-header.tsx
  • apps/ui/src/components/views/agent-view/components/chat-area.tsx
  • apps/ui/src/components/views/agent-view/components/empty-states.tsx
  • apps/ui/src/components/views/agent-view/hooks/use-agent-session.ts
  • apps/ui/src/components/views/board-view.tsx
  • apps/ui/src/components/views/board-view/board-error-boundary.tsx
  • apps/ui/src/components/views/board-view/board-header.tsx
  • apps/ui/src/components/views/board-view/components/add-feature-button.tsx
  • apps/ui/src/components/views/board-view/components/kanban-card/agent-info-panel.tsx
  • apps/ui/src/components/views/board-view/components/kanban-card/card-actions.tsx
  • apps/ui/src/components/views/board-view/components/kanban-card/card-header.tsx
  • apps/ui/src/components/views/board-view/components/kanban-card/kanban-card.tsx
  • apps/ui/src/components/views/board-view/components/kanban-column.tsx
  • apps/ui/src/components/views/board-view/components/list-view/list-row.tsx
  • apps/ui/src/components/views/board-view/components/list-view/list-view.tsx
  • apps/ui/src/components/views/board-view/components/list-view/row-actions.tsx
  • apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/agent-output-modal.tsx
  • apps/ui/src/components/views/board-view/dialogs/backlog-plan-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/branch-conflict-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/change-pr-number-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/cherry-pick-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/commit-worktree-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/create-branch-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/create-pr-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/create-worktree-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/delete-worktree-dialog.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch v0.15.0rc

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gsxdsm gsxdsm requested a review from webdevcody February 25, 2026 05:07
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @gsxdsm, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request delivers a substantial upgrade to the application's core architecture and feature set. The primary focus has been on a major refactoring of the auto-mode service to enhance its modularity and maintainability. Concurrently, the application's Git integration has been vastly expanded, offering a richer set of version control capabilities directly within the interface. Significant advancements in AI model support broaden the range of available tools, alongside improvements to developer workflows and general user experience through enhanced file management and terminal features.

Highlights

  • Auto-mode Service Refactor: The core auto-mode service has undergone a significant architectural refactoring, breaking down a large 'god object' into smaller, focused services with clear boundaries. This improves maintainability, debuggability, and modularity, while preserving all existing auto-mode functionality.
  • Enhanced Git Integration: Introduced comprehensive Git capabilities including a file browser with diff viewer and status support, branch tracking, stashing changes, cherry-picking commits, and advanced merge/rebase options with AI-assisted conflict resolution. This significantly expands the in-app Git workflow.
  • Expanded AI Model Support: Added support for several new AI models, including GPT-5.3-Codex, Sonnet 4.6, Opus 4.6, GLM-5, Minimax-2.5, and Kimi 2.5. This release also includes OAuth credential improvements and adaptive thinking capabilities for Claude models.
  • Improved Developer Experience & CI: Implemented automatic fixing of SSH URLs in package-lock.json during CI and pre-commit hooks, integrated Playwright Chromium into the Docker image for automated testing, and introduced new ESLint configurations for server-side code. Extensive codebase analysis documentation has also been added.
  • File Management & Terminal Enhancements: New file management features allow browsing, copying, moving, and downloading project files. Terminal functionality has been extended with customizable colors and improved mobile shortcut keys.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .github/actions/setup-project/action.yml
    • Updated CI workflow to auto-fix SSH URLs in package-lock.json before linting.
    • Added conditional installation of Linux native bindings for specific runners.
  • .gitignore
    • Added new entries to ignore development workflow files and local planning documents.
  • .husky/pre-commit
    • Added a pre-commit hook to automatically fix git+ssh:// URLs in package-lock.json.
  • .planning/PROJECT.md
    • Added a new planning document outlining the refactoring of the AutoModeService.
  • .planning/codebase/ARCHITECTURE.md
    • Added a new document detailing the overall architecture of the codebase.
  • .planning/codebase/CONCERNS.md
    • Added a new document outlining technical debt, known bugs, security, performance, and fragile areas of the codebase.
  • .planning/codebase/CONVENTIONS.md
    • Added a new document specifying coding conventions, including naming, style, imports, error handling, logging, and TypeScript usage.
  • .planning/codebase/INTEGRATIONS.md
    • Added a new document detailing external API integrations, data storage, authentication, monitoring, CI/CD, and credential management.
  • .planning/codebase/STACK.md
    • Added a new document describing the technology stack, including languages, runtime, frameworks, and key dependencies.
  • .planning/codebase/STRUCTURE.md
    • Added a new document outlining the codebase directory layout, purposes, key file locations, and naming conventions.
  • .planning/codebase/TESTING.md
    • Added a new document detailing testing patterns, frameworks, organization, mocking, fixtures, coverage, and best practices.
  • CLAUDE.md
    • Updated the model string for 'opus' to claude-opus-4-6.
  • DEVELOPMENT_WORKFLOW.md
    • Removed the development workflow documentation file.
  • Dockerfile
    • Added installation of Playwright Chromium browser for AI agent verification tests.
    • Modified VITE_SERVER_URL argument to allow relative URLs for Docker Compose setups.
  • OPENCODE_CONFIG_CONTENT
    • Added a new configuration file for OpenCode.
  • README.md
    • Updated the README to include documentation for Playwright Chromium installation and persistence in Docker.
  • apps/server/.env.example
    • Added example environment variables for TEST_SERVER_PORT and TEST_PORT.
  • apps/server/eslint.config.mjs
    • Added a new ESLint configuration file for server-side TypeScript code.
  • apps/server/package.json
    • Updated the package version to 0.15.0.
    • Updated @anthropic-ai/claude-agent-sdk to version 0.2.32.
    • Updated @openai/codex-sdk to version 0.98.0.
    • Added @playwright/test as a dev dependency.
  • apps/server/src/index.ts
    • Replaced AutoModeService with AutoModeServiceCompat for the auto-mode service.
    • Added routes and services for Z.AI and Gemini usage tracking.
    • Enhanced Claude authentication detection with detailed logging and path information.
    • Improved CORS handling to correctly identify and allow local/private network origins.
    • Implemented startup logic to reconcile feature states and resume interrupted features.
    • Updated type casting for sessionId in WebSocket event emission.
    • Improved terminal session not found error message for clarity.
  • apps/server/src/lib/cli-detection.ts
    • Removed logger and includeWsl option from CLI detection logic.
  • apps/server/src/lib/error-handler.ts
    • Updated context type to Record<string, unknown> for better type safety.
    • Refined getErrorText function to handle nested error messages more robustly.
  • apps/server/src/lib/exec-utils.ts
    • Added a new utility file for shared process execution functions, including extended PATH and error logging.
  • apps/server/src/lib/git-log-parser.ts
    • Added a new utility file for parsing Git log output into structured commit information.
  • apps/server/src/lib/git.ts
    • Added a new utility file for shared Git command execution, including index lock recovery.
  • apps/server/src/lib/permission-enforcer.ts
    • Updated toolCall type to CursorToolCall for improved type safety in permission checks.
  • apps/server/src/lib/sdk-options.ts
    • Expanded TOOL_PRESETS to include new tools like MultiEdit, LS, Task, and Skill.
    • Introduced adaptive thinking level for Claude models in buildThinkingOptions.
    • Refined buildClaudeMdOptions to independently control system prompt presets and CLAUDE.md auto-loading.
    • Added maxTurns option to CreateSdkOptionsConfig for user-configurable agent turn limits.
  • apps/server/src/lib/settings-helpers.ts
    • Added constants DEFAULT_MAX_TURNS and MAX_ALLOWED_TURNS.
    • Introduced getUseClaudeCodeSystemPromptSetting and getDefaultMaxTurnsSetting to retrieve settings.
    • Adjusted default behavior of getAutoLoadClaudeMdSetting to default to true when unset or service unavailable.
  • apps/server/src/lib/worktree-metadata.ts
    • Updated error handling in readWorktreeMetadata to ignore errors gracefully.
  • apps/server/src/providers/claude-provider.ts
    • Updated Claude Agent SDK version to 0.2.32.
    • Enhanced detectInstallation to support various authentication methods including API keys and CLI OAuth.
    • Updated default maxTurns to 1000.
    • Added tools option to sdkOptions for restricting available built-in tools.
    • Improved prompt payload type handling for multi-part prompts.
    • Enhanced error messages with rate limit and authentication tips.
    • Added new Claude models: claude-opus-4-6 and claude-sonnet-4-6.
  • apps/server/src/providers/codex-models.ts
    • Added new GPT-5.3-Codex models (gpt53Codex, gpt53CodexSpark).
    • Updated descriptions for existing GPT-5.x Codex models.
    • Added base GPT-5 models (gpt5Codex, gpt5CodexMini, gpt5).
  • apps/server/src/providers/codex-provider.ts
    • Removed redundant CODEX_MODEL_MAP import.
    • Updated CODEX_CLI_TIMEOUT_MS to 120 seconds.
    • Expanded DEFAULT_ALLOWED_TOOLS to include new tools like MultiEdit, LS, TodoWrite, Task, and Skill.
    • Refined resolveCodexExecutionPlan to prioritize CLI-native authentication and SDK usage with API keys.
    • Added buildPromptText and buildResumePrompt for better prompt construction.
    • Improved error logging for maxTurns configuration.
    • Added image handling to preExecArgs for CLI execution.
    • Enhanced error messages for rate limits, authentication, model availability, and connection issues.
  • apps/server/src/providers/codex-sdk-client.ts
    • Introduced SdkReasoningEffort type and SDK_REASONING_EFFORTS set.
    • Updated threadOptions to pass model and reasoning effort directly to startThread/resumeThread.
    • Enhanced error messages with actionable tips for model not found and stream disconnections.
  • apps/server/src/providers/copilot-provider.ts
    • Updated DEFAULT_BARE_MODEL to claude-sonnet-4.6.
    • Removed SdkSessionIdleEvent interface.
    • Added ResumableCopilotClient type for session resumption.
    • Improved error message for session.error events.
    • Normalized model string format for Copilot SDK compatibility.
    • Implemented session resumption logic for Copilot sessions.
  • apps/server/src/providers/cursor-provider.ts
    • Added detectProfile import for Cursor configuration.
    • Updated CURSOR_TOOL_HANDLERS with any type assertion for broader tool handling.
    • Added session resumption (--resume) for Cursor CLI execution.
    • Improved error messages for Cursor agent failures.
    • Enhanced logging for active permission profiles.
  • apps/server/src/providers/gemini-provider.ts
    • Removed ContentBlock import.
    • Added SubprocessOptions import.
    • Added --prompt and --resume flags to Gemini CLI arguments for headless execution and session resumption.
    • Improved error messages for Gemini agent failures.
    • Implemented buildSubprocessOptions to pass prompt via stdin and disable Gemini telemetry.
    • Added ensureGeminiIgnore to create a .geminiignore file for faster startup by excluding large directories.
  • apps/server/src/providers/opencode-provider.ts
    • Introduced OpenCodeToolUseEvent interface for tool invocation events.
    • Added --session flag to OpenCode CLI arguments for session continuity.
    • Implemented isSessionNotFoundError, stripAnsiCodes, and cleanErrorMessage for robust error handling.
    • Added session resumption fallback logic in executeQuery to retry without a session ID if a stale session error is detected.
    • Updated normalizeEvent to handle tool_use events and refined step_finish reason handling.
    • Updated OpenCode model list to include GLM 5 Free, Kimi K2.5 Free, and MiniMax M2.5 Free.
  • apps/server/src/providers/provider-factory.ts
    • Updated JSDoc example model ID for clarity.
  • apps/server/src/providers/simple-query-service.ts
    • Removed ProviderMessage and ContentBlock imports.
    • Updated DEFAULT_MODEL to claude-sonnet-4-6.
  • apps/server/src/routes/agent/routes/history.ts
    • Updated agentService.getHistory to await its result.
  • apps/server/src/routes/agent/routes/queue-list.ts
    • Updated agentService.getQueue to await its result.
  • apps/server/src/routes/agent/routes/send.ts
    • Added error emission via WebSocket for background sendMessage failures.
  • apps/server/src/routes/agent/routes/start.ts
    • Renamed logger to _logger to avoid naming conflicts.
  • apps/server/src/routes/app-spec/common.ts
    • Updated type casting for error logging.
  • apps/server/src/routes/app-spec/generate-features-from-spec.ts
    • Renamed CODEX_FEATURE_GENERATION_TIMEOUT_MS to _CODEX_FEATURE_GENERATION_TIMEOUT_MS.
  • apps/server/src/routes/app-spec/sync-spec.ts
    • Removed RoadmapPhase import.
  • apps/server/src/routes/auto-mode/index.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Added createReconcileHandler route.
  • apps/server/src/routes/auto-mode/routes/analyze-project.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Improved background analysis error handling with logError.
  • apps/server/src/routes/auto-mode/routes/approve-plan.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Added projectPath as a required parameter.
    • Updated autoModeService.resolvePlanApproval call signature.
  • apps/server/src/routes/auto-mode/routes/commit-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/context-exists.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/follow-up-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Removed .finally block for followUpFeature call.
  • apps/server/src/routes/auto-mode/routes/reconcile.ts
    • Added a new route for reconciling feature states in a project.
  • apps/server/src/routes/auto-mode/routes/resume-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/resume-interrupted.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/run-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Removed worktree capacity check, allowing manual feature starts to bypass concurrency limits.
  • apps/server/src/routes/auto-mode/routes/start.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/status.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Updated autoModeService.getStatusForProject to await its result.
  • apps/server/src/routes/auto-mode/routes/stop-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/stop.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/auto-mode/routes/verify-feature.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/backlog-plan/common.ts
    • Enhanced error messages for Claude CLI process crashes and signals with more diagnostic detail.
  • apps/server/src/routes/backlog-plan/generate-plan.ts
    • Added retry logic for transient CLI failures during plan generation.
    • Improved response text selection from streamed and final provider results.
    • Added getUseClaudeCodeSystemPromptSetting and getProviderByModelId imports.
    • Introduced branchName parameter for worktree-scoped backlog planning.
    • Refined model and provider resolution for custom Claude-compatible providers.
  • apps/server/src/routes/backlog-plan/routes/apply.ts
    • Updated BacklogChange and Feature imports.
    • Added in-memory feature object mutation to ensure consistency after dependency removal.
  • apps/server/src/routes/backlog-plan/routes/generate.ts
    • Added branchName to the request body for generating backlog plans.
    • Refactored generateBacklogPlan call to include branchName and handle its own state cleanup.
  • apps/server/src/routes/context/routes/describe-image.ts
    • Enhanced error messages for Claude CLI process crashes and signals with more specific user guidance.
  • apps/server/src/routes/enhance-prompt/routes/enhance.ts
    • Refined model selection for custom Claude-compatible providers to ensure correct model ID is passed to the API.
  • apps/server/src/routes/features/index.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Added GET /list route for fetching features.
    • Passed events to createUpdateHandler.
  • apps/server/src/routes/features/routes/create.ts
    • Removed duplicate feature title check.
  • apps/server/src/routes/features/routes/export.ts
    • Renamed featureLoader parameter to _featureLoader as it's unused.
  • apps/server/src/routes/features/routes/generate-title.ts
    • Removed projectPath from the request body as it's not used.
  • apps/server/src/routes/features/routes/import.ts
    • Renamed featureLoader parameter to _featureLoader as it's unused.
  • apps/server/src/routes/features/routes/list.ts
    • Added support for GET requests to /list endpoint.
    • Improved projectPath extraction from request body or query parameters.
    • Enhanced orphaned feature detection logging.
  • apps/server/src/routes/features/routes/update.ts
    • Passed events to createUpdateHandler.
    • Removed duplicate feature title check.
    • Added feature:completed event emission when feature status transitions to verified or completed.
  • apps/server/src/routes/fs/index.ts
    • Added new routes for browse-project-files, copy, move, and download.
  • apps/server/src/routes/fs/routes/browse-project-files.ts
    • Added a new route for browsing files and directories within a project, with filtering for hidden directories and path traversal prevention.
  • apps/server/src/routes/fs/routes/copy.ts
    • Added a new route for copying files or directories, including recursive directory copy and overwrite options.
  • apps/server/src/routes/fs/routes/download.ts
    • Added a new route for downloading files or zipping and downloading directories, with size limits and streaming support.
  • apps/server/src/routes/fs/routes/mkdir.ts
    • Updated error handling for statError to correctly check for ENOENT code.
  • apps/server/src/routes/fs/routes/move.ts
    • Added a new route for moving (renaming) files or directories, including overwrite options and path traversal prevention.
  • apps/server/src/routes/fs/routes/resolve-directory.ts
    • Renamed fileCount parameter to _fileCount as it's unused.
  • apps/server/src/routes/fs/routes/save-board-background.ts
    • Removed mimeType from the request body as it's not used.
  • apps/server/src/routes/fs/routes/save-image.ts
    • Removed mimeType from the request body as it's not used.
  • apps/server/src/routes/fs/routes/validate-path.ts
    • Removed PathNotAllowedError import as it's no longer directly used here.
  • apps/server/src/routes/fs/routes/write.ts
    • Added a default empty string for content if it's undefined or null to prevent writing 'undefined' as literal text.
  • apps/server/src/routes/gemini/index.ts
    • Added a new route for Gemini API usage tracking and status checks.
  • apps/server/src/routes/git/index.ts
    • Added new routes for stage-files, details, and enhanced-status.
  • apps/server/src/routes/git/routes/details.ts
    • Added a new route for retrieving detailed Git information for a file or project, including branch, last commit, diff stats, and conflict status.
  • apps/server/src/routes/git/routes/diffs.ts
    • Added mergeState to the response for Git diffs.
  • apps/server/src/routes/git/routes/enhanced-status.ts
    • Added a new route for retrieving enhanced Git status with per-file diff stats and staging information.
  • apps/server/src/routes/git/routes/stage-files.ts
    • Added a new route for staging or unstaging specific files in a Git repository.
  • apps/server/src/routes/github/index.ts
    • Added new routes for pr-review-comments and resolve-pr-comment.
  • apps/server/src/routes/github/routes/common.ts
    • Refactored to re-export common Git and execution utilities from lib/exec-utils.js.
  • apps/server/src/routes/github/routes/list-pr-review-comments.ts
    • Added a new route for fetching review comments for a GitHub Pull Request.
  • apps/server/src/routes/github/routes/resolve-pr-comment.ts
    • Added a new route for resolving or unresolving GitHub PR review threads.
  • apps/server/src/routes/github/routes/validate-issue.ts
    • Added resolveModelString import.
    • Refined model selection for custom Claude-compatible providers to ensure correct model ID is passed to the API.
  • apps/server/src/routes/github/routes/validation-endpoints.ts
    • Removed isValidationRunning and readValidation imports.
  • apps/server/src/routes/models/routes/providers.ts
    • Updated type for the providers record to Record<string, Record<string, unknown>> for better type safety.
  • apps/server/src/routes/projects/index.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/projects/routes/overview.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Added type annotations for allRunningAgents and autoModeStatus for clarity.
  • apps/server/src/routes/running-agents/index.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
  • apps/server/src/routes/running-agents/routes/index.ts
    • Updated AutoModeService type to AutoModeServiceCompat.
    • Added await for autoModeService.getRunningAgents() call.
  • apps/server/src/routes/settings/routes/update-global.ts
    • Updated type casting for updates to use direct property access instead of any.
  • apps/server/src/routes/setup/routes/auth-claude.ts
    • Removed unused exec and promisify imports.
  • apps/server/src/routes/setup/routes/auth-opencode.ts
    • Removed unused exec and promisify imports.
  • apps/server/src/routes/setup/routes/copilot-models.ts
    • Removed unused createLogger and logger instance.
  • apps/server/src/routes/setup/routes/opencode-models.ts
    • Removed unused createLogger and logger instance.
  • apps/server/src/routes/setup/routes/verify-claude-auth.ts
    • Added getClaudeAuthIndicators import for more detailed auth detection.
    • Introduced cleanupEnv variable to ensure process.env is restored after SDK calls.
    • Updated default Claude model to claude-sonnet-4-6 for verification queries.
    • Improved type safety for msg.message.content parsing.
    • Enhanced success messages to include specific authentication types (API key, OAuth, CLI).
  • apps/server/src/routes/terminal/common.ts
    • Removed unused getTerminalService import.
  • apps/server/src/routes/terminal/routes/auth.ts
    • Removed unused getErrorMessage import.
  • apps/server/src/routes/worktree/common.ts
    • Refactored to re-export Git and validation utilities from lib/git.js and @automaker/utils.
    • Removed redundant execGitCommand and MAX_BRANCH_NAME_LENGTH definitions.
  • apps/server/src/routes/worktree/index.ts
    • Added new routes for commit-log, stash-push, stash-list, stash-apply, stash-drop, cherry-pick, branch-commit-log, generate-pr-description, rebase, abort-operation, continue-operation, stage-files, check-changes, set-tracking, sync, and update-pr-number.
    • Updated createMergeHandler, createCreateHandler, createCheckoutBranchHandler, and createSwitchBranchHandler to pass events and settingsService.
  • apps/server/src/routes/worktree/routes/abort-operation.ts
    • Added a new route for aborting in-progress Git merge, rebase, or cherry-pick operations.
  • apps/server/src/routes/worktree/routes/branch-commit-log.ts
    • Added a new route for retrieving recent commit history for a specific branch.
  • apps/server/src/routes/worktree/routes/branch-tracking.ts
    • Updated error handling for fs.readFile to use unknown type.
  • apps/server/src/routes/worktree/routes/check-changes.ts
    • Added a new route for checking uncommitted changes in a worktree, categorizing staged, unstaged, and untracked files.
  • apps/server/src/routes/worktree/routes/checkout-branch.ts
    • Added EventEmitter import and performCheckoutBranch service import.
    • Introduced createLogger, fetchRemotes, and isBranchError utilities.
    • Refactored branch checkout logic to use performCheckoutBranch service for stash handling and remote branch support.
  • apps/server/src/routes/worktree/routes/cherry-pick.ts
    • Added a new route for cherry-picking one or more commits into the current branch, with conflict detection and event emission.
  • apps/server/src/routes/worktree/routes/commit-log.ts
    • Added a new route for retrieving recent commit history for the current worktree.
  • apps/server/src/routes/worktree/routes/commit.ts
    • Updated to use execFile for safer command execution.
    • Modified commit logic to allow staging specific files instead of always staging all changes.
  • apps/server/src/routes/worktree/routes/continue-operation.ts
    • Added a new route for continuing in-progress Git merge, rebase, or cherry-pick operations after conflict resolution.
  • apps/server/src/routes/worktree/routes/create-pr.ts
    • Added isValidRemoteName, execGitCommand, spawnProcess, and resolvePrTarget imports.
    • Refactored PR creation logic for improved safety, fork handling, and robust existing PR detection.
  • apps/server/src/routes/worktree/routes/create.ts
    • Added SettingsService and WorktreeService imports.
    • Introduced syncBaseBranch for syncing the base branch before worktree creation.
    • Refactored worktree creation to include base branch syncing and copying configured files.
  • apps/server/src/routes/worktree/routes/delete.ts
    • Added fs/promises import.
    • Improved worktree removal logic with a prune fallback and robust directory existence checks.
  • apps/server/src/routes/worktree/routes/diffs.ts
    • Added mergeState to the response for Git diffs.
  • apps/server/src/routes/worktree/routes/discard-changes.ts
    • Refactored to use execGitCommand for safer execution.
    • Introduced validateFilePath and parseFilePath for path safety and rename handling.
    • Implemented selective file discarding functionality.
  • apps/server/src/routes/worktree/routes/generate-commit-message.ts
    • Updated to use execFile for safer command execution.
    • Integrated withTimeout for AI provider calls.
    • Improved response parsing for generated commit messages.
  • apps/server/src/routes/worktree/routes/generate-pr-description.ts
    • Added a new route for generating AI-powered Pull Request descriptions from git diffs and commit logs.
  • apps/server/src/routes/worktree/routes/list-branches.ts
    • Updated to use execFile for safer command execution.
    • Added getRemotesWithBranch utility.
    • Included trackingRemote and remotesWithBranch in the response for detailed branch information.
  • apps/server/src/routes/worktree/routes/list.ts
    • Added detectConflictState utility.
    • Included conflict information (hasConflicts, conflictType, conflictFiles) in the worktree list response.
  • apps/server/src/routes/worktree/routes/merge.ts
    • Refactored merge logic to use the performMerge service for improved modularity and conflict handling.
  • apps/server/src/routes/worktree/routes/open-in-editor.ts
    • Simplified error handling for fallback to file manager when opening in editor fails.
  • apps/server/src/routes/worktree/routes/pull.ts
    • Refactored pull logic to use the performPull service for enhanced stash management and conflict detection.
  • apps/server/src/routes/worktree/routes/push.ts
    • Refactored push logic to use the performPush service for improved error handling and auto-resolution.
  • apps/server/src/routes/worktree/routes/rebase.ts
    • Added a new route for rebasing the current branch onto a target branch, with conflict detection and event emission.
  • apps/server/src/routes/worktree/routes/set-tracking.ts
    • Added a new route for setting the upstream tracking branch for a worktree.
  • apps/server/src/routes/worktree/routes/stage-files.ts
    • Added a new route for staging or unstaging specific files in a Git worktree.
  • apps/server/src/routes/worktree/routes/stash-apply.ts
    • Added a new route for applying or popping a Git stash entry.
  • apps/server/src/routes/worktree/routes/stash-drop.ts
    • Added a new route for dropping (deleting) a Git stash entry.
  • apps/server/src/routes/worktree/routes/stash-list.ts
    • Added a new route for listing all Git stashes in a worktree.
  • apps/server/src/routes/worktree/routes/stash-push.ts
    • Added a new route for stashing changes in a worktree.
  • apps/server/src/routes/worktree/routes/sync.ts
    • Added a new route for performing a full Git sync (pull then push) with automatic divergence handling.
  • apps/server/src/routes/worktree/routes/update-pr-number.ts
    • Added a new route for updating the tracked PR number for a worktree, with GitHub CLI integration.
  • apps/server/src/services/agent-executor-types.ts
    • Added a new file defining types for agent execution options and callbacks.
  • apps/server/src/services/agent-executor.ts
    • Added a new file implementing the core agent execution engine, handling streaming, task execution, and plan approval workflows.
  • apps/server/src/services/agent-service.ts
    • Introduced isStaleSessionError for detecting provider-side session errors.
    • Implemented ensureSession to transparently load sessions from disk if not in memory.
    • Updated sendMessage and other session-related methods to use ensureSession and improved error handling.
    • Integrated useClaudeCodeSystemPrompt and getDefaultMaxTurnsSetting into SDK options.
    • Expanded the list of baseTools for agent capabilities.
    • Refined model selection for custom Claude-compatible providers.
    • Improved sdkSessionId handling for session continuity and clearing stale IDs.
    • Enhanced tool result parsing and event emission for better UI feedback.
    • Added clearSdkSessionId and emitSessionError methods.
  • apps/server/src/services/auto-loop-coordinator.ts
    • Added a new service for managing the auto-mode loop lifecycle, including concurrency, failure tracking, and project state.
  • apps/server/src/services/auto-mode-service.ts
    • Removed the monolithic AutoModeService file, replaced by the new modular auto-mode service architecture.
  • apps/server/src/services/auto-mode/compat.ts
    • Added a new compatibility shim file, providing the old AutoModeService interface by delegating to the new architecture.
  • apps/server/src/services/auto-mode/facade.ts
    • Added a new facade service, providing a clean, per-project interface for auto-mode functionality by delegating to underlying services.
  • apps/server/src/services/auto-mode/global-service.ts
    • Added a new global service for auto-mode operations that span across all projects, managing overall status and shared state.
  • apps/server/src/services/auto-mode/index.ts
    • Added a new index file for the auto-mode service module, exporting its components and types.
  • apps/server/src/services/auto-mode/types.ts
    • Added a new file defining types for the auto-mode facade and its related services.
  • apps/server/src/services/branch-commit-log-service.ts
    • Added a new service for fetching structured commit log data for a specific branch.
  • apps/server/src/services/branch-sync-service.ts
    • Added a new service for syncing local base branches with their remote tracking branches, including fast-forward logic and divergence detection.
  • apps/server/src/services/branch-utils.ts
    • Added a new utility file for shared Git branch operations, including checking for changes, stashing, and popping stashes.
  • apps/server/src/services/checkout-branch-service.ts
    • Added a new service for creating and checking out new branches, with optional stash handling and conflict detection.
  • apps/server/src/services/cherry-pick-service.ts
    • Added a new service for performing Git cherry-pick operations, including commit verification and conflict handling.
  • apps/server/src/services/claude-usage-service.ts
    • Improved ANSI stripping and URL detection logic for dev server output.
    • Enhanced trust prompt detection for Claude CLI output.
  • apps/server/src/services/commit-log-service.ts
    • Added a new service for fetching structured commit log data for the current worktree.
  • apps/server/src/services/concurrency-manager.ts
    • Added a new service for managing running feature slots using a lease-based reference counting system.
  • apps/server/src/services/dev-server-service.ts
    • Significantly improved URL detection from dev server output using a comprehensive set of patterns.
    • Introduced a URL detection timeout fallback to use the allocated port if no URL is detected from output.
    • Refined port allocation and release logic.
    • Improved stale server pruning to handle processes that exit unexpectedly.
  • apps/server/src/services/event-history-service.ts
    • Removed unused getEventHistoryDir import.
  • apps/server/src/services/event-hook-service.ts
    • Added handling for feature:completed events to trigger hooks.
    • Implemented handling for feature_status_changed events to trigger hooks for manual completions.
    • Introduced markFeatureHandled to prevent duplicate hook firing for the same feature completion event.
  • apps/server/src/services/execution-service.ts
    • Added a new service responsible for orchestrating the execution of individual features.
  • apps/server/src/services/feature-loader.ts
    • Added syncFeatureToAppSpec method for updating app_spec.txt.
    • Introduced findDuplicateTitle method for checking feature title uniqueness.
    • Added updateFeatureStatus method for updating feature status.
  • apps/server/src/services/feature-state-manager.ts
    • Added a new service for managing the state and lifecycle of features.
  • apps/server/src/services/gemini-usage-service.ts
    • Added a new service for tracking Gemini API usage.
  • apps/server/src/services/github-pr-comment.service.ts
    • Added a new service for interacting with GitHub PR comments via GraphQL API.
  • apps/server/src/services/merge-service.ts
    • Added a new service for handling Git merge operations, including conflict detection and resolution.
  • apps/server/src/services/pipeline-orchestrator.ts
    • Added a new service for orchestrating feature implementation pipelines, managing tasks and phases.
  • apps/server/src/services/plan-approval-service.ts
    • Added a new service for managing the plan approval workflow during agent execution.
  • apps/server/src/services/pr-review-comments.service.ts
    • Added a new service for fetching GitHub PR review comments.
  • apps/server/src/services/pr-service.ts
    • Added a new service for resolving GitHub PR targets and repository information.
  • apps/server/src/services/push-service.ts
    • Added a new service for handling Git push operations, including conflict detection and auto-resolution.
  • apps/server/src/services/rebase-service.ts
    • Added a new service for handling Git rebase operations, including conflict detection and event emission.
  • apps/server/src/services/recovery-service.ts
    • Added a new service for recovering interrupted feature executions and managing execution state.
  • apps/server/src/services/settings-service.ts
    • Added autoModeByWorktree to GlobalSettings for per-worktree auto-mode configuration.
    • Added copyFilesToWorktree to ProjectSettings for specifying files to copy on worktree creation.
  • apps/server/src/services/stage-files-service.ts
    • Added a new service for staging or unstaging files in a Git repository.
  • apps/server/src/services/stash-service.ts
    • Added a new service for managing Git stashes, including push, list, apply, and drop operations.
  • apps/server/src/services/sync-service.ts
    • Added a new service for performing comprehensive Git sync operations (pull then push).
  • apps/server/src/services/test-runner-service.ts
    • Added a new service for running automated tests.
  • apps/server/src/services/typed-event-bus.ts
    • Added a new service implementing a typed event bus for structured event emission.
  • apps/server/src/services/worktree-branch-service.ts
    • Added a new service for handling Git worktree branch operations, including switching branches with stash management.
  • apps/server/src/services/worktree-service.ts
    • Added a new service for managing Git worktrees, including creation, deletion, and file copying.
  • apps/server/src/services/zai-usage-service.ts
    • Added a new service for tracking Z.AI API usage.
  • libs/types/src/event.ts
    • Added numerous new event types for auto-mode lifecycle, Git operations (conflicts, stashes, cherry-picks, rebase), and PR comments.
  • libs/types/src/feature.ts
    • Added imagePaths property to Feature interface.
    • Introduced planSpec property to Feature for storing planning details.
    • Defined ParsedTask type for structured tasks.
    • Updated FeatureStatus enum with new states.
  • libs/types/src/index.ts
    • Exported newly defined types.
  • libs/types/src/model.ts
    • Introduced ModelProvider enum.
    • Updated ModelDefinition with new properties and model IDs.
    • Updated CODEX_MODEL_MAP, GEMINI_MODEL_MAP, and OPCODE_MODEL_MAP with new model entries.
    • Updated DEFAULT_MODELS with new default Claude model.
  • libs/types/src/sdk-options.ts
    • Introduced SystemPromptPreset, ThinkingLevel, ReasoningEffort, and McpServerConfig types.
    • Updated CreateSdkOptionsConfig with new options for system prompts, thinking levels, and max turns.
  • libs/types/src/session.ts
    • Added SessionMetadata and QueuedPrompt types for agent session management.
  • libs/types/src/settings.ts
    • Added autoModeByWorktree to GlobalSettings for per-worktree auto-mode configuration.
    • Added copyFilesToWorktree to ProjectSettings for specifying files to copy on worktree creation.
    • Introduced defaultMaxTurns and useClaudeCodeSystemPrompt to GlobalSettings.
  • libs/types/src/worktree.ts
    • Added WorktreePRInfo and WorktreeMetadata types for worktree-specific PR information.
  • libs/utils/src/git.ts
    • Added a new utility file for Git-related helper functions.
  • libs/utils/src/index.ts
    • Exported newly added utility functions.
  • libs/utils/src/json.ts
    • Added extractJsonWithArray function for robust JSON extraction.
  • libs/utils/src/logger.ts
    • Added LOG_LEVEL_MAP and setLogLevel for dynamic logging configuration.
  • libs/utils/src/path.ts
    • Added mkdirSafe function for safe directory creation.
  • libs/utils/src/string.ts
    • Added sanitizeFilename function for cleaning filenames.
  • libs/utils/src/types.ts
    • Added isAuthenticationError function for detecting authentication-related errors.
  • libs/utils/src/validation.ts
    • Added isValidBranchName and isValidRemoteName for Git-related input validation.
  • package.json
    • Updated @automaker/server version to 0.15.0.
    • Added eslint and prettier as dev dependencies for code quality.
    • Updated @anthropic-ai/claude-agent-sdk to 0.2.32.
    • Updated @openai/codex-sdk to 0.98.0.
    • Added @playwright/test to dev dependencies.
  • scripts/fix-lockfile-urls.mjs
    • Added a new script for automatically fixing SSH URLs in package-lock.json.
  • vitest.config.ts
    • Updated Vitest coverage thresholds and exclusions.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/e2e-tests.yml
    • .github/workflows/release.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is a massive pull request that introduces a significant refactoring of the auto-mode service, adds a ton of new features around Git integration (file browser, stashing, cherry-picking, etc.), and improves CI/CD, configuration, and error handling across the board. The architectural change to break down the large auto-mode-service is a huge step forward for maintainability. My review found a few issues: a redundant entry in .gitignore, invalid JSON in a new config file, the removal of a critical server-side validation for duplicate feature titles, and a non-portable use of the zip command in the new file download feature. Overall, this is an impressive set of changes.

Comment on lines +72 to +75
await execFileAsync('zip', ['-r', tmpZipPath, fileName], {
cwd: path.dirname(filePath),
maxBuffer: 50 * 1024 * 1024,
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Using the system's zip command via execFileAsync is not cross-platform and will fail on Windows environments where zip is not available in the PATH. This will break the directory download functionality for Windows users. It's recommended to use a cross-platform Node.js library like archiver to create zip archives.

Here's a conceptual example:

import archiver from 'archiver';
import { createWriteStream } from 'fs';

// ... inside the handler
const output = createWriteStream(tmpZipPath);
const archive = archiver('zip', { zlib: { level: 9 } });

archive.pipe(output);
archive.directory(filePath, fileName); // Add the directory to the archive
await archive.finalize();

// Then stream the created zip file to the response

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This is a major release (v0.15.0rc) that significantly expands git workflow capabilities, refactors the auto-mode service architecture, and adds comprehensive file management features. The changes focus on improving developer experience with git operations, pull request workflows, and file manipulation through the UI.

Changes:

  • Auto-mode service refactored into smaller, focused services with clear boundaries
  • Added comprehensive git workflow features: stash management, cherry-pick, rebase, merge/conflict resolution, and branch tracking
  • Implemented file browser with tabbed editor, diff viewer, drag/drop, and markdown preview
  • Enhanced pull request functionality with comment viewing, resolution, and instant feature creation

Reviewed changes

Copilot reviewed 166 out of 538 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
apps/server/package.json Version bump to 0.15.0, SDK updates (@anthropic-ai/claude-agent-sdk: 0.2.32, @openai/codex-sdk: 0.98.0), Playwright added
apps/server/src/services/event-history-service.ts Removed unused import getEventHistoryDir
apps/server/src/services/commit-log-service.ts New service for fetching commit log data with efficient single git invocation
apps/server/src/services/claude-usage-service.ts Enhanced ANSI code stripping to preserve word boundaries, added trust dialog patterns
apps/server/src/services/cherry-pick-service.ts New service for git cherry-pick operations with conflict detection
apps/server/src/services/branch-utils.ts Shared git branch utilities extracted for reuse across services
apps/server/src/services/auto-mode/types.ts Type definitions for refactored auto-mode service facade
apps/server/src/services/auto-mode/index.ts Entry point for auto-mode functionality with facade pattern
apps/server/src/services/agent-executor-types.ts Type definitions for agent execution extracted from main service
apps/server/src/routes/zai/index.ts New routes for z.ai API usage tracking and configuration
apps/server/src/routes/worktree/routes/*.ts Multiple new route handlers for git operations (stash, cherry-pick, rebase, sync, etc.)
apps/server/src/routes/worktree/common.ts Refactored to re-export from canonical shared modules
apps/server/src/routes/terminal/routes/auth.ts Removed unused import
apps/server/src/routes/setup/routes/verify-claude-auth.ts Updated model reference, enhanced auth type detection
apps/server/src/routes/github/routes/*.ts New PR comment functionality and refactored common utilities
apps/server/src/routes/git/routes/*.ts Enhanced status and stage-files operations
apps/server/src/routes/fs/routes/*.ts New file operations: copy, move, download, browse-project-files
apps/server/src/routes/features/routes/*.ts Updated to use AutoModeServiceCompat, removed duplicate title checks
apps/server/src/routes/auto-mode/routes/*.ts Updated to use refactored AutoModeServiceCompat interface
apps/server/src/providers/*.ts Model updates, session resumption support, enhanced error handling
apps/server/src/lib/*.ts New utilities for exec, git-log-parser, error handling improvements
Dockerfile Playwright Chromium pre-installation, VITE_SERVER_URL configuration change
.github/workflows/*.ts Port changes for E2E tests, SSH URL auto-fix in lockfile
README.md Documentation for Playwright in Docker

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

resetTime = this.parseResetTime(resetText, type);
// Strip timezone like "(Asia/Dubai)" from the display text
resetText = resetText.replace(/\s*\([A-Za-z_\/]+\)\s*$/, '').trim();
resetText = resetText.replace(/\s*\([A-Za-z_/]+\)\s*$/, '').trim();
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The regex escape sequence \/ is unnecessary in JavaScript character classes. Forward slash does not need escaping in regex literals. Remove the backslash for cleaner code.

Copilot uses AI. Check for mistakes.
// or creating minimal info if no GitHub data available
const prInfo = {
number: prNumber,
url: `https://github.com/pulls/${prNumber}`,
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback PR URL is incorrect. The correct GitHub URL format for pull requests requires the owner and repo: https://github.com/{owner}/{repo}/pull/{number}. The current URL https://github.com/pulls/{number} is the authenticated user's global PR list, not a specific repository PR.

Copilot uses AI. Check for mistakes.
switch (operation) {
case 'merge':
// For merge, we need to commit after resolving conflicts
continueCommand = 'git commit --no-edit';
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using shell string for git commands is vulnerable to command injection if any paths or branch names contain special characters. Use execFileAsync with argument array instead of execAsync with shell string.

Copilot uses AI. Check for mistakes.
let abortCommand: string;
switch (operation) {
case 'merge':
abortCommand = 'git merge --abort';
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using shell string for git commands is vulnerable to command injection. Use execFileAsync or execGitCommand with argument array instead of execAsync with shell string.

Copilot uses AI. Check for mistakes.
Comment on lines +27 to +29
// Default content to empty string if undefined/null to prevent writing
// "undefined" as literal text (e.g. when content field is missing from request)
await secureFs.writeFile(filePath, content ?? '', 'utf-8');
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Writing empty string when content is undefined/null silently creates empty files instead of returning validation error. This masks client-side bugs where content is accidentally omitted. Consider returning 400 error when content is missing.

Copilot uses AI. Check for mistakes.
Comment on lines +72 to +73
await execFileAsync('zip', ['-r', tmpZipPath, fileName], {
cwd: path.dirname(filePath),
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

User-provided fileName is passed as argument to zip command. While execFileAsync prevents shell injection, malicious filenames with special characters could cause zip to fail or behave unexpectedly. Validate fileName to ensure it doesn't start with - (which could be interpreted as a flag).

Copilot uses AI. Check for mistakes.
if (options.sdkSessionId) {
try {
thread = codex.resumeThread(options.sdkSessionId);
thread = codex.resumeThread(options.sdkSessionId, threadOptions);
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resumeThread is called with threadOptions but the original code (line 136) calls startThread with threadOptions on resume failure. This suggests resumeThread may not accept the same options signature. Verify the SDK API accepts threadOptions on resume, or this will cause runtime errors.

Suggested change
thread = codex.resumeThread(options.sdkSessionId, threadOptions);
thread = codex.resumeThread(options.sdkSessionId);

Copilot uses AI. Check for mistakes.
Comment on lines +58 to +59
logger.info(`${logPrefix} SettingsService not available, autoLoadClaudeMd defaulting to true`);
return true;
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed default from false to true when SettingsService unavailable. This is a breaking behavioral change that could cause unexpected claude.md loading in environments where the service is intentionally disabled. Document this change or maintain backward-compatible default.

Suggested change
logger.info(`${logPrefix} SettingsService not available, autoLoadClaudeMd defaulting to true`);
return true;
logger.info(`${logPrefix} SettingsService not available, autoLoadClaudeMd defaulting to false`);
return false;

Copilot uses AI. Check for mistakes.
Comment on lines +212 to +214
# When VITE_SERVER_URL is empty, the UI uses relative URLs (e.g., /api/...) which nginx proxies
# to the server container. This avoids CORS issues entirely in Docker Compose setups.
# Override at build time if needed: --build-arg VITE_SERVER_URL=http://api.example.com
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VITE_SERVER_URL now defaults to empty string instead of http://localhost:3008. This is a significant configuration change affecting Docker deployments. Ensure deployment documentation is updated to explain that relative URLs are now used by default and how to override for non-proxied setups.

Suggested change
# When VITE_SERVER_URL is empty, the UI uses relative URLs (e.g., /api/...) which nginx proxies
# to the server container. This avoids CORS issues entirely in Docker Compose setups.
# Override at build time if needed: --build-arg VITE_SERVER_URL=http://api.example.com
# NOTE: VITE_SERVER_URL now defaults to an empty string. In this mode the UI uses
# relative URLs (e.g., /api/...) to talk to the backend. In Docker Compose/nginx
# setups these relative paths are proxied to the server container, avoiding CORS
# issues by keeping all traffic same-origin.
#
# For non-proxied setups (e.g., running the UI container directly, or using a
# custom ingress without path-based proxying), you MUST override VITE_SERVER_URL
# at build time so the UI knows the full API base URL, for example:
# docker build --target ui \
# --build-arg VITE_SERVER_URL=http://localhost:3008 \
# -t automaker-ui .
# or set it to your external API URL (e.g., http://api.example.com).

Copilot uses AI. Check for mistakes.
Comment on lines +49 to +50
PORT: 3108
TEST_SERVER_PORT: 3108
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Port numbers are duplicated across multiple env vars (PORT and TEST_SERVER_PORT). Define a single variable and reference it to avoid sync issues when changing test ports.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants