Skip to content

fix(docker): Add @playwright/test to server devDependencies#751

Open
JasonBroderick wants to merge 1 commit intoAutoMaker-Org:mainfrom
JasonBroderick:fix/docker-playwright-server-dependency
Open

fix(docker): Add @playwright/test to server devDependencies#751
JasonBroderick wants to merge 1 commit intoAutoMaker-Org:mainfrom
JasonBroderick:fix/docker-playwright-server-dependency

Conversation

@JasonBroderick
Copy link

@JasonBroderick JasonBroderick commented Feb 3, 2026

Summary

This PR fixes an issue discovered while testing #745 (Pre-install Playwright Chromium browsers).

The Dockerfile's playwright install step fails because @playwright/test is only in the UI's devDependencies, not the server's. When the Docker build runs:

COPY --from=server-builder /app/node_modules ./node_modules
RUN ./node_modules/.bin/playwright install chromium

The server-builder stage only installs server dependencies, so playwright isn't in node_modules/.bin/.

Changes

  • Added @playwright/test: 1.57.0 to apps/server/package.json devDependencies (matches UI version)

Testing

  1. Built Docker image with docker compose build --no-cache
  2. Verified playwright installs successfully:
    Chromium Headless Shell 143.0.7499.4 (playwright build v1200) downloaded to /home/automaker/.cache/ms-playwright/chromium_headless_shell-1200
    === Playwright Chromium installed ===
    
  3. Tested Automaker's Playwright verification feature end-to-end - working correctly

Related

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated development dependencies.

@coderabbitai
Copy link

coderabbitai bot commented Feb 3, 2026

📝 Walkthrough

Walkthrough

Added Playwright test library version 1.57.0 as a dev dependency to the server application package configuration. This is a straightforward dependency addition with no functional code modifications.

Changes

Cohort / File(s) Summary
Dev Dependencies
apps/server/package.json
Added "@playwright/test": "1.57.0" to devDependencies for testing infrastructure.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 A test library hops into our nest,
Playwright now joins the dev quest!
With version pinned so clean and bright,
Our testing future burns so white.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding @playwright/test to server devDependencies to fix a Docker build failure. It is specific, concise, and clearly communicates the primary purpose of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @JasonBroderick, 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 significantly expands the application's AI capabilities by integrating GitHub Copilot and Google Gemini as new providers, alongside improvements to existing AI workflows. It introduces robust feature management tools, including export/import functionality and a comprehensive project overview API. Key infrastructure updates include a more resilient auto-mode graceful shutdown, a dedicated test runner service, and refined Docker configurations for smoother deployments. These changes aim to expand AI model choices, improve workflow flexibility, and enhance overall system stability and user experience.

Highlights

  • New AI Provider Integrations: Integrated GitHub Copilot SDK and Google Gemini CLI as new AI providers, expanding the range of available models and capabilities within the application.
  • Enhanced Auto-Mode Resilience: Improved server shutdown logic to gracefully interrupt running auto-mode features, marking them for resumption upon restart. This includes resetting features stuck in transient states and handling pipeline step exclusions.
  • Feature Export and Import Functionality: Introduced new API endpoints and services for exporting and importing features in JSON/YAML formats, complete with conflict detection and options for history and plan specifications.
  • Comprehensive Project Overview: Implemented a new API endpoint to provide an aggregate status of all projects, including detailed feature counts, health status, and auto-mode state, offering a high-level dashboard view.
  • Dedicated Test Runner Service: Added a new service to manage test execution processes for worktrees, featuring output streaming, status tracking, and robust process cleanup, accessible via new API routes.
  • Improved Spec and Plan Generation: Enhanced the spec and plan generation logic to leverage structured output from various AI models, extract summaries from generated plans, and provide more flexible plan revision capabilities.
  • Git Workflow Enhancements: Added an API endpoint for managing Git remotes and updated Git initialization to use 'main' as the default branch, aligning with modern Git practices.

