V0.14.0rc#769
Conversation
The @automaker/* packages in server-bundle/node_modules are symlinks pointing to ../../libs/. Without including the libs directory in extraResources, these symlinks are broken in the packaged app, causing 'Server failed to start' error on launch.
- Modified paths for macOS, Windows, and Linux artifacts to use explicit file patterns instead of wildcard syntax. - Ensured all relevant file types are included for each platform, improving artifact management during releases.
- Added support for excluding specific pipeline steps in feature management, allowing users to skip certain steps during execution. - Introduced a new `PipelineExclusionControls` component for managing exclusions in the UI. - Updated relevant dialogs and components to handle excluded pipeline steps, including `AddFeatureDialog`, `EditFeatureDialog`, and `MassEditDialog`. - Enhanced the `getNextStatus` method in `PipelineService` to account for excluded steps when determining the next status in the pipeline flow. - Updated tests to cover scenarios involving excluded pipeline steps.
…8936017583-e6ni # Conflicts: # apps/ui/src/components/views/board-view.tsx
* refactor: replace crypto.randomUUID with generateUUID in spec editor Use the centralized generateUUID utility from @/lib/utils instead of direct crypto.randomUUID calls in spec editor components. This provides better fallback handling for non-secure contexts (e.g., Docker via HTTP). Files updated: - array-field-editor.tsx - features-section.tsx - roadmap-section.tsx * refactor: simplify generateUUID to always use crypto.getRandomValues Remove conditional checks and fallbacks - crypto.getRandomValues() works in all modern browsers including non-secure HTTP contexts (Docker). This simplifies the code while maintaining the same security guarantees. * refactor: add defensive check for crypto availability Add check for crypto.getRandomValues() availability before use. Throws a meaningful error if the crypto API is not available, rather than failing with an unclear runtime error. --------- Co-authored-by: Claude <noreply@anthropic.com>
* fix: hide Cursor models in selector when provider is disabled The Cursor Models section was appearing in model dropdown selectors even when the Cursor provider was toggled OFF in Settings → AI Providers. This fix adds a !isCursorDisabled check to the rendering condition, matching the pattern already used by Codex and OpenCode providers. This ensures consistency across all provider types. Fixes the issue where: - Codex/OpenCode correctly hide models when disabled - Cursor incorrectly showed models even when disabled * style: fix Prettier formatting
* feat: add per-project default model override for new features
- Add defaultFeatureModel to ProjectSettings type for project-level override
- Add defaultFeatureModel to Project interface for UI state
- Display Default Feature Model in Model Defaults section alongside phase models
- Include Default Feature Model in global Bulk Replace dialog
- Add Default Feature Model override section to Project Settings
- Add setProjectDefaultFeatureModel store action for project-level overrides
- Update clearAllProjectPhaseModelOverrides to also clear defaultFeatureModel
- Update add-feature-dialog to use project override when available
- Include Default Feature Model in Project Bulk Replace dialog
This allows projects with different complexity levels to use different
default models (e.g., Haiku for simple tasks, Opus for complex projects).
* fix: add server-side __CLEAR__ handler for defaultFeatureModel
- Add handler in settings-service.ts to properly delete defaultFeatureModel
when '__CLEAR__' marker is sent from the UI
- Fix bulk-replace-dialog.tsx to correctly return claude-opus when resetting
default feature model to Anthropic Direct (was incorrectly using
enhancementModel's settings which default to sonnet)
These fixes ensure:
1. Clearing project default model override properly removes the setting
instead of storing literal '__CLEAR__' string
2. Global bulk replace correctly resets default feature model to opus
* fix: include defaultFeatureModel in Reset to Defaults action
- Updated resetPhaseModels to also reset defaultFeatureModel to claude-opus
- Fixed initial state to use canonical 'claude-opus' instead of 'opus'
* refactor: use DEFAULT_GLOBAL_SETTINGS constant for defaultFeatureModel
Address PR review feedback:
- Replace hardcoded { model: 'claude-opus' } with DEFAULT_GLOBAL_SETTINGS.defaultFeatureModel
- Fix Prettier formatting for long destructuring lines
- Import DEFAULT_GLOBAL_SETTINGS from @automaker/types where needed
This improves maintainability by centralizing the default value.
…17583-e6ni feat: implement pipeline step exclusion functionality
- Introduced new routes for exporting and importing features, enhancing project management capabilities. - Added UI components for export and import dialogs, allowing users to easily manage feature data. - Updated HTTP API client to support export and import operations with appropriate options and responses. - Enhanced board view with controls for triggering export and import actions, improving user experience. - Defined new types for feature export and import, ensuring type safety and clarity in data handling.
- Introduced a new Projects Overview link in the sidebar footer for easy navigation. - Added a button for Projects Overview in the dashboard view, enhancing accessibility to project insights. - Updated types to include project overview-related definitions, supporting the new features.
* feat(ui): make React Query DevTools configurable - Add showQueryDevtools setting to app store with persistence - Add toggle in Global Settings > Developer section - Move DevTools button from bottom-left to bottom-right (less intrusive) - Support VITE_HIDE_QUERY_DEVTOOLS env variable to disable - DevTools only available in development mode Users can now: 1. Toggle DevTools on/off via Settings > Developer 2. Set VITE_HIDE_QUERY_DEVTOOLS=true to hide permanently 3. DevTools are now positioned at bottom-right to avoid overlapping UI controls * chore: update package-lock.json * fix(ui): hide React Query DevTools toggle in production mode * refactor(ui): remove VITE_HIDE_QUERY_DEVTOOLS env variable The persisted toggle in Settings > Developer is sufficient for controlling DevTools visibility. No need for an additional env variable override. * fix(ui): persist showQueryDevtools setting across page refreshes - Add showQueryDevtools to GlobalSettings type - Add showQueryDevtools to hydrateStoreFromSettings function - Add default value in DEFAULT_GLOBAL_SETTINGS * fix: restore package-lock.json from base branch Removes git+ssh:// URL that was accidentally introduced --------- Co-authored-by: Claude <noreply@anthropic.com>
- Introduced a new `useEventRecency` hook to track the recency of WebSocket events, allowing for conditional polling based on event activity. - Updated `AgentInfoPanel` to utilize the new hook, adjusting polling intervals based on WebSocket activity. - Implemented debounced invalidation for auto mode events to optimize query updates during rapid event streams. - Added utility functions for managing event recency checks in various query hooks, improving overall responsiveness and reducing unnecessary polling. - Introduced debounce and throttle utilities for better control over function execution rates. This enhancement improves the application's performance by reducing polling when real-time updates are available, ensuring a more efficient use of resources.
- Added Test Runner Service to manage test execution processes for worktrees. - Introduced endpoints for starting and stopping tests, and retrieving test logs. - Created UI components for displaying test logs and managing test sessions. - Integrated test runner events for real-time updates in the UI. - Updated project settings to include configurable test commands. This enhancement allows users to run tests directly from the UI, view logs in real-time, and manage test sessions effectively.
Address PR review feedback: - Use WS_ACTIVITY_THRESHOLD constant instead of hardcoded 10000 in agent-info-panel.tsx - Extract AGENT_OUTPUT_POLLING_INTERVAL constant for 5000ms value in use-features.ts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add path validation middleware for optional projectPath and worktreePath parameters in test runner routes to maintain parity with other worktree routes and ensure proper security validation when ALLOWED_ROOT_DIRECTORY is configured. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
feat(tests): implement test runner functionality with API integration
…ttings Relocate the export and import features functionality from the board header dropdown menu to a new "Data" section in project settings for better UX. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…c-1768981415660-tt2v # Conflicts: # 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
…tments - Bumped version from 0.12.0rc to 0.13.0 across the project. - Updated package-lock.json to reflect changes in dependencies, including marking certain dependencies as `devOptional`. - Adjusted import paths in the UI for better module organization. This update ensures consistency in versioning and improves the structure of utility imports.
fix: excessive api pooling
- Updated the ideation service to utilize phase settings for model resolution, improving flexibility in handling model aliases. - Introduced `getPhaseModelWithOverrides` to fetch model and provider information, allowing for dynamic adjustments based on project settings. - Enhanced logging to provide clearer insights into the model and provider being used during suggestion generation. This update streamlines the process of generating suggestions by leveraging phase-specific configurations, ensuring better alignment with user-defined settings.
- Introduced a new route for adding remotes to git worktrees. - Enhanced the PushToRemoteDialog component to support adding new remotes, including form handling and error management. - Updated the API client to include an endpoint for adding remotes. - Modified the worktree state management to track the presence of remotes. - Improved the list branches handler to check for configured remotes. This update allows users to easily add remotes through the UI, enhancing the overall git workflow experience.
Address PR #650 review feedback from gemini-code-assist. The call to resolveModelString was redundant because resolvePhaseModel already returns the fully resolved canonical model ID. When providerId is set, it returns the provider-specific model ID unchanged; otherwise, it already calls resolveModelString internally. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated the comment to better explain why resolveModelString is not needed after resolvePhaseModel - the latter already handles model alias resolution internally. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
fix: detect no remote branch
The Copilot icon had a hardcoded white fill that made it invisible on light theme backgrounds. Changed to use currentColor so it adapts to theme and respects CSS text color classes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Dev server test was failing on non-localhost hostnames (e.g., 'fedora') because it expected 'localhost' in the URL. Now sets HOSTNAME env var in test setup and restores it in teardown for consistent test behavior across all environments. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Updated the sidebar header and navigation components to increase top padding for macOS Electron users from 10px to 38px, ensuring better layout and avoiding overlap with the traffic light controls. This change enhances the user experience on macOS platforms.
Extract the hardcoded 'pt-[38px]' magic number into a shared constant MACOS_ELECTRON_TOP_PADDING_CLASS for better maintainability. This addresses the PR #732 review feedback from Gemini Code Assist. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…cher Updated the ProjectSwitcher component to conditionally apply top padding based on the operating system and Electron environment. This change utilizes the newly created MACOS_ELECTRON_TOP_PADDING_CLASS for improved maintainability and consistency across the UI.
fix(ui): adjust padding for logo for mac
…artup Fixes #742 This commit resolves two critical issues that prevented the Electron app from starting: 1. **Broken symlinks in server bundle** - After npm install, local @automaker/* packages were symlinked in node_modules - These symlinks broke after electron-builder packaging since relative paths no longer existed - Solution: Added Step 6b in prepare-server.mjs to replace symlinks with real directory copies - Added lstatSync and resolve imports to support symlink detection and replacement 2. **electronUserDataWriteFileSync fails on first launch** - The userData directory doesn't exist on first app launch - Writing .api-key file would fail with ENOENT error - Solution: Added directory existence check and creation with { recursive: true } before writing Files modified: - apps/ui/scripts/prepare-server.mjs: Added symlink replacement logic after npm install - libs/platform/src/system-paths.ts: Added parent directory creation in electronUserDataWriteFileSync Verification: After these fixes, npm run build:electron produces a working app that starts without ERR_MODULE_NOT_FOUND errors. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Use lstatSync with try/catch for robust broken symlink detection - Remove redundant existsSync check before mkdirSync with recursive: true Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
fix(electron): Fix broken symlinks in server bundle preventing app startup
Git initialization now explicitly specifies --initial-branch=main to match GitHub's default branch standard (since October 2020). This prevents the branch name mismatch that caused features to disappear from the UI when pushing to GitHub. Fixes #734 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…anch fix(server): Use 'main' as default branch for new git projects
…cy-null-worktree fix(ui): handle null selectedWorktree in max concurrency handler
* feat(terminal): Add core infrastructure for custom terminal configurations - Add TerminalConfig types to settings schema (global & project-specific) - Create RC generator with hex-to-xterm-256 color mapping - Create RC file manager for .automaker/terminal/ directory - Add terminal theme color data (40 themes) to platform package - Integrate terminal config injection into TerminalService - Support bash, zsh, and sh with proper env var injection (BASH_ENV, ZDOTDIR, ENV) - Add onThemeChange hook for theme synchronization Part of custom terminal configurations feature implementation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * feat(terminal): Wire terminal service with settings service - Pass SettingsService to TerminalService constructor - Initialize terminal service with settings service dependency - Enable terminal config injection to work with actual settings This completes Steps 1-4 of the terminal configuration plan: - RC Generator (color mapping, prompt formats) - RC File Manager (file I/O, atomic writes) - Settings Schema (GlobalSettings + ProjectSettings) - Terminal Service Integration (env var injection) Next steps: Settings UI and theme change hooks. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * feat(terminal): Add Settings UI and theme change synchronization Complete Steps 5 & 6 of terminal configuration implementation: Settings UI Components: - Add PromptPreview component with live theme-aware rendering - Add TerminalConfigSection with comprehensive controls: * Enable/disable toggle with confirmation dialog * Custom prompt toggle * Prompt format selector (4 formats) * Git branch/status toggles * Custom aliases textarea * Custom env vars key-value editor with validation * Info box explaining behavior - Integrate into existing TerminalSection Theme Change Hook: - Add theme detection in update-global settings route - Regenerate RC files for all projects when theme changes - Skip projects with terminal config disabled - Error handling with per-project logging - Inject terminal service with settings service dependency This completes the full terminal configuration feature: ✓ RC Generator (color mapping, prompts) ✓ RC File Manager (file I/O, versioning) ✓ Settings Schema (types, defaults) ✓ Terminal Service Integration (env vars, PTY spawn) ✓ Settings UI (comprehensive controls, preview) ✓ Theme Synchronization (automatic RC regeneration) New terminals will use custom prompts matching app theme. Existing terminals unaffected. User RC files preserved. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(terminal): Add error handling and explicit field mapping for terminal config - Add try-catch block to handleToggleEnabled - Explicitly set all required terminalConfig fields - Add console logging for debugging - Show error toast if update fails - Include rcFileVersion: 1 in config object This should fix the issue where the toggle doesn't enable after clicking OK in the confirmation dialog. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(terminal): Use React Query mutation hook for settings updates The issue was that `updateGlobalSettings` doesn't exist in the app store. The correct pattern is to use the `useUpdateGlobalSettings` hook from use-settings-mutations.ts, which is a React Query mutation. Changes: - Import useUpdateGlobalSettings from mutations hook - Use mutation.mutate() instead of direct function call - Add proper onSuccess/onError callbacks - Remove async/await pattern (React Query handles this) This fixes the toggle not enabling after clicking OK in the confirmation dialog. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(terminal): Use React Query hook for globalSettings instead of store The root cause: Component was reading globalSettings from the app store, which doesn't update reactively when the mutation completes. Solution: Use useGlobalSettings() React Query hook which: - Automatically refetches when the mutation invalidates the cache - Triggers re-render with updated data - Makes the toggle reflect the new state Now the flow is: 1. User clicks toggle → confirmation dialog 2. Click OK → mutation.mutate() called 3. Mutation succeeds → invalidates queryKeys.settings.global() 4. Query refetches → component re-renders with new globalSettings 5. Toggle shows enabled state ✓ Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * debug(terminal): Add detailed logging for terminal config application Add logging to track: - When terminal config check happens - CWD being used - Global and project enabled states - Effective enabled state This will help diagnose why RC files aren't being generated when opening terminals in Automaker. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix terminal rc updates and bash rcfile loading * feat(terminal): add banner on shell start * feat(terminal): colorize banner per theme * chore(terminal): bump rc version for banner colors * feat(terminal): match banner colors to launcher * feat(terminal): add prompt customization controls * feat: integrate oh-my-posh prompt themes * fix: resolve oh-my-posh theme path * fix: correct oh-my-posh config invocation * docs: add terminal theme screenshot * fix: address review feedback and stabilize e2e test * ui: split terminal config into separate card * fix: enable cross-platform Warp terminal detection - Remove macOS-only platform restriction for Warp - Add Linux CLI alias 'warp-terminal' (primary on Linux) - Add CLI launch handler using --cwd flag - Fixes issue where Warp was not detected on Linux systems Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Fix #684: Prevent Windows reserved filename creation - Add sanitizeFilename() utility to detect and prefix Windows reserved names (NUL, CON, PRN, AUX, COM1-9, LPT1-9) - Apply sanitization to save-image route to prevent "nul" file creation - Add 23 comprehensive tests for filename sanitization edge cases Fix #576: Detect actual dev server port from output - Parse stdout/stderr for real server URLs (Vite, Next.js, generic formats) - Update server URL when detected instead of using allocated PORT - Emit dev-server:url-detected event for frontend updates - Add 6 tests for URL detection patterns Fix #193: Commit only feature-specific changes - Change from 'git add -A' to branch-aware file staging - Use git diff to find files changed on feature branch only - Prevent committing unrelated changes from other features - Maintain backward compatibility with main branch workflow All fixes include comprehensive tests and maintain backward compatibility. Test results: 1,968 tests passed (547 package + 1,421 server tests)
Fix #689: Improve auto-generated commit message quality - Add generateCommitMessage() method that includes description summary - Include first 5 lines of feature description (up to 300 chars) - Add git diff stats to provide file change context - Commit messages now reflect the actual scope of work performed - Maintains backward compatibility with fallback for missing features Fix #601: Improve scroll indicator visibility on small screens - Enhanced scroll indicator with gradient fade effect - Show indicator on both expanded and collapsed sidebar states - Added "Scroll" text label for better discoverability - More prominent brand-colored chevron with animation - Prevents Project Settings from being hidden on smaller laptop screens Both fixes improve user experience without breaking existing functionality. Test results: All 1,421 server tests pass
- Replace the Automaker License Agreement with a simplified project status section in the README, indicating that the project is no longer actively maintained. - Update the LICENSE file to reflect the new MIT License. - Add license information to package.json for clarity.
|
Important Review skippedToo many files! This PR contains 299 files, which is 149 over the limit of 150. You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing touches🧪 Generate unit tests (beta)
Tip Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord. 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. Comment |
Summary of ChangesHello @webdevcody, 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 release candidate focuses on expanding AI model compatibility and significantly improving the stability and feature set of the core application. New integrations with GitHub Copilot and Google Gemini provide users with more choices for AI-driven development. A major emphasis has been placed on making the auto-mode more resilient to interruptions and enhancing project management capabilities through new export/import features and a comprehensive project overview dashboard. Additionally, a dedicated test runner has been integrated for streamlined development workflows, alongside numerous UI/UX enhancements and critical build process adjustments. Highlights
🧠 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
Ignored Files
Activity
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
Code Review
This pull request introduces a significant number of changes for the v0.14.0 release candidate. Key updates include re-licensing the project to MIT and marking it as unmaintained, adding new AI providers for Gemini and GitHub Copilot, and introducing a multi-project overview dashboard. The sidebar UI has been substantially refactored for improved usability and a new "discord" style.
On the backend, there are major enhancements to the auto-mode service for better robustness, including improved recovery for interrupted features and more sophisticated git operations. The PR also adds a test runner, feature import/export functionality, and terminal prompt customization.
Overall, this is a massive and impressive update that adds a lot of value and polish. My only minor finding is a duplicated line in the Dockerfile.
| 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/ |
Merge PR AutoMaker-Org#769 from AutoMaker-Org/v0.14.0rc with custom features preserved: - Resolved conflicts in app-store.ts (custom state fields: docs panel, browser panel, project colors, editor theme) - Extended state-types.ts and ui-types.ts with custom type definitions (BrowserTab, RecentDoc) - Upstream adds: Copilot/Gemini providers, test runner, feature export/import, project overview, terminal themes, electron refactor Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
No description provided.