Skip to content

V1.0.0rc#841

Merged
webdevcody merged 29 commits intomainfrom
v1.0.0rc
Mar 15, 2026
Merged

V1.0.0rc#841
webdevcody merged 29 commits intomainfrom
v1.0.0rc

Conversation

@webdevcody
Copy link
Collaborator

No description provided.

DhanushSantosh and others added 29 commits February 26, 2026 10:53
…on Linux

- Add --ozone-platform-hint=auto before app.whenReady() so Electron
  auto-detects X11 vs Wayland when launched from a desktop entry where
  the display protocol is not guaranteed (fixes immediate crash on
  Fedora/GNOME Wayland sessions)
- Add autoHideMenuBar: true to BrowserWindow so the default Chromium
  File/Edit/View/Help menu bar is hidden by default (still accessible
  via Alt); removes visible Electron significance from the packaged app
- Add scripts/rpm-after-install.sh and wire it via afterInstall in the
  electron-builder RPM config to chmod 4755 chrome-sandbox, ensuring
  the setuid sandbox works on kernels with restricted user namespaces

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- icon-manager.ts: fix production path from '../dist/public' to '../dist'
  Vite copies public/ assets to the root of dist/, not dist/public/, so
  the old path caused electronAppExists() to return null in packaged
  builds — falling through to Electron's default icon in the taskbar
- rpm-after-install.sh: add gtk-update-icon-cache and
  update-desktop-database so GNOME/KDE picks up the installed icon and
  desktop entry immediately without a session restart

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Changes from fix/agent-output-summary-for-pipeline-steps

* feat: Optimize pipeline summary extraction and fix regex vulnerability

* fix: Use fallback summary for pipeline steps when extraction fails

* fix: Strip follow-up session scaffold from pipeline step fallback summaries
The hicolor icon theme index only lists sizes up to 512x512, so an icon
installed only at 1024x1024 is invisible to GNOME/KDE's theme resolver,
causing both the app launcher and taskbar to show a generic icon.
Additionally, BrowserWindow.icon cannot be read by the window manager
when the file is inside app.asar.

- extraResources: copy logo_larger.png to resources/ (outside asar) so
  it lands at /opt/Automaker/resources/logo_larger.png on install
- linux.desktop.Icon: set to the absolute resources path, bypassing the
  hicolor theme lookup and its size constraints entirely
- icon-manager.ts: on Linux production use process.resourcesPath so
  BrowserWindow receives a real filesystem path the WM can read directly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
electron-builder v26 rejects arbitrary keys in linux.desktop — the
correct schema wraps custom .desktop overrides inside desktop.entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without app.setDesktopName(), the window manager cannot associate the
running Electron process with automaker.desktop. GNOME/KDE fall back to
_NET_WM_ICON which defaults to Electron's own bundled icon.

Calling app.setDesktopName('automaker.desktop') before any window is
created sets the _GTK_APPLICATION_ID hint and XDG app_id so the WM
picks up the desktop entry's Icon for the taskbar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Changes from fix/memory-and-context-mobile-friendly

* fix: Improve file extension detection and add path traversal protection

* refactor: Extract file extension utilities and add path traversal guards

Code review improvements:
- Extract isMarkdownFilename and isImageFilename to shared image-utils.ts
- Remove duplicated code from context-view.tsx and memory-view.tsx
- Add path traversal guard for context fixture utilities (matching memory)
- Add 7 new tests for context fixture path traversal protection
- Total 61 tests pass

Addresses code review feedback from PR #813

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: Add e2e tests for profiles crud and board background persistence

* Update apps/ui/playwright.config.ts

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

* fix: Add robust test navigation handling and file filtering

* fix: Format NODE_OPTIONS configuration on single line

* test: Update profiles and board background persistence tests

* test: Replace iPhone 13 Pro with Pixel 5 for mobile test consistency

* Update apps/ui/src/components/views/context-view.tsx

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

* chore: Remove test project directory

* feat: Filter context files by type and improve mobile menu visibility

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fix(copilot): correct tool.execution_complete event handling

The CopilotProvider was using incorrect event type and data structure
for tool execution completion events from the @github/copilot-sdk,
causing tool call outputs to be empty.

Changes:
- Update event type from 'tool.execution_end' to 'tool.execution_complete'
- Fix data structure to use nested result.content instead of flat result
- Fix error structure to use error.message instead of flat error
- Add success field to match SDK event structure
- Add tests for empty and missing result handling

This aligns with the official @github/copilot-sdk v0.1.16 types
defined in session-events.d.ts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test(copilot): add edge case test for error with code field

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* refactor(copilot): improve error handling and code quality

Code review improvements:
- Extract magic string '[ERROR]' to TOOL_ERROR_PREFIX constant
- Add null-safe error handling with direct error variable assignment
- Include error codes in error messages for better debugging
- Add JSDoc documentation for tool.execution_complete handler
- Update tests to verify error codes are displayed
- Add missing tool_use_id assertion in error test

These changes improve:
- Code maintainability (no magic strings)
- Debugging experience (error codes now visible)
- Type safety (explicit null checks)
- Test coverage (verify error code formatting)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Changes from fix/bug-fixes-1-0

* test(copilot): add edge case test for error with code field

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Changes from fix/bug-fixes-1-0

* fix: Handle detached HEAD state in worktree discovery and recovery

* fix: Remove unused isDevServerStarting prop and md: breakpoint classes

* fix: Add missing dependency and sanitize persisted cache data

* feat: Ensure NODE_ENV is set to test in vitest configs

* feat: Configure Playwright to run only E2E tests

* fix: Improve PR tracking and dev server lifecycle management

* feat: Add settings-based defaults for planning mode, model config, and custom providers. Fixes #816

* feat: Add worktree and branch selector to graph view

* fix: Add timeout and error handling for worktree HEAD ref resolution

* fix: use absolute icon path and place icon outside asar on Linux

The hicolor icon theme index only lists sizes up to 512x512, so an icon
installed only at 1024x1024 is invisible to GNOME/KDE's theme resolver,
causing both the app launcher and taskbar to show a generic icon.
Additionally, BrowserWindow.icon cannot be read by the window manager
when the file is inside app.asar.

- extraResources: copy logo_larger.png to resources/ (outside asar) so
  it lands at /opt/Automaker/resources/logo_larger.png on install
- linux.desktop.Icon: set to the absolute resources path, bypassing the
  hicolor theme lookup and its size constraints entirely
- icon-manager.ts: on Linux production use process.resourcesPath so
  BrowserWindow receives a real filesystem path the WM can read directly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: use linux.desktop.entry for custom desktop Icon field

electron-builder v26 rejects arbitrary keys in linux.desktop — the
correct schema wraps custom .desktop overrides inside desktop.entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: set desktop name on Linux so taskbar uses the correct app icon

Without app.setDesktopName(), the window manager cannot associate the
running Electron process with automaker.desktop. GNOME/KDE fall back to
_NET_WM_ICON which defaults to Electron's own bundled icon.

Calling app.setDesktopName('automaker.desktop') before any window is
created sets the _GTK_APPLICATION_ID hint and XDG app_id so the WM
picks up the desktop entry's Icon for the taskbar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix: memory and context views mobile friendly (#818)

* Changes from fix/memory-and-context-mobile-friendly

* fix: Improve file extension detection and add path traversal protection

* refactor: Extract file extension utilities and add path traversal guards

Code review improvements:
- Extract isMarkdownFilename and isImageFilename to shared image-utils.ts
- Remove duplicated code from context-view.tsx and memory-view.tsx
- Add path traversal guard for context fixture utilities (matching memory)
- Add 7 new tests for context fixture path traversal protection
- Total 61 tests pass

Addresses code review feedback from PR #813

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: Add e2e tests for profiles crud and board background persistence

* Update apps/ui/playwright.config.ts

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

* fix: Add robust test navigation handling and file filtering

* fix: Format NODE_OPTIONS configuration on single line

* test: Update profiles and board background persistence tests

* test: Replace iPhone 13 Pro with Pixel 5 for mobile test consistency

* Update apps/ui/src/components/views/context-view.tsx

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

* chore: Remove test project directory

* feat: Filter context files by type and improve mobile menu visibility

---------

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