🧠 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
  • Dockerfile
    • Added @playwright/test to apps/server/package.json devDependencies and updated Dockerfile to ensure Playwright Chromium is installed during the server build process.
    • Added COPY libs/spec-parser/package*.json twice (likely a copy-paste error, but reflecting the diff).
    • Added a blank line after opencode --version command.
    • Added a new section to install Playwright Chromium browser for AI agent verification tests, including USER automaker, RUN ./node_modules/.bin/playwright install chromium, and USER root.
  • README.md
    • Added a new section "Playwright for Automated Testing" detailing its pre-installation in Docker and optional persistence.
  • SECURITY_TODO.md
    • File removed.
  • TODO.md
    • File removed.
  • apps/server/package.json
    • Added @github/copilot-sdk and yaml as dependencies.
    • Added @playwright/test as a devDependency.
  • apps/server/src/index.ts
    • Imported getClaudeAuthIndicators from @automaker/platform.
    • Removed import for createSuggestionsRoutes.
    • Imported getTestRunnerService and createProjectsRoutes.
    • Modified Claude authentication check to include CLI authentication indicators.
    • Updated warning message for missing Claude authentication to offer more options (CLI, API key, setup wizard).
    • Initialized testRunnerService and set its event emitter.
    • Removed app.use('/api/suggestions', ...) route.
    • Added app.use('/api/projects', ...) route.
    • Enhanced graceful shutdown (SIGTERM, SIGINT) to include a timeout and mark all running features as interrupted via autoModeService.markAllRunningFeaturesInterrupted.
  • apps/server/src/providers/codex-provider.ts
    • Added CODEX_FEATURE_GENERATION_BASE_TIMEOUT_MS constant.
    • Modified executeQuery to use CODEX_FEATURE_GENERATION_BASE_TIMEOUT_MS for xhigh reasoning effort during feature generation, extending the timeout.
  • apps/server/src/providers/copilot-provider.ts
    • New file: Implements CopilotProvider for GitHub Copilot SDK integration, including event normalization, error handling, authentication checks (via gh CLI or GITHUB_TOKEN), and dynamic model discovery.
  • apps/server/src/providers/cursor-provider.ts
    • Modified buildCliArgs to use --mode ask for read-only operations and --force otherwise.
    • Modified executeQuery to embed system prompt into user prompt and use the effective options for building CLI arguments.
  • apps/server/src/providers/gemini-provider.ts
    • New file: Implements GeminiProvider for Gemini CLI integration, including event normalization, error handling, authentication checks (API key, Google Cloud, settings file), and dynamic model discovery.
  • apps/server/src/providers/index.ts
    • Exported new types (AgentDefinition, ReasoningEffort, SystemPromptPreset, ConversationMessage, ContentBlock, ValidationResult, McpServerConfig, McpStdioServerConfig, McpSSEServerConfig, McpHttpServerConfig).
    • Exported GeminiProvider, GeminiErrorCode, CopilotProvider, and CopilotErrorCode.
  • apps/server/src/providers/provider-factory.ts
    • Imported isGeminiModel and isCopilotModel.
    • Added gemini and copilot to DISCONNECTED_MARKERS.
    • Updated isModelVisionCapable to include gemini in model ID replacement logic.
    • Imported GeminiProvider and CopilotProvider.
    • Registered gemini and copilot providers with their respective factories, aliases, model handling, and priorities.
  • apps/server/src/providers/tool-normalization.ts
    • New file: Provides shared utilities for normalizing tool inputs (e.g., todos, file paths, commands, patterns) from various AI providers to a standard format.
  • apps/server/src/providers/types.ts
    • Exported new types (AgentDefinition, ReasoningEffort, SystemPromptPreset).
  • apps/server/src/routes/app-spec/generate-features-from-spec.ts
    • Imported supportsStructuredOutput and isCodexModel.
    • Imported extractJsonWithArray.
    • Added CODEX_FEATURE_GENERATION_TIMEOUT_MS constant.
    • Defined FeaturesExtractionResult interface and featuresOutputSchema for structured JSON output.
    • Modified generateFeaturesFromSpec to use xhigh reasoning effort for Codex models and apply structured output if supported by the model, otherwise inject explicit JSON instructions into the prompt.
    • Updated parsing logic to prefer result.structured_output and fallback to extractJsonWithArray from result.text.
  • apps/server/src/routes/app-spec/generate-spec.ts
    • Imported supportsStructuredOutput.
    • Modified generateSpec to use structured output if supported by the model, otherwise inject explicit JSON instructions into the prompt.
  • apps/server/src/routes/app-spec/sync-spec.ts
    • Imported supportsStructuredOutput and extractJson.
    • Defined TechStackExtractionResult interface and techStackOutputSchema for structured JSON output.
    • Modified syncSpec to use structured output if supported by the model, otherwise inject explicit JSON instructions into the prompt.
    • Updated parsing logic to prefer techResult.structured_output and fallback to extractJson from techResult.text.
  • apps/server/src/routes/backlog-plan/generate-plan.ts
    • Modified generateBacklogPlan to resolve model aliases and thinking levels when an explicit model override is provided.
  • apps/server/src/routes/features/index.ts
    • Imported AutoModeService.
    • Updated createFeaturesRoutes to accept autoModeService.
    • Updated createListHandler to pass autoModeService.
    • Added routes for feature export (/export), import (/import), and conflict checking (/check-conflicts).
  • apps/server/src/routes/features/routes/create.ts
    • Changed featureName in feature:created event to use created.title || 'Untitled Feature' instead of created.name.
  • apps/server/src/routes/features/routes/export.ts
    • New file: Implements API endpoint for exporting features to JSON or YAML, with options for history, plan spec, and metadata.
  • apps/server/src/routes/features/routes/import.ts
    • New file: Implements API endpoints for importing features from JSON/YAML and checking for conflicts before import.
  • apps/server/src/routes/features/routes/list.ts
    • Updated createListHandler to accept autoModeService.
    • Added logic to run autoModeService.detectOrphanedFeatures in the background when listing features, logging any orphaned features found.
  • apps/server/src/routes/fs/routes/save-board-background.ts
    • Modified regex for base64Data replacement to handle more general data URL formats.
  • apps/server/src/routes/fs/routes/save-image.ts
    • Modified regex for base64Data replacement to handle more general data URL formats.
  • apps/server/src/routes/github/routes/validate-issue.ts
    • Imported supportsStructuredOutput.
    • Modified runValidation to use structured output if supported by the model, otherwise inject explicit JSON instructions into the prompt.
  • apps/server/src/routes/ideation/routes/suggestions-generate.ts
    • Updated createSuggestionsGenerateHandler to accept contextSources parameter for more granular control over context.
  • apps/server/src/routes/projects/common.ts
    • New file: Common utilities for projects routes, including logger and error handling.
  • apps/server/src/routes/projects/index.ts
    • New file: Defines projects routes, including /overview.
  • apps/server/src/routes/projects/routes/overview.ts
    • New file: Implements API endpoint for getting an aggregate overview of all projects, including health status, feature counts, and activity.
  • apps/server/src/routes/setup/common.ts
    • Added COPILOT_DISCONNECTED_MARKER_FILE constant.
  • apps/server/src/routes/setup/index.ts
    • Imported new routes for Gemini and Copilot status, authentication, and model management.
    • Added routes for Gemini CLI (/gemini-status, /auth-gemini, /deauth-gemini).
    • Added routes for Copilot CLI (/copilot-status, /auth-copilot, /deauth-copilot).
    • Added routes for Copilot dynamic model discovery (/copilot/models, /copilot/models/refresh, /copilot/cache/clear).
  • apps/server/src/routes/setup/routes/auth-copilot.ts
    • New file: Implements API endpoint to connect Copilot CLI by removing the disconnection marker.
  • apps/server/src/routes/setup/routes/auth-gemini.ts
    • New file: Implements API endpoint to connect Gemini CLI by removing the disconnection marker.
  • apps/server/src/routes/setup/routes/copilot-models.ts
    • New file: Implements API endpoints for getting, refreshing, and clearing Copilot models cache.
  • apps/server/src/routes/setup/routes/copilot-status.ts
    • New file: Implements API endpoint for getting Copilot CLI installation and authentication status.
  • apps/server/src/routes/setup/routes/deauth-copilot.ts
    • New file: Implements API endpoint to disconnect Copilot CLI by creating a marker file.
  • apps/server/src/routes/setup/routes/deauth-gemini.ts
    • New file: Implements API endpoint to disconnect Gemini CLI by creating a marker file.
  • apps/server/src/routes/setup/routes/gemini-status.ts
    • New file: Implements API endpoint for getting Gemini CLI installation and authentication status.
  • apps/server/src/routes/suggestions/common.ts
    • File removed.
  • apps/server/src/routes/suggestions/generate-suggestions.ts
    • File removed.
  • apps/server/src/routes/suggestions/index.ts
    • File removed.
  • apps/server/src/routes/suggestions/routes/generate.ts
    • File removed.
  • apps/server/src/routes/suggestions/routes/status.ts
    • File removed.
  • apps/server/src/routes/suggestions/routes/stop.ts
    • File removed.
  • apps/server/src/routes/worktree/index.ts
    • Imported new routes for test runner (createStartTestsHandler, createStopTestsHandler, createGetTestLogsHandler).
    • Imported createAddRemoteHandler.
    • Updated createStartDevHandler to accept settingsService.
    • Added routes for test runner (/start-tests, /stop-tests, /test-logs).
    • Added route for adding Git remote (/add-remote).
  • apps/server/src/routes/worktree/routes/add-remote.ts
    • New file: Implements API endpoint to add a new remote to a Git repository, including input validation and optional fetch.
  • apps/server/src/routes/worktree/routes/init-git.ts
    • Modified createInitGitHandler to initialize Git with main as the default branch.
  • apps/server/src/routes/worktree/routes/list-branches.ts
    • Added logic to check if any remotes are configured and include hasAnyRemotes in the response.
  • apps/server/src/routes/worktree/routes/list.ts
    • Added GitHubPRCacheEntry interface and githubPRCache map.
    • Added GITHUB_PR_CACHE_TTL_MS constant.
    • Modified fetchGitHubPRs to use caching and handle force refresh.
    • Updated fetchGitHubPRs error handling to return stale cache if available.
    • Modified createListHandler to pass forceRefreshGitHub to fetchGitHubPRs.
  • apps/server/src/routes/worktree/routes/start-dev.ts
    • Updated createStartDevHandler to accept settingsService.
    • Added logic to parse and use a custom dev command from project settings if configured, otherwise auto-detect.
  • apps/server/src/routes/worktree/routes/start-tests.ts
    • New file: Implements API endpoint to start tests for a worktree, using a configured test command.
  • apps/server/src/routes/worktree/routes/stop-tests.ts
    • New file: Implements API endpoint to stop a running test session.
  • apps/server/src/routes/worktree/routes/test-logs.ts
    • New file: Implements API endpoint for getting buffered logs for a test runner session.
  • apps/server/src/services/auto-mode-service.ts
    • Imported ParsedTask and PlanSpec types from @automaker/types.
    • Removed local definitions of ParsedTask and PlanSpec.
    • Added detectTaskStartMarker, detectTaskCompleteMarker, detectPhaseCompleteMarker functions.
    • Added detectSpecFallback function for non-Claude models.
    • Added extractSummary function to extract summaries from agent output.
    • Added leaseCount to RunningFeature interface.
    • Added acquireRunningFeature and releaseRunningFeature methods for reference counting.
    • Added resetStuckFeatures method to clean up features stuck in transient states after a server crash.
    • Modified resolveMaxConcurrency to normalize "main" branch to null for UI consistency.
    • Added resetStuckFeatures call at the start of startAutoLoopForProject.
    • Modified executeFeature to use acquireRunningFeature and releaseRunningFeature for tracking.
    • Modified executeFeature to handle recursive calls with _calledInternally flag.
    • Modified resumeFeature to use acquireRunningFeature and releaseRunningFeature for tracking, and to handle features with/without saved context, starting fresh if no context.
    • Modified resumePipelineFeature to use acquireRunningFeature and releaseRunningFeature for tracking.
    • Modified resumePipelineFeature to filter out excludedPipelineSteps.
    • Modified resumePipelineFeature to handle cases where the current step is excluded.
    • Modified executeFeature to extract and save summary from agent output after completion.
    • Modified stopFeature to use releaseRunningFeature with force: true.
    • Added markFeatureInterrupted and markAllRunningFeaturesInterrupted methods for graceful shutdown.
    • Added isFeatureRunning method.
    • Added saveFeatureSummary method to save extracted summaries.
    • Added updateTaskStatus method to update individual task statuses.
    • Added updateFeatureSummary method to update feature description from plan summary.
    • Modified loadPendingFeatures to include in_progress and generating planSpec status for recovery scenarios.
    • Modified executeFeature to handle recovery path for existing approved plans with persisted tasks, executing them sequentially.
    • Modified executeFeature to use detectSpecFallback for non-Claude models.
    • Modified executeFeature to extract and save plan summary after plan generation.
    • Modified executeFeature to use customizable planRevisionTemplate for plan revisions.
    • Modified executeFeature to log warnings if revised plan has no tasks.
    • Modified executeFeature to update task status based on [TASK_START] and [TASK_COMPLETE] markers.
    • Modified executeFeature to detect [PHASE_COMPLETE] marker.
    • Modified executeFeature to extract and save final summary after multi-task or single-agent execution.
    • Added detectOrphanedFeatures and getExistingBranches methods to identify features whose branches no longer exist.
  • apps/server/src/services/copilot-connection-service.ts
    • New file: Manages connection/disconnection of Copilot CLI using a marker file.
  • apps/server/src/services/dev-server-service.ts
    • Added parseCustomCommand method to parse command strings with quotes.
    • Modified startDevServer to accept and use a customCommand if provided, otherwise auto-detect.
  • apps/server/src/services/event-hook-service.ts
    • Modified buildContext to use featureName from feature.title if available, otherwise fallback to payload.featureName.
  • apps/server/src/services/feature-export-service.ts
    • New file: Service for exporting and importing features in JSON/YAML, including bulk operations, conflict detection, and data normalization.
  • apps/server/src/services/ideation-service.ts
    • Imported IdeationContextSources and DEFAULT_IDEATION_CONTEXT_SOURCES.
    • Imported extractXmlElements and extractImplementedFeatures.
    • Imported resolvePhaseModel and getPhaseModelWithOverrides.
    • Modified generateSuggestions to accept contextSources and merge with defaults.
    • Modified generateSuggestions to build app spec context if useAppSpec is enabled.
    • Modified generateSuggestions to gather existing work context based on includeFeatures and includeIdeas flags.
    • Modified generateSuggestions to use getPhaseModelWithOverrides for model resolution.
    • Modified generateSuggestions to set readOnly: true for execute options.
    • Modified generateSuggestions to set claudeCompatibleProvider and credentials for execute options.
    • Modified parseSuggestionsFromResponse and parseTextResponse to respect the count parameter.
    • Added buildAppSpecContext method to extract project info from app_spec.txt.
    • Modified gatherExistingWorkContext to accept includeFeatures and includeIdeas options.
  • apps/server/src/services/pipeline-service.ts
    • Modified getNextStatus to accept excludedStepIds and skip excluded steps in the pipeline flow.
  • apps/server/src/services/settings-service.ts
    • Modified updateGlobalSettings to deep merge autoModeByWorktree entries, preserving existing worktree settings.
    • Modified updateProjectSettings to handle special markers (__CLEAR__ for defaultFeatureModel, null for devCommand and testCommand) to delete settings.
  • apps/server/src/services/test-runner-service.ts
    • New file: Manages test execution processes, including process spawning, output streaming, status tracking, and cleanup.
  • apps/server/tests/integration/helpers/git-test-repo.ts
    • Modified createTestGitRepo to initialize Git with main as the default branch and removed explicit git branch -M main command.
  • apps/server/tests/integration/routes/worktree/create.integration.test.ts
    • Modified initRepoWithoutCommit to initialize Git with main as the default branch.
  • apps/server/tests/unit/providers/codex-provider.test.ts
    • Updated test case for xhigh reasoning effort to reflect the new CODEX_FEATURE_GENERATION_BASE_TIMEOUT_MS for feature generation.
  • apps/server/tests/unit/providers/copilot-provider.test.ts
    • New file: Unit tests for CopilotProvider, covering name, features, model availability, authentication, error mapping, and tool normalization.
  • apps/server/tests/unit/providers/provider-factory.test.ts
    • Added mocks for GeminiProvider and CopilotProvider.
    • Updated tests to reflect the addition of GeminiProvider and CopilotProvider to the factory.
  • apps/server/tests/unit/routes/worktree/add-remote.test.ts
    • New file: Unit tests for the add-remote route, covering input validation, remote name/URL validation, existence checks, and error handling.
  • apps/server/tests/unit/services/auto-mode-service.test.ts
    • Added unit tests for detectOrphanedFeatures, covering various scenarios including no branch names, existing branches, missing branches, and error handling.
    • Added unit tests for markFeatureInterrupted, covering marking features as interrupted, preserving pipeline statuses, and error propagation.
    • Added unit tests for markAllRunningFeaturesInterrupted, covering no running features, single/multiple features, parallel execution, error handling, and preserving pipeline statuses.
    • Added unit tests for isFeatureRunning.
  • apps/server/tests/unit/services/auto-mode-task-parsing.test.ts
    • Removed local ParsedTask interface, now imported from @automaker/types.
    • Added unit tests for detectSpecFallback function, covering various spec formats and edge cases.
  • apps/server/tests/unit/services/dev-server-service.test.ts
    • Added originalHostname state and logic to store/restore process.env.HOSTNAME for consistent test behavior.
  • apps/server/tests/unit/services/feature-export-service.test.ts
    • New file: Unit tests for FeatureExportService, covering export/import of single/multiple features, format detection, options, and error handling.
  • apps/server/tests/unit/services/ideation-service.test.ts
    • Updated generateSuggestions tests to include app spec context based on useAppSpec flag and handle missing app spec file gracefully.
  • apps/server/tests/unit/services/pipeline-service.test.ts
    • Added unit tests for getNextStatus with excludedStepIds, covering various scenarios of skipping steps.
  • apps/ui/eslint.config.mjs
    • Added setTimeout, clearTimeout, alert, MouseEvent, UIEvent, MediaQueryListEvent, AbortController, IntersectionObserver, HTMLAudioElement, XMLHttpRequest, Response, RequestInit, RequestCache, SVGElement, SVGSVGElement, __APP_VERSION__ to globals.
    • Added no-unused-vars rule to warn for unused variables with ignored arguments.
    • Added @typescript-eslint/ban-ts-comment rule with allow-with-description for ts-nocheck.
  • apps/ui/package.json
    • Added rehype-sanitize, remark-gfm, zod as dependencies.
  • apps/ui/scripts/kill-test-servers.mjs
    • Changed catch (error) to catch (_error) to ignore unused error variable.
  • apps/ui/scripts/prepare-server.mjs
    • Imported lstatSync and resolve from fs and path.
    • Added a new step to replace symlinks for local packages with real copies in the bundled server, fixing issues with electron-builder.
  • apps/ui/scripts/setup-e2e-fixtures.mjs
    • Renamed suggestionsModel to ideationModel in E2E_SETTINGS.
  • apps/ui/src/app.tsx
    • Imported useAppStore and TooltipProvider.
    • Added DISABLE_SPLASH_KEY constant.
    • Modified showSplash state initialization to check localStorage for disableSplashScreen preference.
    • Added useEffect to sync disableSplashScreen setting to localStorage.
    • Modified splash screen rendering condition to also check !disableSplashScreen.
    • Wrapped RouterProvider and SplashScreen with TooltipProvider.
  • apps/ui/src/assets/icons/gemini-icon.svg
    • New file: SVG icon for Gemini.
  • apps/ui/src/components/codex-usage-popover.tsx
    • Removed isLoading from useCodexUsage destructuring.
  • apps/ui/src/components/dialogs/file-browser-dialog.tsx
    • Removed MAX_RECENT_FOLDERS constant (unused).
  • apps/ui/src/components/dialogs/new-project-modal.tsx
    • Changed (window as any).electronAPI to window.electronAPI.
  • apps/ui/src/components/layout/project-switcher/components/edit-project-dialog.tsx
    • Imported toast.
    • Changed (project as any).icon to project.icon and (project as any).customIconPath to project.customIconPath.
    • Added toast notifications for invalid file type, file too large, and successful/failed icon upload.
    • Increased max file size for custom icons from 2MB to 5MB.
  • apps/ui/src/components/layout/project-switcher/components/notification-bell.tsx
    • Removed ExternalLink import (unused).
  • apps/ui/src/components/layout/project-switcher/components/project-context-menu.tsx
    • Updated ThemeButtonProps onClick signature to accept React.MouseEvent.
    • Added type="button" to ThemeButton.
    • Modified ThemeButton onClick to stop propagation and then call onSelect.
    • Removed setTheme from useAppStore destructuring.
    • Removed removeConfirmed state.
    • Modified handleThemeSelect to clear any pending close timeout, close the menu, and then apply theme changes, only setting projectTheme (not global theme).
    • Removed setRemoveConfirmed(true) from handleConfirmRemove.
    • Removed setRemoveConfirmed(false) from handleDialogClose.
  • apps/ui/src/components/layout/project-switcher/components/project-switcher-item.tsx
    • Imported useState.
    • Added imageError state to handle custom icon loading failures.
    • Modified hasCustomIcon to also check !imageError.
    • Added onError handler to img tag to set imageError to true.
  • apps/ui/src/components/layout/project-switcher/project-switcher.tsx
    • Imported isMac from cn.
    • Imported isElectron from electron.
    • Imported MACOS_ELECTRON_TOP_PADDING_CLASS.
    • Modified logo container className to conditionally apply MACOS_ELECTRON_TOP_PADDING_CLASS for macOS Electron.
  • apps/ui/src/components/layout/sidebar/components/automaker-logo.tsx
    • Changed navigate({ to: '/dashboard' }) to navigate({ to: '/overview' }).
  • apps/ui/src/components/layout/sidebar/components/collapse-toggle-button.tsx
    • Adjusted top and right CSS values for better positioning.
  • apps/ui/src/components/layout/sidebar/components/project-selector-with-options.tsx
    • Removed setTheme from useProjectTheme destructuring.
    • Modified onValueChange for theme selection to only set projectTheme and not change the global theme.
  • apps/ui/src/components/layout/sidebar/components/sidebar-footer.tsx
    • Imported useCallback, useOSDetection, getElectronAPI, Tooltip, TooltipContent, TooltipTrigger, BookOpen, MessageSquare, ExternalLink.
    • Added getOSAbbreviation helper function.
    • Added appVersion and versionSuffix for displaying version info.
    • Added handleWikiClick and handleFeedbackClick callbacks.
    • Modified collapsed state rendering to use Tooltip for navigation items.
    • Added Documentation and Feedback links.
    • Added version display.
    • Modified expanded state rendering to use px-3 py-0.5 for item padding, h-px bg-border/40 mx-3 my-2 for separator.
    • Updated Activity and Settings icons styling.
    • Added Documentation and Feedback links in expanded state.
    • Added version display in expanded state.
    • Added hideWiki prop.
  • apps/ui/src/components/layout/sidebar/components/sidebar-header.tsx
    • Imported useCallback, useNavigate, ChevronsUpDown, Plus, FolderOpen.
    • Imported formatShortcut, MACOS_ELECTRON_TOP_PADDING_CLASS, DropdownMenu components, Tooltip components.
    • Removed useState for projectListOpen, useIsCompact, X, Menu, Check.
    • Changed onClose, onExpand props to onNewProject, onOpenFolder, onProjectContextMenu.
    • Added handleLogoClick, handleProjectSelect callbacks.
    • Added renderProjectIcon helper function.
    • Modified collapsed state rendering to show logo and a dropdown for project selection.
    • Modified expanded state rendering to show logo and a dropdown for project selection.
    • Removed mobile close/expand buttons (now handled by MobileSidebarToggle).
    • Removed Popover for project list, replaced with DropdownMenu.
    • Added "New Project" and "Open Project" options to the dropdown.
  • apps/ui/src/components/layout/sidebar/components/sidebar-navigation.tsx
    • Imported useCallback, useEffect, useRef, ChevronDown, Wrench, Github, Home.
    • Imported isMac, isElectron, MACOS_ELECTRON_TOP_PADDING_CLASS, useAppStore, getAuthenticatedImageUrl, DropdownMenu components, Tooltip components.
    • Added sectionIcons map for section labels.
    • Added sidebarStyle prop.
    • Added onScrollStateChange prop.
    • Added collapsedNavSections, setCollapsedNavSections, toggleNavSection from useAppStore.
    • Added navRef for scroll state detection.
    • Added useEffect to initialize collapsed state and monitor scroll state.
    • Added checkScrollState callback.
    • Modified visibleSections filtering to always show Dashboard and only show other sections when a project is selected.
    • Added getProjectIcon and ProjectIcon for project-specific icon.
    • Modified nav element className to conditionally apply MACOS_ELECTRON_TOP_PADDING_CLASS and pt-3 for discord style.
    • Added project name display for classic/discord mode.
    • Modified section rendering to include collapsible behavior and dropdowns for collapsed sidebar.
    • Updated nav item styling and badge positioning.
    • Changed Spinner size from md to sm.
    • Added placeholder for no project selected.
  • apps/ui/src/components/layout/sidebar/components/theme-menu-item.tsx
    • Removed div wrapper around DropdownMenuRadioItem.
  • apps/ui/src/components/layout/sidebar/constants.ts
    • Added MACOS_ELECTRON_TOP_PADDING_CLASS constant.
  • apps/ui/src/components/layout/sidebar/hooks/use-navigation.ts
    • Imported Home icon.
    • Added a new Dashboard section with overview item.
    • Modified Project and Tools sections to be collapsible and set defaultCollapsed states.
    • Modified GitHub section to be collapsible and set defaultCollapsed state.
  • apps/ui/src/components/layout/sidebar/index.ts
    • New file: Exports Sidebar component.
  • apps/ui/src/components/layout/sidebar/sidebar.tsx
    • Renamed from apps/ui/src/components/layout/sidebar.tsx.
    • Imported ChevronDown.
    • Removed DeleteProjectDialog, NewProjectModal, CreateSpecDialog from local imports (now imported from shared).
    • Removed TrashDialog, OnboardingDialog from local imports (now imported from shared).
    • Removed SIDEBAR_FEATURE_FLAGS from local imports (now imported from shared).
    • Imported ProjectContextMenu, EditProjectDialog from project-switcher.
    • Imported DeleteProjectDialog, NewProjectModal, CreateSpecDialog from shared.
    • Removed logger (already defined in app-store).
    • Added sidebarStyle to useAppStore destructuring.
    • Added hideWiki to SIDEBAR_FEATURE_FLAGS destructuring.
    • Added contextMenuProject, contextMenuPosition, editDialogProject states for context menu management.
    • Added handleContextMenu, handleCloseContextMenu, handleEditProject callbacks.
    • Added handleNewProject callback.
    • Added useEffect for keyboard shortcuts for project switching (1-9, 0).
    • Added canScrollDown state and setCanScrollDown for scroll indicator.
    • Modified SidebarHeader props to pass new handlers.
    • Modified SidebarNavigation props to pass sidebarStyle and onScrollStateChange.
    • Added scroll indicator rendering.
    • Modified SidebarFooter props to pass hideWiki.
    • Added ProjectContextMenu and EditProjectDialog rendering.
  • apps/ui/src/components/layout/sidebar/types.ts
    • Added collapsible and defaultCollapsed properties to NavSection interface.
  • apps/ui/src/components/shared/model-override-trigger.tsx
    • Removed React import.
    • Removed Settings2 import.
    • Removed Button import.
    • Removed Popover, PopoverContent, PopoverTrigger imports.
    • Removed iconSizes constant (unused).
  • apps/ui/src/components/shared/use-model-override.ts
    • Removed extractModel function (unused).
  • apps/ui/src/components/ui/button.tsx
    • Imported SpinnerVariant type.
    • Added COLORED_BACKGROUND_VARIANTS constant.
    • Added getSpinnerVariant function to determine spinner color based on button variant.
    • Modified Button component to use spinnerVariant for Spinner.
  • apps/ui/src/components/ui/collapsible.tsx
    • Removed React import.
  • apps/ui/src/components/ui/git-diff-panel.tsx
    • Modified onClick for refresh buttons to use () => void loadDiffs() to explicitly ignore the promise.
  • apps/ui/src/components/ui/keyboard-map.tsx
    • Removed TooltipProvider import.
    • Removed TooltipProvider wrapper from KeyboardMap component.
  • apps/ui/src/components/ui/log-viewer.tsx
    • Removed useEffect import (unused).
    • Removed Play import (unused).
  • apps/ui/src/components/ui/markdown.tsx
    • Imported Components from react-markdown.
    • Imported remarkGfm.
    • Imported Square, CheckSquare from lucide-react.
    • Added TasksBlock component to render tasks code blocks as interactive task lists.
    • Added markdownComponents object to override default markdown rendering for code blocks.
    • Added table styling to markdownBaseClass.
    • Added remarkPlugins={[remarkGfm]} and components={markdownComponents} to ReactMarkdown.
  • apps/ui/src/components/ui/provider-icon.tsx
    • Imported ImgHTMLAttributes.
    • Added copilot to PROVIDER_ICON_KEYS.
    • Added copilot definition to PROVIDER_ICON_DEFINITIONS.
    • Modified GeminiIcon to render an img tag pointing to an SVG asset, instead of a ProviderIcon component.
    • Added CopilotIcon component.
    • Added copilot to PROVIDER_ICON_COMPONENTS.
    • Modified getUnderlyingModelIcon to detect copilot models.
    • Modified getProviderIconKey to return copilot for copilot provider.
    • Added copilot to iconMap in getProviderIconForModel.
  • apps/ui/src/components/ui/spinner.tsx
    • Exported SpinnerSize and SpinnerVariant types.
    • Added SpinnerVariant type.
    • Added variantClasses for different spinner colors.
    • Modified SpinnerProps to include variant.
    • Modified Spinner component to use variantClasses for color.
  • apps/ui/src/components/ui/task-progress-panel.tsx
    • Imported Feature, ParsedTask from @automaker/types.
    • Removed currentTaskId from state (unused).
    • Modified loadInitialTasks to correctly type feature and planTasks.
    • Modified tasks.map to use _index instead of index to avoid unused variable warning.
    • Modified Spinner to use variant="foreground".
  • apps/ui/src/components/ui/test-logs-panel.tsx
    • New file: React component for displaying test runner logs, including real-time streaming, status indicators, and actions.
  • apps/ui/src/components/usage-popover.tsx
    • Removed REFRESH_INTERVAL_SECONDS constant.
    • Added CLAUDE_SESSION_WINDOW_HOURS constant.
    • Modified claudeMaxPercentage to only use sessionPercentage.
    • Added codexPrimaryWindowMinutes, codexSecondaryWindowMinutes, codexWindowMinutes, codexWindowLabel, codexWindowUsage for more granular Codex usage display.
    • Modified indicatorInfo to use claudeSessionPercentage and codexWindowUsage.
    • Modified trigger button to include title for the progress bar.
    • Reordered Claude usage cards to show Sonnet Weekly first.
  • apps/ui/src/components/views/agent-tools-view.tsx
    • Removed unused imports (FileText, FolderOpen, CheckCircle, XCircle, Play, File, Pencil, Wrench).
    • Removed ToolExecution interface (unused).
  • apps/ui/src/components/views/agent-view.tsx
    • Removed error: agentError from useAgent destructuring.
  • apps/ui/src/components/views/analysis-view.tsx
    • Imported Feature from app-store.
    • Modified detectedFeature creation to explicitly type newFeature as Feature.
  • apps/ui/src/components/views/board-view.tsx
    • Removed @ts-nocheck comment.
    • Imported ReactPointerEvent, CollisionDetection, Collision.
    • Removed DndPointerEvent import.
    • Removed maxConcurrency, setMaxConcurrency, useWorktrees, enableDependencyBlocking, skipVerificationInAutoMode from useAppStore destructuring.
    • Removed shortcuts from useKeyboardShortcutsConfig destructuring.
    • Imported useUpdateGlobalSettings.
    • Modified selectedWorktreeForAction state type to WorktreeInfo | null.
    • Modified selectedWorktree memoization to ensure WorktreeInfo fields are present.
    • Added updateGlobalSettings mutation.
    • Added runningAutoTasksAllWorktrees memoization to aggregate running tasks across all worktrees.
    • Modified BoardHeader props to remove viewMode.
    • Modified WorktreePanel props to pass runningAutoTasksAllWorktrees instead of runningAutoTasks.
    • Modified AddFeatureDialog props to pass projectPath.
    • Modified EditFeatureDialog props to pass projectPath.
    • Modified PipelineSettingsDialog props to pass pipelineConfig ?? null.
  • apps/ui/src/components/views/board-view/board-controls.tsx
    • Removed TooltipProvider import.
    • Removed TooltipProvider wrapper from BoardControls component.
    • Created buttonClass constant for consistent styling.
  • apps/ui/src/components/views/board-view/components/kanban-card/agent-info-panel.tsx
    • Imported useRef.
    • Removed AgentTaskInfo import.
    • Added lastWsEventTimestamp, isReceivingWsEvents, wsEventTimeoutRef states/refs for WebSocket activity tracking.
    • Added WS_ACTIVITY_THRESHOLD constant.
    • Added useEffect to update isReceivingWsEvents based on lastWsEventTimestamp.
    • Modified pollingInterval logic to dynamically adjust based on isReceivingWsEvents.
    • Modified useEffect for auto_mode_event to update lastWsEventTimestamp.
    • Removed feature.status !== 'backlog' condition from if (agentInfo || hasPlanSpecTasks).
  • apps/ui/src/components/views/board-view/components/kanban-card/card-actions.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Renamed hasContext prop to _hasContext to avoid unused variable warning.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-badges.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Removed TooltipProvider import.
    • Removed TooltipProvider wrappers from badges.
    • Added SkipForward import.
    • Added projectPath prop to PriorityBadgesProps.
    • Imported usePipelineConfig.
    • Removed eslint-disable-next-line no-undef comments.
    • Added logic to check for hasPipelineExclusions, allPipelinesExcluded, excludedStepCount, totalPipelineSteps.
    • Added Pipeline exclusion badge.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-content-sections.tsx
    • Removed @ts-nocheck comment and added a more specific one.
  • apps/ui/src/components/views/board-view/components/kanban-card/card-header.tsx
    • Removed @ts-nocheck comment and added a more specific one.
  • apps/ui/src/components/views/board-view/components/kanban-card/kanban-card.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Modified isDroppable logic: now all non-completed cards can be drop targets, not just backlog cards.
  • apps/ui/src/components/views/board-view/components/kanban-card/summary-dialog.tsx
    • Removed @ts-nocheck comment and added a more specific one.
  • apps/ui/src/components/views/board-view/components/kanban-column.tsx
    • Added whitespace-nowrap truncate to h3 element for title.
  • apps/ui/src/components/views/board-view/components/list-view/list-header.tsx
    • Added whitespace-nowrap truncate to span elements for column labels.
  • apps/ui/src/components/views/board-view/components/list-view/list-row.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Removed TooltipProvider import.
    • Removed TooltipProvider wrapper from IndicatorBadges component.
  • apps/ui/src/components/views/board-view/components/list-view/list-view.tsx
    • Removed getStatusLabel import.
  • apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Removed createLogger import.
    • Removed ModelAlias import.
    • Removed TestingTabContent import.
    • Removed isClaudeModel import.
    • Removed logger constant.
    • Removed TooltipProvider import.
    • Removed modelSupportsPlanningMode variable.
    • Added excludedPipelineSteps state.
    • Added projectPath prop.
    • Added effectiveDefaultFeatureModel to use project-level default model.
    • Modified useEffect to use effectiveDefaultFeatureModel.
    • Added excludedPipelineSteps to FeatureData type.
    • Added excludedPipelineSteps to handleResetForm and handleClearForm.
    • Added PipelineExclusionControls component.
    • Removed conditional rendering for PlanningModeSelect based on modelSupportsPlanningMode.
    • Removed TooltipProvider wrapper from PlanningModeSelect.
    • Removed modelSupportsPlanningMode from disabled prop of Checkbox.
    • Added useEffect to clear requirePlanApproval when planningMode is skip or lite.
  • apps/ui/src/components/views/board-view/dialogs/agent-output-modal.tsx
    • Changed (window as any).__currentProject?.path to window.__currentProject?.path.
    • Modified useAgentOutput to pass an object with enabled property.
    • Modified api.backlogPlan.onEvent to explicitly cast data to BacklogPlanEvent.
    • Changed setOutput to setStreamedContent for appending new content.
  • apps/ui/src/components/views/board-view/dialogs/completed-features-modal.tsx
    • Removed @ts-nocheck comment and added a more specific one.
  • apps/ui/src/components/views/board-view/dialogs/dependency-link-dialog.tsx
    • Imported StatusBadge and FeatureStatusWithPipeline.
    • Added StatusBadge to display status of dragged and target features.
  • apps/ui/src/components/views/board-view/dialogs/dependency-tree-dialog.tsx
    • Removed @ts-nocheck comment and added a more specific one.
  • apps/ui/src/components/views/board-view/dialogs/edit-feature-dialog.tsx
    • Removed @ts-nocheck comment and added a more specific one.
    • Removed createLogger import.
    • Removed useAppStore import.
    • Removed isClaudeModel import.
    • Removed logger constant.
    • Removed TooltipProvider import.
    • Removed TestingTabContent import.
    • Removed modelSupportsPlanningMode variable.
    • Added excludedPipelineSteps to FeatureData type.
    • Added projectPath prop.
    • Added excludedPipelineSteps state.
    • Modified useEffect to reset excludedPipelineSteps.
    • Added excludedPipelineSteps to handleSave updates.
    • Added PipelineExclusionControls component.
    • Removed conditional rendering for PlanningModeSelect based on modelSupportsPlanningMode.
    • Removed TooltipProvider wrapper from PlanningModeSelect.
    • Removed modelSupportsPlanningMode from disabled prop of Checkbox.
    • Added useEffect to clear requirePlanApproval when planningMode is skip or lite.
  • apps/ui/src/components/views/board-view/dialogs/export-features-dialog.tsx
    • New file: Dialog for exporting features with options for format, history, and plan spec.
  • apps/ui/src/components/views/board-view/dialogs/follow-up-dialog.tsx
    • Removed useState import.
    • Removed createLogger import.
    • Removed EnhancementMode import.
    • Removed logger constant.
  • apps/ui/src/components/views/board-view/dialogs/import-features-dialog.tsx
    • New file: Dialog for importing features from JSON/YAML, including conflict detection and options.
  • apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx
    • Removed modelSupportsThinking import.
    • Removed isCursorModel, isClaudeModel imports.
    • Removed Tooltip, TooltipContent, TooltipProvider, TooltipTrigger imports.
    • Removed modelAllowsThinking, isCurrentModelCursor, modelSupportsPlanningMode variables.
    • Added projectPath prop.
    • Added excludedPipelineSteps to ApplyState interface.
    • Modified getMixedValues to include excludedPipelineSteps.
    • Added excludedPipelineSteps state.
    • Modified useEffect to reset excludedPipelineSteps.
    • Added excludedPipelineSteps to handleApply updates.
    • Added PipelineExclusionControls component.
    • Removed conditional rendering for PlanningModeSelect.
    • Removed TooltipProvider wrapper from PlanningModeSelect.
    • Removed modelSupportsPlanningMode from disabled prop of Checkbox.
    • Added useEffect to clear requirePlanApproval when planningMode is skip or lite.
  • apps/ui/src/components/views/board-view/dialogs/merge-worktree-dialog.tsx
    • Modified Spinner to use variant="foreground".
  • apps/ui/src/components/views/board-view/dialogs/pipeline-step-templates/commit.ts
    • New file: Defines a pipeline step template for committing changes using conventional commit format.
  • apps/ui/src/components/views/board-view/dialogs/pipeline-step-templates/index.ts
    • Imported commitTemplate.
    • Added commitTemplate to STEP_TEMPLATES.
  • apps/ui/src/components/views/board-view/dialogs/plan-approval-dialog.tsx
    • Removed Markdown import.
    • Imported PlanContentViewer.
    • Added showFullDescription state.
    • Added DESCRIPTION_LIMIT and TITLE_LIMIT constants.
    • Modified useEffect to reset showFullDescription.
    • Modified DialogTitle to conditionally display feature title.
    • Modified DialogDescription to conditionally display full/truncated feature description with a "show more/less" button.
    • Replaced Markdown component with PlanContentViewer.
    • Modified Spinner to use variant="foreground".
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/release.yml
Activity
  • The Dockerfile was updated to ensure Playwright Chromium is installed during the server build process, fixing a dependency issue.
  • New AI providers, GitHub Copilot and Google Gemini, were integrated, expanding the range of available models.
  • Server shutdown logic was enhanced to gracefully interrupt running auto-mode features, marking them for resumption upon restart.
  • New API endpoints and services were added for exporting and importing features in JSON/YAML formats, including conflict detection.
  • A new API endpoint was implemented to provide an aggregate status of all projects, including feature counts and health status.
  • A dedicated Test Runner Service was introduced to manage test execution processes for worktrees, with output streaming and status tracking.
  • Functionality was added to exclude specific pipeline steps for individual features, allowing more flexible workflow customization.
  • The spec and plan generation logic was improved to better handle structured output from various AI models and to extract summaries from generated plans.
  • An API endpoint for adding new Git remotes was implemented, and Git initialization now defaults to the 'main' branch.
  • The UI was updated to reflect these changes, including new settings, dialogs, and improved display of agent activity and project status.
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 titled as a small fix for a Docker dependency, but it actually contains a massive number of changes, including new features, major refactorings, and UI enhancements. This makes the review process very difficult and risky. In the future, please split such large changes into smaller, more focused pull requests. Additionally, this PR removes SECURITY_TODO.md and TODO.md files without any explanation or indication that the items within have been addressed. Removing a security to-do list, especially one containing critical vulnerabilities, without fixing them is a major concern.

Despite these process issues, the code changes themselves seem to be of high quality, introducing new providers like Gemini and Copilot, a test runner, project overview pages, and many UI/UX improvements. I've found one minor issue in the Dockerfile.

Dockerfile Outdated
COPY libs/model-resolver/package*.json ./libs/model-resolver/
COPY libs/dependency-resolver/package*.json ./libs/dependency-resolver/
COPY libs/git-utils/package*.json ./libs/git-utils/
COPY libs/spec-parser/package*.json ./libs/spec-parser/
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 line is a duplicate of line 28. Please remove it to avoid redundancy.

The Dockerfile's playwright install step requires playwright to be
available in node_modules/.bin/, but playwright was only a UI dependency.

This adds @playwright/test to server devDependencies so the Docker
build can successfully run `./node_modules/.bin/playwright install chromium`.

Fixes the "playwright: not found" error during Docker image build.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@JasonBroderick JasonBroderick force-pushed the fix/docker-playwright-server-dependency branch from 6afde6f to a3c9de1 Compare February 3, 2026 14:27
@JasonBroderick
Copy link
Author

Lol - I think Gemini has lost it's mind 😅

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.

1 participant