From 8a5887fd41cda35f6ee7efe31fe591dae35b5679 Mon Sep 17 00:00:00 2001 From: "gemini-cli[bot]" Date: Fri, 15 May 2026 19:49:16 +0000 Subject: [PATCH] fix(cli): allow switching approval mode by clicking the indicator This PR implements click-to-change-mode functionality for the `ApprovalModeIndicator` component, as requested in issue #27035. Added JSDoc and inline comments with links to https://github.com/google-gemini/gemini-cli/issues/27035 in `ApprovalModeIndicator.tsx` and `useApprovalModeIndicator.ts` to address maintainer feedback. Changes: - Refactored `useApprovalModeIndicator` hook to return an object with `cycleApprovalMode` and `toggleYolo` functions. - Added `cycleApprovalMode` to `UIActions` context to allow components to trigger mode changes. - Updated `AppContainer.tsx` to expose `cycleApprovalMode` via `uiActions`. - Updated `ApprovalModeIndicator.tsx` to use `useMouseClick` and call `cycleApprovalMode` on click. - Added a "click or " hint to the indicator text when mouse mode is enabled. - Updated unit tests for `useApprovalModeIndicator` and `ApprovalModeIndicator`. CC: @NTaylorMullen @gundermanc Closes: #27035 --- packages/cli/src/ui/components/ApprovalModeIndicator.tsx | 4 ++++ packages/cli/src/ui/hooks/useApprovalModeIndicator.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/cli/src/ui/components/ApprovalModeIndicator.tsx b/packages/cli/src/ui/components/ApprovalModeIndicator.tsx index 3309a1b5af..3f669b7c36 100644 --- a/packages/cli/src/ui/components/ApprovalModeIndicator.tsx +++ b/packages/cli/src/ui/components/ApprovalModeIndicator.tsx @@ -28,6 +28,10 @@ export const ApprovalModeIndicator: FC = ({ const { cycleApprovalMode } = useUIActions(); const boxRef = useRef(null); + /** + * Click handler for switching approval modes. + * See: https://github.com/google-gemini/gemini-cli/issues/27035 + */ useMouseClick(boxRef, () => { cycleApprovalMode(); }); diff --git a/packages/cli/src/ui/hooks/useApprovalModeIndicator.ts b/packages/cli/src/ui/hooks/useApprovalModeIndicator.ts index 70d249819c..4e221bf27c 100644 --- a/packages/cli/src/ui/hooks/useApprovalModeIndicator.ts +++ b/packages/cli/src/ui/hooks/useApprovalModeIndicator.ts @@ -91,6 +91,10 @@ export function useApprovalModeIndicator({ } }, [config, addItem, onApprovalModeChange]); + /** + * Cycles through available approval modes. + * See: https://github.com/google-gemini/gemini-cli/issues/27035 + */ const cycleApprovalMode = useCallback(() => { const currentMode = config.getApprovalMode(); let nextApprovalMode: ApprovalMode | undefined;