-
Notifications
You must be signed in to change notification settings - Fork 2.1k
fix: Resolve confusing auto-approve checkbox states #5602
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
✅ No security or compliance issues detected. Reviewed everything up to fe07cc6. Security Overview
Detected Code ChangesThe diff is too large to display a summary of code changes. Reply to this PR with |
webview-ui/src/components/chat/__tests__/ChatView.auto-approve-new.spec.tsx
Outdated
Show resolved
Hide resolved
- Add derived state to check if any auto-approve options are enabled - Disable master checkbox when no sub-options selected - Show 'None' when no options enabled regardless of checkbox state - Add automatic master checkbox toggling - Add tooltip explaining disabled state - Create custom hook useAutoApprovalState for shared logic - Add accessibility aria-labels - Update translations for all 17 supported languages - Add comprehensive unit tests Closes #2579
- Fix French translation: 'automatically' -> 'automatiquement' - Fix Hindi translation: mixed scripts in 'कॉन्फ़िgerेशन' -> 'कॉन्फ़िगरेशन' - Fix typo: 'CodeAccordian' -> 'CodeAccordion' in test file - Remove redundant state variables in AutoApproveMenu.tsx - Fix translation key namespace: use settings:autoApprove.selectOptionsFirst - Add missing translation key to all language files
907cec5
to
e734ec7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR resolves confusing auto-approve checkbox states by introducing derived state for sub-options, disabling the master toggle when no options are selected, and updating related UI and logic. It also adds new translation keys with tooltips and updates tests.
- Added
useAutoApprovalState
hook to computehasEnabledOptions
andeffectiveAutoApprovalEnabled
. - Updated
AutoApproveMenu
andAutoApproveSettings
to disable/check the master checkbox based on sub-options, with explanatory tooltips. - Refactored
ChatView.isAutoApproved
to prevent auto-approval when only the master toggle is enabled. - Added
toggleAriaLabel
,disabledAriaLabel
, andselectOptionsFirst
translation keys across all locales.
Reviewed Changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 3 comments.
Show a summary per file
File | Description |
---|---|
webview-ui/src/hooks/useAutoApprovalState.ts | Introduced hook for derived auto-approve state |
webview-ui/src/components/settings/AutoApproveSettings.tsx | Integrated derived hook, disabled master checkbox, added tooltip |
webview-ui/src/components/chat/AutoApproveMenu.tsx | Applied hook, updated master checkbox behavior, display text, tooltip |
webview-ui/src/components/chat/ChatView.tsx | Updated isAutoApproved to respect sub-option enablement |
webview-ui/src/i18n/locales/**/settings.json & chat.json | Added new tooltip and aria-label translation keys across locales |
- Fix tooltip rendering to conditionally show only when needed - Reuse useAutoApprovalState hook in ChatView to avoid code duplication - Improve code quality and consistency across auto-approve components
- Test hasEnabledOptions computation with various toggle combinations - Test effectiveAutoApprovalEnabled logic - Test memoization behavior - Test edge cases including partial objects and non-boolean values - Ensure 100% coverage of the hook's functionality
- Simplify conditional rendering in AutoApproveMenu by using single checkbox with conditional tooltip - Extract duplicated toggles logic into reusable useAutoApprovalToggles hook - Fix ESLint no-unused-vars errors after refactoring
3a605ff
to
1ece8e9
Compare
- Added missing alwaysApproveResubmit to useAutoApprovalToggles hook - Updated AutoApproveSettings to use the shared hook instead of creating its own toggles - Removed unused useMemo import from AutoApproveSettings
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* main: fix: Resolve confusing auto-approve checkbox states (RooCodeInc#5602) fix: prevent empty mode names from being saved (RooCodeInc#5766) (RooCodeInc#5794) Format time in ISO 8601 (RooCodeInc#5793) fix: resolve DirectoryScanner memory leak and improve file limit handling (RooCodeInc#5785) Fix settings dirty check (RooCodeInc#5779) feat: increase Ollama API timeout values and extract as constants (RooCodeInc#5778) fix: Exclude Terraform and Terragrunt cache directories from checkpoints (RooCodeInc#4601) (RooCodeInc#5750) Move less commonly used provider settings into an advanced dropdown (RooCodeInc#5762) feat: Add configurable error & repetition limit with unified control (RooCodeInc#5654) (RooCodeInc#5752) list-files must include at least the first-level directory contents (RooCodeInc#5303) Update evals repo link (RooCodeInc#5758) Feature/vertex ai model name conversion (RooCodeInc#5728) fix(litellm): handle baseurl with paths correctly (RooCodeInc#5697) Add telemetry for todos (RooCodeInc#5746) feat: add undo functionality for enhance prompt feature (fixes RooCodeInc#5741) (RooCodeInc#5742) Fix max_tokens limit for moonshotai/kimi-k2-instruct on Groq (RooCodeInc#5740) Changeset version bump (RooCodeInc#5735) Add changeset for v3.23.12 patch release (RooCodeInc#5734) Update the max-token calculation in model-params to use the shared logic (RooCodeInc#5720) Changeset version bump (RooCodeInc#5719) chore: add changeset for v3.23.11 patch release (RooCodeInc#5718) Add Kimi K2 model and better support (RooCodeInc#5717) Fix: Remove invalid skip-checkout parameter from GitHub Actions workflows (RooCodeInc#5676) feat: add Cmd+Shift+. keyboard shortcut for previous mode switching (RooCodeInc#5695) Changeset version bump (RooCodeInc#5708) chore: add changeset for v3.23.10 patch release (RooCodeInc#5707) Add padding to the index model options (RooCodeInc#5706) fix: prioritize built-in model dimensions over custom dimensions (RooCodeInc#5705) Update CHANGELOG.md Changeset version bump (RooCodeInc#5702) chore: add changeset for v3.23.9 patch release (RooCodeInc#5701) Tweaks to command timeout error (RooCodeInc#5700) Update contributors list (RooCodeInc#5639) feat: enable Claude Code provider to run natively on Windows (RooCodeInc#5615) feat: Add configurable timeout for command execution (RooCodeInc#5668) feat: add gemini-embedding-001 model to code-index service (RooCodeInc#5698) fix: resolve vector dimension mismatch error when switching embedding models (RooCodeInc#5616) (RooCodeInc#5617) fix: [5424] return the cwd in the exec tool's response so that the model is not lost after subsequent calls (RooCodeInc#5667) Changeset version bump (RooCodeInc#5670) chore: add changeset for v3.23.8 patch release (RooCodeInc#5669)
BEFORE

AFTER

BEFORE

AFTER

BEFORE

AFTER


Related GitHub Issue
Closes: #2579
Roo Code Task Context (Optional)
N/A
Description
This PR fixes the confusing auto-approve checkbox states by implementing the following changes:
Key Implementation Details:
hasEnabledOptions
to check if any auto-approve sub-options are enabledeffectiveAutoApprovalEnabled
to ensure the master checkbox reflects the actual stateDesign Choices:
AutoApproveMenu
) and settings page (AutoApproveSettings
) for consistencyisAutoApproved
function inChatView
to respect the new logic, preventing auto-approval when only the master is checkedTranslation Updates:
autoApprove.selectOptionsFirst
to all 17 supported languagesAreas for Review Focus:
Test Procedure
Unit Tests Added:
AutoApproveMenu.spec.tsx
covering:ChatView.auto-approve-new.spec.tsx
to verify auto-approval doesn't trigger when only master is enabledManual Testing Steps:
Test Commands:
All tests are passing ✅
Pre-Submission Checklist
Screenshots / Videos
[Screenshots to be added showing the before/after states of the auto-approve checkbox]
Documentation Updates
Additional Notes
This implementation follows the proposed solution from the issue, preventing the confusing states where:
The solution maintains backward compatibility with existing saved settings.
Get in Touch
[Your Discord username]
Important
Improves auto-approve checkbox logic by introducing derived states and updating UI to prevent misleading states, with consistent behavior across components and updated translations.
hasEnabledOptions
andeffectiveAutoApprovalEnabled
states inAutoApproveMenu.tsx
andChatView.tsx
to manage checkbox states.AutoApproveMenu.tsx
andChatView.tsx
to use new state logic.AutoApproveMenu.spec.tsx
andChatView.auto-approve-new.spec.tsx
to cover new behavior.autoApprove.selectOptionsFirst
key to 17 languages for tooltip consistency.This description was created by
for fe07cc6. You can customize this summary. It will automatically update as commits are pushed.