* fix: Improve test reliability and localhost handling

* chore: Use explicit TEST_USE_EXTERNAL_BACKEND env var for server cleanup

* feat: Add E2E/CI mock mode for provider factory and auth verification

* feat: Add remoteBranch parameter to pull and rebase operations

* chore: Enhance E2E testing setup with worker isolation and auth state management

- Updated .gitignore to include worker-specific test fixtures.
- Modified e2e-tests.yml to implement test sharding for improved CI performance.
- Refactored global setup to authenticate once and save session state for reuse across tests.
- Introduced worker-isolated fixture paths to prevent conflicts during parallel test execution.
- Improved test navigation and loading handling for better reliability.
- Updated various test files to utilize new auth state management and fixture paths.

* fix: Update Playwright configuration and improve test reliability

- Increased the number of workers in Playwright configuration for better parallelism in CI environments.
- Enhanced the board background persistence test to ensure dropdown stability by waiting for the list to populate before interaction, improving test reliability.

* chore: Simplify E2E test configuration and enhance mock implementations

- Updated e2e-tests.yml to run tests in a single shard for streamlined CI execution.
- Enhanced unit tests for worktree list handling by introducing a mock for execGitCommand, improving test reliability and coverage.
- Refactored setup functions to better manage command mocks for git operations in tests.
- Improved error handling in mkdirSafe function to account for undefined stats in certain environments.

* refactor: Improve test configurations and enhance error handling

- Updated Playwright configuration to clear VITE_SERVER_URL, ensuring the frontend uses the Vite proxy and preventing cookie domain mismatches.
- Enhanced MergeRebaseDialog logic to normalize selectedBranch for better handling of various ref formats.
- Improved global setup with a more robust backend health check, throwing an error if the backend is not healthy after retries.
- Refactored project creation tests to handle file existence checks more reliably.
- Added error handling for missing E2E source fixtures to guide setup process.
- Enhanced memory navigation to handle sandbox dialog visibility more effectively.

* refactor: Enhance Git command execution and improve test configurations

- Updated Git command execution to merge environment paths correctly, ensuring proper command execution context.
- Refactored the Git initialization process to handle errors more gracefully and ensure user configuration is set before creating the initial commit.
- Improved test configurations by updating Playwright test identifiers for better clarity and consistency across different project states.
- Enhanced cleanup functions in tests to handle directory removal more robustly, preventing errors during test execution.

* fix: Resolve React hooks errors from duplicate instances in dependency tree

* style: Format alias configuration for improved readability

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: DhanushSantosh <dhanushsantoshs05@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* test(copilot): add edge case test for error with code field

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Changes from fix/bug-fixes-1-0

* refactor(auto-mode): enhance orphaned feature detection and improve project initialization

- Updated detectOrphanedFeatures method to accept preloaded features, reducing redundant disk reads.
- Improved project initialization by creating required directories and files in parallel for better performance.
- Adjusted planning mode handling in UI components to clarify approval requirements for different modes.
- Added refresh functionality for file editor tabs to ensure content consistency with disk state.

These changes enhance performance, maintainability, and user experience across the application.

* feat(orphaned-features): add orphaned features management routes and UI integration

- Introduced new routes for managing orphaned features, including listing, resolving, and bulk resolving.
- Updated the UI to include an Orphaned Features section in project settings and navigation.
- Enhanced the execution service to support new orphaned feature functionalities.

These changes improve the application's capability to handle orphaned features effectively, enhancing user experience and project management.

* fix: Normalize line endings and resolve stale dirty states in file editor

* chore: Update .gitignore and enhance orphaned feature handling

- Added a blank line in .gitignore for better readability.
- Introduced a hash to worktree paths in orphaned feature resolution to prevent conflicts.
- Added validation for target branch existence during orphaned feature resolution.
- Improved prompt formatting in execution service for clarity.
- Enhanced error handling in project selector for project initialization failures.
- Refactored orphaned features section to improve state management and UI responsiveness.

These changes improve code maintainability and user experience when managing orphaned features.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Changes from fix/orphaned-features

* fix: Handle feature migration failures and improve UI accessibility

* feat: Add event emission for worktree deletion and feature migration

* fix: Handle OpenCode model errors and prevent duplicate model IDs

* feat: Add summary dialog and async verify with loading state

* fix: Add type attributes to buttons and improve OpenCode model selection

* fix: Add null checks for onVerify callback and opencode model selection
Playwright requires the first argument to use object destructuring pattern.
Changed `_` to `{}` in feature-deep-link.spec.ts beforeEach.
Two changes:
1. Server: Skip morgan logging for context-exists endpoint (like health check)
2. UI: Use a stable fingerprint (feature IDs + statuses) instead of the
   unstable features array reference as the useEffect dependency. This
   prevents re-checking context for all features on every React Query
   refetch when the actual feature set hasn't changed.
Address PR #825 review feedback:
- Extract duplicated backlog-like status check into shared helper in constants.ts
- Improve spec-parser regex comment to clarify subsection preservation
- Add file path reference in row-actions.tsx comment for traceability

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Changes from fix/dev-server-hang

* fix: Address PR #828 review feedback

- Reset RAF buffer on context changes (worktree switch, dev-server restart)
  to prevent stale output from flushing into new sessions
- Fix high-frequency WebSocket filter to catch auto-mode:event wrapping
  (auto_mode_progress is wrapped in auto-mode:event) and add feature:progress
- Reorder Vite aliases so explicit jsx-runtime entries aren't shadowed by
  the broad /^react(\/|$)/ regex (Vite uses first-match-wins)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: Batch dev server logs and fix React module resolution order

* feat: Add fallback timer for flushing dev server logs in background tabs

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Changes from fix/board-react-crash

* fix: Prevent cascading re-renders and crashes from high-frequency WS events
* Changes from fix/event-hook-endpoint

* fix: Allow empty eventHooks/ntfyEndpoints to reconcile from server

Remove the `length > 0` guards in fast-hydrate reconciliation that
prevented intentional empty-array clears from syncing across clients.
Server-side wipe protection (`__allowEmpty*` escape hatches) already
ensures empty arrays in the server are intentional.

Addresses PR #831 review feedback from CodeRabbit and Gemini.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Changes from fix/feature-deeplink-worktree

* Update apps/ui/src/components/views/board-view.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>
…rrors (#836)

* Changes from fix/pipeline-not-finishing

* fix: Prevent overwriting merge_conflict status in pipeline error handlers

* fix: Handle feature loading failures gracefully in error recovery

* ```
fix: Add logging when feature reload fails during status update
```
…o locate package.json (#840)

- Changed @github/copilot-sdk dependency from "^0.1.16" to "0.1.16" in package.json and package-lock.json.
- Improved version utility in version.ts to check multiple candidate paths for package.json, ensuring better reliability in locating the file.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 15, 2026

Important

Review skipped

Too many files!

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

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 767c0418-76ca-46c4-adc5-6fd61a0d3ba4

📥 Commits

Reviewing files that changed from the base of the PR and between 6408f51 and 0311130.

📒 Files selected for processing (300)
  • .geminiignore
  • .github/workflows/e2e-tests.yml
  • .gitignore
  • apps/server/package.json
  • apps/server/src/index.ts
  • apps/server/src/lib/git.ts
  • apps/server/src/lib/settings-helpers.ts
  • apps/server/src/lib/version.ts
  • apps/server/src/providers/claude-provider.ts
  • apps/server/src/providers/codex-provider.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/mock-provider.ts
  • apps/server/src/providers/opencode-provider.ts
  • apps/server/src/providers/provider-factory.ts
  • apps/server/src/routes/app-spec/generate-features-from-spec.ts
  • apps/server/src/routes/app-spec/parse-and-create-features.ts
  • apps/server/src/routes/backlog-plan/index.ts
  • apps/server/src/routes/backlog-plan/routes/apply.ts
  • apps/server/src/routes/features/index.ts
  • apps/server/src/routes/features/routes/list.ts
  • apps/server/src/routes/features/routes/orphaned.ts
  • apps/server/src/routes/features/routes/update.ts
  • apps/server/src/routes/fs/routes/read.ts
  • apps/server/src/routes/fs/routes/stat.ts
  • apps/server/src/routes/github/routes/validate-issue.ts
  • apps/server/src/routes/setup/routes/verify-claude-auth.ts
  • apps/server/src/routes/setup/routes/verify-codex-auth.ts
  • apps/server/src/routes/worktree/index.ts
  • apps/server/src/routes/worktree/routes/delete.ts
  • apps/server/src/routes/worktree/routes/init-git.ts
  • apps/server/src/routes/worktree/routes/list-branches.ts
  • apps/server/src/routes/worktree/routes/list.ts
  • apps/server/src/routes/worktree/routes/pull.ts
  • apps/server/src/services/agent-executor-types.ts
  • apps/server/src/services/agent-executor.ts
  • apps/server/src/services/auto-loop-coordinator.ts
  • apps/server/src/services/auto-mode/compat.ts
  • apps/server/src/services/auto-mode/facade.ts
  • apps/server/src/services/codex-model-cache-service.ts
  • apps/server/src/services/dev-server-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-loader.ts
  • apps/server/src/services/feature-state-manager.ts
  • apps/server/src/services/ntfy-service.ts
  • apps/server/src/services/pipeline-orchestrator.ts
  • apps/server/src/services/pull-service.ts
  • apps/server/src/services/settings-service.ts
  • apps/server/src/services/spec-parser.ts
  • apps/server/src/services/worktree-resolver.ts
  • apps/server/tests/unit/lib/file-editor-store-logic.test.ts
  • apps/server/tests/unit/lib/settings-helpers.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/routes/app-spec/parse-and-create-features-defaults.test.ts
  • apps/server/tests/unit/routes/backlog-plan/apply.test.ts
  • apps/server/tests/unit/routes/running-agents.test.ts
  • apps/server/tests/unit/routes/worktree/list-detached-head.test.ts
  • apps/server/tests/unit/services/agent-executor-summary.test.ts
  • apps/server/tests/unit/services/agent-executor.test.ts
  • apps/server/tests/unit/services/auto-loop-coordinator.test.ts
  • apps/server/tests/unit/services/auto-mode-facade.test.ts
  • apps/server/tests/unit/services/auto-mode/facade-agent-runner.test.ts
  • apps/server/tests/unit/services/dev-server-event-types.test.ts
  • apps/server/tests/unit/services/dev-server-persistence.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/ntfy-service.test.ts
  • apps/server/tests/unit/services/pipeline-orchestrator-prompts.test.ts
  • apps/server/tests/unit/services/pipeline-orchestrator-provider-id.test.ts
  • apps/server/tests/unit/services/pipeline-orchestrator-status-provider.test.ts
  • apps/server/tests/unit/services/pipeline-summary-accumulation.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/worktree-resolver.test.ts
  • apps/server/tests/unit/types/pipeline-types.test.ts
  • apps/server/tests/unit/ui/agent-output-summary-e2e.test.ts
  • apps/server/tests/unit/ui/agent-output-summary-priority.test.ts
  • apps/server/tests/unit/ui/log-parser-mixed-format.test.ts
  • apps/server/tests/unit/ui/log-parser-phase-summary.test.ts
  • apps/server/tests/unit/ui/log-parser-summary.test.ts
  • apps/server/tests/unit/ui/phase-summary-parser.test.ts
  • apps/server/tests/unit/ui/summary-auto-scroll.test.ts
  • apps/server/tests/unit/ui/summary-normalization.test.ts
  • apps/server/tests/unit/ui/summary-source-flow.integration.test.ts
  • apps/ui/.gitignore
  • apps/ui/package.json
  • apps/ui/playwright.config.ts
  • apps/ui/scripts/kill-test-servers.mjs
  • apps/ui/scripts/rpm-after-install.sh
  • apps/ui/scripts/setup-e2e-fixtures.mjs
  • apps/ui/src/components/dialogs/board-background-modal.tsx
  • apps/ui/src/components/dialogs/file-browser-dialog.tsx
  • apps/ui/src/components/dialogs/pr-comment-resolution-dialog.tsx
  • apps/ui/src/components/layout/project-switcher/components/notification-bell.tsx
  • apps/ui/src/components/layout/sidebar/components/project-selector-with-options.tsx
  • apps/ui/src/components/layout/sidebar/hooks/use-navigation.ts
  • apps/ui/src/components/session-manager.tsx
  • apps/ui/src/components/shared/model-override-trigger.tsx
  • apps/ui/src/components/ui/description-image-dropzone.tsx
  • apps/ui/src/components/ui/git-diff-panel.tsx
  • apps/ui/src/components/ui/header-actions-panel.tsx
  • apps/ui/src/components/ui/sheet.tsx
  • apps/ui/src/components/ui/spinner.tsx
  • apps/ui/src/components/ui/xterm-log-viewer.tsx
  • apps/ui/src/components/views/agent-view/components/agent-header.tsx
  • apps/ui/src/components/views/board-view.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-badges.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-card/summary-dialog.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/components/list-view/status-badge.tsx
  • apps/ui/src/components/views/board-view/components/selection-action-bar.tsx
  • apps/ui/src/components/views/board-view/constants.ts
  • apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/agent-output-modal.constants.ts
  • 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/completed-features-modal.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/edit-feature-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/event-content-formatter.ts
  • apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/merge-rebase-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/plan-approval-dialog.tsx
  • apps/ui/src/components/views/board-view/dialogs/stash-changes-dialog.tsx
  • apps/ui/src/components/views/board-view/hooks/use-board-actions.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-background.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-column-features.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-drag-drop.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-effects.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-features.ts
  • apps/ui/src/components/views/board-view/hooks/use-board-persistence.ts
  • apps/ui/src/components/views/board-view/kanban-board.tsx
  • apps/ui/src/components/views/board-view/shared/model-selector.tsx
  • apps/ui/src/components/views/board-view/shared/planning-mode-select.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/dev-server-logs-panel.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/worktree-actions-dropdown.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/worktree-dropdown-item.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/worktree-dropdown.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/worktree-mobile-dropdown.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/components/worktree-tab.tsx
  • apps/ui/src/components/views/board-view/worktree-panel/hooks/use-dev-server-logs.ts
  • apps/ui/src/components/views/board-view/worktree-panel/hooks/use-dev-servers.ts
  • apps/ui/src/components/views/board-view/worktree-panel/hooks/use-worktrees.ts
  • apps/ui/src/components/views/board-view/worktree-panel/types.ts
  • apps/ui/src/components/views/board-view/worktree-panel/worktree-panel.tsx
  • apps/ui/src/components/views/context-view.tsx
  • apps/ui/src/components/views/dashboard-view.tsx
  • apps/ui/src/components/views/file-editor-view/components/code-editor.tsx
  • apps/ui/src/components/views/file-editor-view/components/editor-tabs.tsx
  • apps/ui/src/components/views/file-editor-view/file-editor-dirty-utils.ts
  • apps/ui/src/components/views/file-editor-view/file-editor-view.tsx
  • apps/ui/src/components/views/file-editor-view/use-file-editor-store.ts
  • apps/ui/src/components/views/github-issues-view.tsx
  • apps/ui/src/components/views/github-issues-view/components/issue-detail-panel.tsx
  • apps/ui/src/components/views/github-issues-view/hooks/use-issue-validation.ts
  • apps/ui/src/components/views/github-issues-view/hooks/use-issues-filter.ts
  • apps/ui/src/components/views/github-prs-view.tsx
  • apps/ui/src/components/views/graph-view-page.tsx
  • apps/ui/src/components/views/graph-view/graph-canvas.tsx
  • apps/ui/src/components/views/graph-view/graph-view.tsx
  • apps/ui/src/components/views/graph-view/hooks/use-graph-nodes.ts
  • apps/ui/src/components/views/interview-view.tsx
  • apps/ui/src/components/views/login-view.tsx
  • apps/ui/src/components/views/memory-view.tsx
  • apps/ui/src/components/views/notifications-view.tsx
  • apps/ui/src/components/views/overview/recent-activity-feed.tsx
  • apps/ui/src/components/views/project-settings-view/config/navigation.ts
  • apps/ui/src/components/views/project-settings-view/hooks/use-project-settings-view.ts
  • apps/ui/src/components/views/project-settings-view/orphaned-features-section.tsx
  • apps/ui/src/components/views/project-settings-view/project-bulk-replace-dialog.tsx
  • apps/ui/src/components/views/project-settings-view/project-settings-view.tsx
  • apps/ui/src/components/views/running-agents-view.tsx
  • apps/ui/src/components/views/settings-view.tsx
  • apps/ui/src/components/views/settings-view/appearance/appearance-section.tsx
  • apps/ui/src/components/views/settings-view/event-hooks/event-hook-dialog.tsx
  • apps/ui/src/components/views/settings-view/event-hooks/event-hooks-section.tsx
  • apps/ui/src/components/views/settings-view/model-defaults/bulk-replace-dialog.tsx
  • apps/ui/src/components/views/settings-view/model-defaults/phase-model-selector.tsx
  • apps/ui/src/components/views/settings-view/providers/opencode-model-configuration.tsx
  • apps/ui/src/components/views/setup-view/steps/cli-setup-step.tsx
  • apps/ui/src/components/views/spec-view/hooks/use-spec-generation.ts
  • apps/ui/src/components/views/terminal-view.tsx
  • apps/ui/src/components/views/terminal-view/terminal-panel.tsx
  • apps/ui/src/electron/server/backend-server.ts
  • apps/ui/src/electron/utils/icon-manager.ts
  • apps/ui/src/electron/windows/main-window.ts
  • apps/ui/src/hooks/mutations/use-github-mutations.ts
  • apps/ui/src/hooks/queries/use-features.ts
  • apps/ui/src/hooks/queries/use-worktrees.ts
  • apps/ui/src/hooks/use-agent-output-websocket.ts
  • apps/ui/src/hooks/use-auto-mode.ts
  • apps/ui/src/hooks/use-guided-prompts.ts
  • apps/ui/src/hooks/use-query-invalidation.ts
  • apps/ui/src/hooks/use-settings-migration.ts
  • apps/ui/src/hooks/use-settings-sync.ts
  • apps/ui/src/hooks/use-test-runners.ts
  • apps/ui/src/lib/agent-context-parser.ts
  • apps/ui/src/lib/electron.ts
  • apps/ui/src/lib/feature-transition-state.ts
  • apps/ui/src/lib/http-api-client.ts
  • apps/ui/src/lib/image-utils.ts
  • apps/ui/src/lib/log-parser.ts
  • apps/ui/src/lib/project-init.ts
  • apps/ui/src/lib/query-client.ts
  • apps/ui/src/lib/settings-utils.ts
  • apps/ui/src/lib/summary-selection.ts
  • apps/ui/src/lib/utils.ts
  • apps/ui/src/main.ts
  • apps/ui/src/routes/__root.tsx
  • apps/ui/src/routes/board.lazy.tsx
  • apps/ui/src/routes/board.tsx
  • apps/ui/src/store/app-store.ts
  • apps/ui/src/store/types/project-types.ts
  • apps/ui/src/store/types/state-types.ts
  • apps/ui/src/store/ui-cache-store.ts
  • apps/ui/src/types/electron.d.ts
  • apps/ui/tests/agent/start-new-chat-session.spec.ts
  • apps/ui/tests/context/add-context-image.spec.ts
  • apps/ui/tests/context/context-file-management.spec.ts
  • apps/ui/tests/context/delete-context-file.spec.ts
  • apps/ui/tests/context/desktop-context-view.spec.ts
  • apps/ui/tests/e2e-testing-guide.md
  • apps/ui/tests/features/edit-feature.spec.ts
  • apps/ui/tests/features/feature-deep-link.spec.ts
  • apps/ui/tests/features/opus-thinking-level-none.spec.ts
  • apps/ui/tests/features/responsive/agent-output-modal-responsive.spec.ts
  • apps/ui/tests/features/running-task-card-display.spec.ts
  • apps/ui/tests/features/success-log-contrast.spec.ts
  • apps/ui/tests/global-setup.ts
  • apps/ui/tests/global-teardown.ts
  • apps/ui/tests/memory/desktop-memory-view.spec.ts
  • apps/ui/tests/profiles/profiles-crud.spec.ts
  • apps/ui/tests/projects/board-background-persistence.spec.ts
  • apps/ui/tests/projects/new-project-creation.spec.ts
  • apps/ui/tests/projects/open-existing-project.spec.ts
  • apps/ui/tests/settings/event-hooks-settings.spec.ts
  • apps/ui/tests/settings/settings-startup-sync-race.spec.ts
  • apps/ui/tests/setup.ts
  • apps/ui/tests/unit/components/agent-info-panel-merge-conflict.test.tsx
  • apps/ui/tests/unit/components/agent-info-panel.test.tsx
  • apps/ui/tests/unit/components/agent-output-modal-constants.test.ts
  • apps/ui/tests/unit/components/agent-output-modal-integration.test.tsx
  • apps/ui/tests/unit/components/agent-output-modal-responsive.test.tsx
  • apps/ui/tests/unit/components/card-actions.test.tsx
  • apps/ui/tests/unit/components/card-badges.test.tsx
  • apps/ui/tests/unit/components/event-content-formatter.test.ts
  • apps/ui/tests/unit/components/feature-creation-defaults.test.ts
  • apps/ui/tests/unit/components/mobile-terminal-shortcuts.test.tsx
  • apps/ui/tests/unit/components/phase-model-selector.test.tsx
  • apps/ui/tests/unit/components/pr-comment-resolution-pr-info.test.ts
  • apps/ui/tests/unit/components/worktree-panel-props.test.ts
  • apps/ui/tests/unit/hooks/use-board-column-features.test.ts
  • apps/ui/tests/unit/hooks/use-dev-servers.test.ts
  • apps/ui/tests/unit/hooks/use-features-cache.test.ts
  • apps/ui/tests/unit/hooks/use-guided-prompts.test.ts
  • apps/ui/tests/unit/hooks/use-media-query.test.ts
  • apps/ui/tests/unit/hooks/use-test-runners-deps.test.ts
  • apps/ui/tests/unit/lib/agent-context-parser.test.ts
  • apps/ui/tests/unit/lib/settings-utils.test.ts
  • apps/ui/tests/unit/lib/summary-selection.test.ts
  • apps/ui/tests/unit/lint-fixes-navigator-type.test.ts
  • apps/ui/tests/unit/lint-fixes-type-safety.test.ts
  • apps/ui/tests/unit/store/app-store-recently-completed.test.ts
  • apps/ui/tests/unit/store/ui-cache-store-worktree.test.ts
  • apps/ui/tests/utils/api/client.ts
  • apps/ui/tests/utils/cleanup-test-dirs.ts
  • apps/ui/tests/utils/components/dialogs.ts
  • apps/ui/tests/utils/core/constants.ts
  • apps/ui/tests/utils/core/interactions.ts
  • apps/ui/tests/utils/core/safe-paths.ts
  • apps/ui/tests/utils/core/waiting.ts
  • apps/ui/tests/utils/git/worktree.ts
  • apps/ui/tests/utils/index.ts
  • apps/ui/tests/utils/navigation/views.ts
  • apps/ui/tests/utils/project/fixtures.spec.ts
  • apps/ui/tests/utils/project/fixtures.ts
  • apps/ui/tests/utils/project/setup.ts
  • apps/ui/tests/utils/views/agent.ts
  • apps/ui/tests/utils/views/board.ts
  • apps/ui/tests/utils/views/context.ts
  • apps/ui/tests/utils/views/memory.ts
  • apps/ui/tests/utils/views/profiles.ts
  • apps/ui/vite.config.mts
  • apps/ui/vitest.config.ts
  • libs/platform/tests/terminal-theme-colors.test.ts
  • libs/prompts/src/defaults.ts

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 v1.0.0rc
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

You can get early access to new features in CodeRabbit.

Enable the early_access setting to enable early access features such as new models, tools, and more.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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 focuses on enhancing the stability, testability, and user experience of the application. Key improvements include a more robust model resolution system, the introduction of a mock agent for testing, and significant upgrades to Git and dev server management. The system now provides better feedback through accumulated pipeline summaries and ntfy.sh notifications, alongside improved navigation capabilities for deep linking to specific features and projects.

Highlights

  • Version Bump: The server and UI packages have been updated to version 1.0.0.
  • Enhanced Provider/Model Resolution: A new resolveProviderContext function provides robust resolution for Claude-compatible providers and models, supporting explicit provider IDs, fallback mechanisms, and proper handling of mapped Claude models. This includes improved model ID validation for various providers like Codex, Cursor, and Gemini.
  • Mock Agent for E2E/CI Testing: A new MockProvider has been introduced, and the ProviderFactory now routes all model requests to this mock provider when the AUTOMAKER_MOCK_AGENT environment variable is set to true. This allows for reliable and isolated end-to-end and CI testing without external API calls.
  • Improved Git Integration and Worktree Management: Git command execution has been made more robust by extending the PATH for better discoverability in various environments. Worktree listing now includes detached HEAD recovery and enhanced PR tracking logic. The worktree deletion process now automatically moves associated features to the main worktree to prevent orphaned features.
  • Dev Server Persistence and Stability: The dev server service now persists the state of running servers across restarts, allowing re-attachment to existing processes. Output throttling and batch sizes have been adjusted for better WebSocket performance, and concurrent server starts for the same worktree are prevented.
  • Pipeline Summary Accumulation: The FeatureStateManager now accumulates summaries for pipeline features across multiple steps, preserving a chronological history of each phase. This accumulated summary is emitted in auto-mode events and used by the UI for a comprehensive overview of feature progress.
  • Orphaned Feature Detection and Resolution: New API routes and logic have been added to detect and resolve orphaned features (features with missing Git branches). Resolution options include deleting the feature, recreating the worktree, or moving the feature to an existing branch.
  • Deep Linking and UI Navigation: The UI now supports deep linking to specific features and projects via URL parameters, automatically switching projects and worktrees as needed. Navigation to notifications has also been enhanced to direct users to the relevant feature output modal.
  • Ntfy.sh Event Hooks: A new ntfy action type has been added to event hooks, allowing users to send push notifications via ntfy.sh. This includes support for custom endpoints, authentication, tags, emojis, and deep linking to features.

🧠 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
  • .geminiignore
    • Added new ignore file for Gemini CLI to prevent scanning large directories.
  • .gitignore
    • Updated to ignore test project directories and the .bg-shell/ directory.
  • apps/server/package.json
    • Bumped server package version to 1.0.0.
    • Pinned @github/copilot-sdk dependency to exact version 0.1.16.
  • apps/server/src/index.ts
    • Added /api/auto-mode/context-exists to the Morgan request logging skip list.
    • Updated devServerService initialization to handle potential errors.
    • Modified feature resume logic to always attempt resuming interrupted features for all projects on startup.
    • Passed featureLoader to createWorktreeRoutes for enhanced worktree management.
    • Adjusted WebSocket event logging to use debug level for high-frequency events and warn for WebSocket not open, reducing log spam.
  • apps/server/src/lib/git.ts
    • Extended the system PATH for Git commands to improve discoverability in various environments (e.g., Electron, CI).
  • apps/server/src/lib/settings-helpers.ts
    • Introduced resolveProviderContext for comprehensive Claude-compatible provider and model resolution.
    • Added ProviderContextResult interface to encapsulate resolved provider, credentials, and model information.
  • apps/server/src/lib/version.ts
    • Improved package.json path resolution to correctly find the version in both development and packaged build outputs.
  • apps/server/src/providers/claude-provider.ts
    • Added a comment clarifying that Claude models do not use provider prefixes.
  • apps/server/src/providers/codex-provider.ts
    • Modified validateBareModelId to correctly handle codex- prefixed models for the Codex provider.
  • apps/server/src/providers/copilot-provider.ts
    • Updated Copilot SDK event types from tool.execution_end to tool.execution_complete.
    • Enhanced error message formatting for tool results to include optional error codes for better debugging.
  • apps/server/src/providers/cursor-provider.ts
    • Modified validateBareModelId to correctly handle gemini- prefixed models for the Cursor provider.
  • apps/server/src/providers/gemini-provider.ts
    • Modified validateBareModelId to correctly handle gemini- prefixed models for the Gemini provider.
  • apps/server/src/providers/mock-provider.ts
    • Added a new MockProvider for E2E and CI testing, providing no-op AI responses.
  • apps/server/src/providers/opencode-provider.ts
    • Enhanced model display name formatting to correctly handle nested model IDs and tier/pricing suffixes.
  • apps/server/src/providers/provider-factory.ts
    • Implemented mock agent functionality, routing all model requests to MockProvider when AUTOMAKER_MOCK_AGENT=true.
  • apps/server/src/routes/app-spec/generate-features-from-spec.ts
    • Passed settingsService to parseAndCreateFeatures for access to default settings.
  • apps/server/src/routes/app-spec/parse-and-create-features.ts
    • Updated to load default model and planning settings from settingsService.
    • Applied default planning mode, approval requirements, and model to newly created features.
  • apps/server/src/routes/backlog-plan/index.ts
    • Passed settingsService to createApplyHandler for accessing default feature settings.
  • apps/server/src/routes/backlog-plan/routes/apply.ts
    • Updated to apply default model and planning settings to features created from the backlog plan.
  • apps/server/src/routes/features/index.ts
    • Added new routes for orphaned feature detection (/orphaned), single resolution (/orphaned/resolve), and bulk resolution (/orphaned/bulk-resolve).
  • apps/server/src/routes/features/routes/list.ts
    • Modified detectOrphanedFeatures to accept an optional preloadedFeatures argument, optimizing feature loading.
  • apps/server/src/routes/features/routes/orphaned.ts
    • Added new file implementing API endpoints for detecting and resolving orphaned features.
  • apps/server/src/routes/features/routes/update.ts
    • Improved error handling for feature updates, returning 404 if the feature is not found.
  • apps/server/src/routes/fs/routes/read.ts
    • Expanded OPTIONAL_FILES to include context-metadata.json and various context/memory files.
    • Changed missing optional files to return a 404 status instead of 500, allowing clients to handle 'not found' scenarios gracefully.
  • apps/server/src/routes/fs/routes/stat.ts
    • Changed missing files or directories to return a 404 status instead of 500.
  • apps/server/src/routes/github/routes/validate-issue.ts
    • Replaced getProviderByModelId with resolveProviderContext for more flexible provider resolution.
    • Added providerId to the request body and runValidation arguments, allowing explicit provider selection.
    • Updated model validation to include normalizedProviderId when checking for valid models.
  • apps/server/src/routes/setup/routes/verify-claude-auth.ts
    • Added logic to skip real API calls for auth verification when in E2E/CI mock mode.
  • apps/server/src/routes/setup/routes/verify-codex-auth.ts
    • Added logic to skip real API calls for auth verification when in E2E/CI mock mode.
  • apps/server/src/routes/worktree/index.ts
    • Passed featureLoader to createDeleteHandler for managing features during worktree deletion.
  • apps/server/src/routes/worktree/routes/delete.ts
    • Modified createDeleteHandler to accept events and featureLoader.
    • Implemented logic to move features associated with a deleted branch to the main worktree, preventing orphaned features.
  • apps/server/src/routes/worktree/routes/init-git.ts
    • Improved Git repository initialization robustness, including handling existing repositories and ensuring user configuration for commits.
  • apps/server/src/routes/worktree/routes/list-branches.ts
    • Updated Git commands to use execGitCommand for better compatibility in sandboxed CI environments.
  • apps/server/src/routes/worktree/routes/list.ts
    • Enhanced worktree listing to recover branch names for detached HEAD states (e.g., during rebase).
    • Improved PR tracking logic to preserve manual overrides from metadata while syncing fresh GitHub data.
    • Added graceful handling for unavailable Git environments (e.g., sandboxed E2E) by returning a minimal worktree list.
  • apps/server/src/routes/worktree/routes/pull.ts
    • Added a remoteBranch option to the pull handler, allowing explicit pulling of a specific remote branch.
  • apps/server/src/services/agent-executor-types.ts
    • Added an optional status field to AgentExecutionOptions for pipeline summary extraction.
  • apps/server/src/services/agent-executor.ts
    • Implemented logic to extract and save session summaries, with a fallback mechanism for pipeline steps.
    • Modified detectTaskCompleteMarker to extract a summary alongside the task ID.
    • Added stripFollowUpScaffold to clean up session content before using it as a fallback summary.
  • apps/server/src/services/auto-loop-coordinator.ts
    • Adjusted sleep intervals for auto-loop states (capacity, idle, normal, error).
    • Improved auto_mode_idle emission logic to prevent premature firing when features are still in in_progress status.
    • Added featureBelongsToWorktree and hasInProgressFeaturesForWorktree for more accurate worktree alignment and idle checks.
  • apps/server/src/services/auto-mode/compat.ts
    • Modified detectOrphanedFeatures to accept an optional preloadedFeatures argument.
  • apps/server/src/services/auto-mode/facade.ts
    • Added isFeatureEligibleForAutoMode to filter features based on status and worktree alignment.
    • Updated createRunAgentFn to use resolveProviderContext and pass providerResolvedModel and status to the agent executor.
    • Modified feature loading to use isFeatureEligibleForAutoMode for filtering.
    • Updated getPlanningPromptPrefixFn to select prompts based on the feature's planning mode.
    • Modified detectOrphanedFeatures to accept an optional preloadedFeatures argument.
  • apps/server/src/services/codex-model-cache-service.ts
    • Updated inferTier to include gpt-5.3-codex models in the 'premium' tier.
  • apps/server/src/services/dev-server-service.ts
    • Adjusted output throttle to 100ms and batch size to 8192 bytes for better WebSocket performance.
    • Implemented persistence for running dev servers, allowing re-attachment across server restarts.
    • Added a startingServers set to prevent concurrent start attempts for the same worktree.
    • Improved stopDevServer to handle killing processes that may not have a direct process handle (e.g., re-attached servers).
  • apps/server/src/services/event-hook-service.ts
    • Added ntfy as a new action type for event hooks.
    • Implemented executeNtfyHook to send push notifications via ntfy.sh, including variable substitution and deep linking.
  • apps/server/src/services/execution-service.ts
    • Separated buildFeatureDescription from buildFeaturePrompt for better prompt construction in planning mode.
    • Improved worktree error handling to prevent agent execution if a worktree is not found in worktree mode.
    • Modified prompt building logic to use buildFeatureDescription when planning mode is active.
    • Added providerId to the options passed to runAgentFn.
    • Updated summary saving logic to prevent overwriting accumulated pipeline summaries.
    • Adjusted fallback status for failed pipeline features to waiting_approval if the pipeline completed successfully.
  • apps/server/src/services/execution-types.ts
    • Added providerId to the RunAgentFn options interface.
  • apps/server/src/services/feature-loader.ts
    • Ensured createdAt timestamp is set for new features during creation.
  • apps/server/src/services/feature-state-manager.ts
    • Refactored status update logic to finalize in-progress tasks when a feature reaches a terminal state.
    • Preserved pipeline statuses (pipeline_*) during feature reset, allowing for resume.
    • Implemented summary accumulation for pipeline features, adding step headers and separators.
    • Added notification handling for auto-mode error events, using feature titles for clarity.
  • apps/server/src/services/ntfy-service.ts
    • Added new service ntfyService for sending push notifications to ntfy.sh endpoints.
  • apps/server/src/services/pipeline-orchestrator.ts
    • Added status and providerId to the options passed to runAgentFn for pipeline steps.
    • Included mandatory summary format instructions in pipeline step prompts to ensure proper summary extraction.
    • Adjusted fallback status for failed pipeline features to waiting_approval if the pipeline completed successfully.
  • apps/server/src/services/pull-service.ts
    • Added a remoteBranch option to PullOptions and performPull for explicit remote branch selection.
  • apps/server/src/services/settings-service.ts
    • Added wipe protection for ntfyEndpoints to prevent accidental data loss.
    • Included eventHooks and ntfyEndpoints in the default global settings structure.
    • Implemented migration logic for ntfyEndpoints from local storage.
  • apps/server/src/services/spec-parser.ts
    • Modified detectTaskCompleteMarker to extract a summary alongside the task ID.
    • Updated extractSummary to handle ## Summary sections more robustly, including ### subsections.
  • apps/server/src/services/worktree-resolver.ts
    • Added branch name normalization to findWorktreeForBranch for consistent matching.
  • apps/server/tests/unit/lib/file-editor-store-logic.test.ts
    • Added new unit tests for file editor dirty state logic, focusing on unsaved indicator fixes.
  • apps/server/tests/unit/lib/settings-helpers.test.ts
    • Added new unit tests for getProviderById, getProviderByModelId, resolveProviderContext, and getAllProviderModels.
  • apps/server/tests/unit/providers/codex-provider.test.ts
    • Added unit tests for validateBareModelId integration with Codex provider.
  • apps/server/tests/unit/providers/copilot-provider.test.ts
    • Updated unit tests for Copilot provider to reflect tool.execution_complete event and improved error handling.
  • apps/server/tests/unit/providers/cursor-provider.test.ts
    • Added unit tests for Cursor Gemini model support and validateBareModelId integration.
  • apps/server/tests/unit/providers/gemini-provider.test.ts
    • Added unit tests for validateBareModelId integration with Gemini provider.
  • apps/server/tests/unit/routes/app-spec/parse-and-create-features-defaults.test.ts
    • Added new unit tests for default fields applied to features created by parseAndCreateFeatures.
  • apps/server/tests/unit/routes/backlog-plan/apply.test.ts
    • Added new unit tests for createApplyHandler to verify application of default feature model and planning settings.
  • apps/server/tests/unit/routes/running-agents.test.ts
    • Updated unit tests to include model and provider information for running agents.
  • apps/server/tests/unit/routes/worktree/list-detached-head.test.ts
    • Added new unit tests for worktree list endpoint handling of detached HEAD state and PR tracking precedence.
  • apps/server/tests/unit/services/agent-executor-summary.test.ts
    • Added new unit tests for AgentExecutor summary extraction and pipeline step summary fallback.
  • apps/server/tests/unit/services/agent-executor.test.ts
    • Added unit tests to verify claudeCompatibleProvider is passed to executeQuery options.
    • Added unit tests for pipeline summary fallback with scaffold stripping.
  • apps/server/tests/unit/services/auto-loop-coordinator.test.ts
    • Added unit tests for auto_mode_idle emission timing and idle check fixes.
  • apps/server/tests/unit/services/auto-mode-facade.test.ts
    • Added new unit tests for AutoModeServiceFacade agent runner, focusing on provider resolution and model mapping.
  • apps/server/tests/unit/services/dev-server-event-types.test.ts
    • Added new unit tests to verify emission of all required event types during dev server lifecycle.
  • apps/server/tests/unit/services/dev-server-persistence.test.ts
    • Added new unit tests for dev server persistence and concurrent start prevention.
  • apps/server/tests/unit/services/event-hook-service.test.ts
    • Added unit tests for ntfy hook execution, including variable substitution and deep linking.
  • apps/server/tests/unit/services/execution-service.test.ts
    • Updated unit tests to verify providerId passthrough to runAgentFn.
    • Added unit tests for worktree not found error handling.
    • Added unit tests for summary saving logic to prevent overwriting accumulated summaries.
    • Added unit tests for setting waiting_approval status after pipeline completion errors.
  • apps/server/tests/unit/services/feature-state-manager.test.ts
    • Updated unit tests for markFeatureInterrupted to preserve pipeline statuses.
    • Added unit tests for pipeline summary accumulation and notification handling.
  • apps/server/tests/unit/services/ntfy-service.test.ts
    • Added new unit tests for NtfyService, covering endpoint validation, notification sending, and variable substitution.
  • apps/server/tests/unit/services/pipeline-orchestrator-prompts.test.ts
    • Added new unit tests for PipelineOrchestrator prompts, ensuring mandatory summary requirements.
  • apps/server/tests/unit/services/pipeline-orchestrator-provider-id.test.ts
    • Added new unit tests for PipelineOrchestrator to verify providerId passthrough to runAgentFn.
  • apps/server/tests/unit/services/pipeline-orchestrator-status-provider.test.ts
    • Added new unit tests for PipelineOrchestrator to verify coexistence of status and providerId in options.
  • apps/server/tests/unit/services/pipeline-summary-accumulation.test.ts
    • Added new integration tests for pipeline summary accumulation across multiple steps.
  • apps/server/tests/unit/services/settings-service.test.ts
    • Added unit tests for ntfyEndpoints wipe protection and migration from local storage.
  • apps/server/tests/unit/services/spec-parser.test.ts
    • Updated unit tests for detectTaskCompleteMarker to extract summary and handle various cases.
    • Updated unit tests for extractSummary to handle ## Summary sections more robustly.
  • apps/server/tests/unit/services/worktree-resolver.test.ts
    • Added unit tests for branch name normalization in findWorktreeForBranch.
  • apps/server/tests/unit/types/pipeline-types.test.ts
    • Added new unit tests for isPipelineStatus utility function.
  • apps/server/tests/unit/ui/agent-output-summary-e2e.test.ts
    • Added new end-to-end integration tests for agent output summary display flow.
  • apps/server/tests/unit/ui/agent-output-summary-priority.test.ts
    • Added new unit tests for agent output summary priority logic in the UI.
  • apps/server/tests/unit/ui/log-parser-mixed-format.test.ts
    • Added new unit tests for log-parser mixed summary format compatibility.
  • apps/server/tests/unit/ui/log-parser-phase-summary.test.ts
    • Added new unit tests for log-parser phase summary parsing functions.
  • apps/server/tests/unit/ui/log-parser-summary.test.ts
    • Added new unit tests for the UI's extractSummary() function.
  • apps/server/tests/unit/ui/summary-auto-scroll.test.ts
    • Added new unit tests for the summary auto-scroll detection logic.
  • apps/server/tests/unit/ui/summary-normalization.test.ts
    • Added new unit tests for summary normalization between UI components and parser functions.
  • apps/server/tests/unit/ui/summary-source-flow.integration.test.ts
    • Added new integration tests for summary source flow in the UI.
  • apps/ui/.gitignore
    • Added /tests/.auth/ to .gitignore.
  • apps/ui/package.json
    • Bumped UI package version to 1.0.0.
    • Added desktopName field to package.json.
    • Added new dev dependencies: @testing-library/jest-dom, @testing-library/react, @testing-library/user-event, jsdom.
    • Updated electron-builder configuration to include logo_larger.png and rpm-after-install.sh.
  • apps/ui/playwright.config.ts
    • Updated Playwright configuration to use 127.0.0.1 for baseURL and url.
    • Configured testMatch and testIgnore to scope Playwright to E2E specs.
    • Adjusted retries and workers for CI/local environments.
    • Added storageState for reusing auth state across tests.
    • Added globalTeardown script.
    • Extended PATH for E2E server to include common Git locations.
    • Set NODE_OPTIONS to increase Node.js memory limit for tests.
    • Cleared VITE_SERVER_URL to force frontend to use Vite proxy.
  • apps/ui/scripts/kill-test-servers.mjs
    • Updated USE_EXTERNAL_SERVER logic to match Playwright config semantics.
  • apps/ui/scripts/rpm-after-install.sh
    • Added new script for RPM post-installation tasks, including setting setuid bit on chrome-sandbox and updating icon/desktop caches.
  • apps/ui/scripts/setup-e2e-fixtures.mjs
    • Updated to create .automaker/context directory and context-metadata.json for E2E tests.
  • apps/ui/src/components/dialogs/board-background-modal.tsx
    • Adjusted SheetHeader padding for safe-area-inset-top.
  • apps/ui/src/components/dialogs/file-browser-dialog.tsx
    • Added addRecentFolder to dependency array for useEffect hook.
  • apps/ui/src/components/dialogs/pr-comment-resolution-dialog.tsx
    • Added url to PRCommentResolutionPRInfo interface.
    • Replaced manual model normalization with normalizeModelEntry utility.
    • Added providerId, planningMode, requirePlanApproval, dependencies, and prUrl to created features.
  • apps/ui/src/components/layout/project-switcher/components/notification-bell.tsx
    • Updated notification navigation to use deep linking with featureId and projectPath.
    • Added AlertCircle icon for error notifications.
  • apps/ui/src/components/layout/sidebar/components/project-selector-with-options.tsx
    • Modified setCurrentProjectWithInit to fire-and-forget initializeProject for faster project switching.
    • Added toast notifications for initializeProject errors.
  • apps/ui/src/components/layout/sidebar/hooks/use-navigation.ts
    • Removed projects.length from useCallback dependency array.
  • apps/ui/src/components/session-manager.tsx
    • Modified session creation logic to select the new session immediately before invalidating the cache.
  • apps/ui/src/components/shared/model-override-trigger.tsx
    • Updated model comparison logic to include providerId when determining if an override is active.
  • apps/ui/src/components/ui/description-image-dropzone.tsx
    • Added setPreviewImages to dependency array for removeImage callback.
  • apps/ui/src/components/ui/git-diff-panel.tsx
    • Used useMemo to stabilize files array reference, preventing unnecessary re-renders.
    • Removed projectPath from dependency arrays for handleStageAll and handleUnstageAll callbacks.
  • apps/ui/src/components/ui/header-actions-panel.tsx
    • Added data-testid to header actions panel trigger.
  • apps/ui/src/components/ui/sheet.tsx
    • Adjusted SheetPrimitive.Close button position for safe-area-inset-top.
  • apps/ui/src/components/ui/spinner.tsx
    • Added data-testid to spinner component.
  • apps/ui/src/components/ui/xterm-log-viewer.tsx
    • Added eslint-disable-next-line for react-hooks/exhaustive-deps in useEffect hook.
  • apps/ui/src/components/views/agent-view/components/agent-header.tsx
    • Adjusted layout and styling for responsiveness on smaller screens.
    • Updated 'Clear' button to be more compact on mobile.
  • apps/ui/src/components/views/board-view.tsx
    • Added initialFeatureId and initialProjectPath props for deep linking.
    • Implemented deep link handling for project switching and feature output modal opening.
    • Optimized runningAutoTasksAllWorktrees selector to prevent excessive re-renders.
    • Wrapped setCurrentWorktree calls in startTransition for better React concurrency.
    • Modified handleAddAndStartFeature to return the created feature ID.
    • Added providerId to modelEntry in handleQuickAdd and handleQuickAddAndStart.
    • Updated handleCreateFeatureFromConflict to set prUrl on created features.
    • Added stopFeature to useBoardActions hook.
    • Passed sortNewestCardOnTop to useBoardColumnFeatures and KanbanBoard.
    • Updated onRowClick logic to handle merge_conflict status and running tasks.
    • Reset handledFeatureIdRef on output modal close.
  • apps/ui/src/components/views/board-view/components/kanban-card/agent-info-panel.tsx
    • Implemented mobile query staggering and concurrency control to prevent crashes on many cards.
    • Added claudeCompatibleProviders to modelFormatOptions for provider-aware model name display.
    • Added taskSummaryMap to track real-time task summaries from WebSocket events.
    • Updated effectiveTodos to include task summaries.
    • Modified shouldFetchData to also fetch for merge_conflict status.
    • Updated model name formatting to use modelFormatOptions.
    • Expanded conditions for displaying agent info panel to include effectiveSummary.
    • Added task summary display within the todo list when expanded.
    • Updated summary display logic to use effectiveSummary and show for pipeline statuses.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-actions.tsx
    • Updated hasContext prop to be directly passed.
    • Modified view-output data-testid for consistency.
    • Added merge_conflict status to conditions for displaying 'Make' and 'Edit' buttons.
    • Added 'Restart' button for merge_conflict status.
    • Added 'View Logs' button for backlog/merge_conflict features with context.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-badges.tsx
    • Added AlertTriangle icon.
    • Implemented a new badge for merge_conflict status, positioned next to priority badges.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-header.tsx
    • Added hasContext prop.
    • Added claudeCompatibleProviders to modelFormatOptions for provider-aware model name display.
    • Updated model name formatting to use modelFormatOptions.
    • Added merge_conflict status to conditions for displaying action buttons.
    • Added 'Logs' button for backlog/merge_conflict features with context.
  • apps/ui/src/components/views/board-view/components/kanban-card/kanban-card.tsx
    • Added merge_conflict status to conditions for showing running visual treatment and enabling card actions.
    • Updated isSelectable logic to allow selection of merge_conflict features when selectionTarget is 'backlog'.
  • apps/ui/src/components/views/board-view/components/kanban-card/summary-dialog.tsx
    • Refactored SummaryDialog to support multi-phase pipeline summaries.
    • Added parseAllPhaseSummaries, isAccumulatedSummary, PhaseSummaryEntry, getFirstNonEmptySummary utilities.
    • Implemented StepNavigator and PhaseEntryCard components for navigating multi-phase summaries.
    • Added view mode toggle between 'Summary' and 'Output' (raw agent output).
    • Integrated useAgentOutput for fetching raw agent output.
    • Added projectPath prop for fetching agent output.
    • Implemented scroll-to-active-phase logic for multi-phase summaries.
  • apps/ui/src/components/views/board-view/components/list-view/list-row.tsx
    • Added FileCheck icon.
    • Implemented a new badge for planSpec.status === 'generated' to indicate plan approval is needed.
    • Improved getFeatureSortValue to extract createdAt timestamp from feature ID if createdAt is missing.
  • apps/ui/src/components/views/board-view/constants.ts
    • Added isBacklogLikeStatus utility function.
  • apps/ui/src/components/views/board-view/hooks/use-board-column-features.ts
    • Added sortNewestCardOnTop option for sorting features within columns.
  • apps/ui/src/components/views/board-view/hooks/use-board-features.ts
    • Added sortNewestCardOnTop to useBoardFeatures hook.
  • apps/ui/src/components/views/board-view/hooks/use-board-keyboard-shortcuts.ts
    • Added stopFeature to useBoardKeyboardShortcuts hook.
  • apps/ui/src/components/views/board-view/hooks/use-board-worktrees.ts
    • Added stopFeature to useBoardWorktrees hook.
  • apps/ui/src/components/views/board-view/hooks/use-feature-actions.ts
    • Added stopFeature to useFeatureActions hook.
  • apps/ui/src/components/views/board-view/kanban-board.tsx
    • Added sortNewestCardOnTop prop for sorting features within columns.
  • apps/ui/src/components/views/board-view/types.ts
    • Added sortNewestCardOnTop to BoardColumnFeaturesOptions.
  • apps/ui/src/components/views/settings-view/model-defaults.tsx
    • Added providerId to PhaseModelEntry and related components.
    • Updated model comparison logic to include providerId.
  • apps/ui/src/components/views/settings-view/ntfy-endpoints-settings.tsx
    • Added new component for managing ntfy.sh endpoints in settings.
  • apps/ui/src/components/views/settings-view/settings-page.tsx
    • Added NtfyEndpointsSettings component to the settings page.
  • apps/ui/src/hooks/queries/use-feature.ts
    • Added staleTime and gcTime to useFeature query options.
  • apps/ui/src/hooks/queries/use-pipeline.ts
    • Added staleTime and gcTime to usePipelineConfig query options.
  • apps/ui/src/hooks/queries/use-worktrees.ts
    • Added staleTime and gcTime to useWorktrees query options.
  • apps/ui/src/hooks/use-notification-events.ts
    • Updated useNotificationEvents to handle feature_error and auto_mode_error types.
  • apps/ui/src/lib/agent-context-parser.ts
    • Added providerId to AgentInfo interface.
    • Updated formatModelName to accept ModelFormatOptions for provider-aware display.
    • Modified extractSummary to handle ## Summary sections more robustly.
    • Updated parseAgentOutput to include providerId in AgentInfo.
  • apps/ui/src/lib/log-parser.ts
    • Refactored summary parsing functions to support accumulated pipeline summaries.
    • Added parseAllPhaseSummaries, extractPhaseSummary, extractImplementationSummary, and isAccumulatedSummary.
  • apps/ui/src/lib/mobile-detect.ts
    • Added new utility file for mobile device detection.
  • apps/ui/src/lib/project-init.ts
    • Added initializeProject function to ensure .automaker directory structure exists.
  • apps/ui/src/lib/query-keys.ts
    • Added orphanedFeatures query key.
  • apps/ui/src/lib/summary-selection.ts
    • Added new utility file for summary selection logic.
  • apps/ui/src/lib/utils.ts
    • Added formatRelativeTime utility function.
    • Added normalizeModelEntry utility function.
    • Added pathsEqual utility function.
  • apps/ui/src/routes/__root.tsx
    • Added initialFeatureId and initialProjectPath to BoardView props for deep linking.
  • apps/ui/src/store/app-store.ts
    • Added defaultSortNewestCardOnTop setting.
    • Added claudeCompatibleProviders to global settings.
    • Added ntfyEndpoints to global settings.
    • Added upsertAndSetCurrentProject action.
    • Updated currentWorktree state to include worktreePath and branch.
    • Added autoModeByWorktree to track auto-mode state per worktree.
    • Updated Feature interface to include providerId, planningMode, requirePlanApproval, prUrl, and summary.
    • Updated PhaseModelEntry to include providerId.
    • Updated WorktreeInfo to include conflictSourceBranch.
    • Added isBacklogLikeStatus utility.
    • Updated WorktreeInfo to include conflictSourceBranch.
  • apps/ui/src/store/notifications-store.ts
    • Updated Notification interface to include projectPath.
  • apps/ui/src/types/settings.ts
    • Added NtfyEndpointConfig interface for ntfy.sh endpoint configuration.
    • Added EventHookNtfyAction interface for ntfy event hook actions.
    • Updated GlobalSettings to include ntfyEndpoints and eventHooks.
    • Updated EventHookAction to include ntfy type.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/e2e-tests.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 pull request is a massive and impressive collection of features, bug fixes, and improvements for the v1.0.0 release candidate. The changes are extensive and touch many parts of the application, from the server backend to the UI and testing infrastructure.

Key highlights include:

  • A complete overhaul of pipeline summary handling, which now accumulates summaries from all steps for a much better user experience.
  • Support for custom Claude-compatible providers, significantly improving the application's extensibility.
  • Numerous robustness improvements in worktree management, especially for handling detached HEAD states during git operations.
  • A new feature for managing orphaned features.
  • Critical performance fixes for mobile devices to prevent crashes during worktree switches.
  • A critical bug fix for a stale closure issue in the file editor's save functionality.
  • A huge expansion of unit and end-to-end tests, which greatly increases confidence in the stability of this release.

The code quality is high, and the changes are well-structured. I have one minor suggestion for a potential performance improvement, but overall this is an excellent set of changes.

Comment on lines +154 to +176
for (const feature of affectedFeatures) {
try {
await featureLoader.update(projectPath, feature.id, {
branchName: null,
});
featuresMovedToMain++;
// Emit feature:migrated event for each successfully migrated feature
events.emit('feature:migrated', {
featureId: feature.id,
status: 'migrated',
fromBranch: branchName,
toWorktreeId: null, // migrated to main worktree (no specific worktree)
projectPath,
});
} catch (featureUpdateError) {
// Non-fatal: log per-feature failure but continue migrating others
logger.warn('Failed to move feature to main worktree after deletion', {
error: getErrorMessage(featureUpdateError),
featureId: feature.id,
branchName,
});
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

This loop iterates through features and awaits each update sequentially. If a worktree has a large number of associated features, this could be slow. Since these updates are independent, you can run them in parallel using Promise.all for better performance.

          const migrationPromises = affectedFeatures.map(async (feature) => {
            try {
              await featureLoader.update(projectPath, feature.id, {
                branchName: null,
              });
              // Emit feature:migrated event for each successfully migrated feature
              events.emit('feature:migrated', {
                featureId: feature.id,
                status: 'migrated',
                fromBranch: branchName,
                toWorktreeId: null, // migrated to main worktree (no specific worktree)
                projectPath,
              });
              return { success: true };
            } catch (featureUpdateError) {
              // Non-fatal: log per-feature failure but continue migrating others
              logger.warn('Failed to move feature to main worktree after deletion', {
                error: getErrorMessage(featureUpdateError),
                featureId: feature.id,
                branchName,
              });
              return { success: false };
            }
          });

          const results = await Promise.all(migrationPromises);
          featuresMovedToMain = results.filter((r) => r.success).length;

@webdevcody webdevcody merged commit d37ced1 into main Mar 15, 2026
8 checks passed
@webdevcody webdevcody deleted the v1.0.0rc branch March 15, 2026 16:58
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.

3 participants