From be7606824b15983c5ad1d0370f12dc08d25971dd Mon Sep 17 00:00:00 2001 From: Devansh Jain <31609257+devanshrj@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:58:07 -0800 Subject: [PATCH] fix: make Shift+Tab enter plan mode before auto-approve (#1197) --- src/cli/components/InputRich.tsx | 2 +- .../cli/permission-mode-cycle-order.test.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/tests/cli/permission-mode-cycle-order.test.ts diff --git a/src/cli/components/InputRich.tsx b/src/cli/components/InputRich.tsx index e4a5ed8..0aff335 100644 --- a/src/cli/components/InputRich.tsx +++ b/src/cli/components/InputRich.tsx @@ -1041,8 +1041,8 @@ export function Input({ // Cycle through permission modes const modes: PermissionMode[] = [ "default", - "acceptEdits", "plan", + "acceptEdits", "bypassPermissions", ]; const currentIndex = modes.indexOf(currentMode); diff --git a/src/tests/cli/permission-mode-cycle-order.test.ts b/src/tests/cli/permission-mode-cycle-order.test.ts new file mode 100644 index 0000000..204414d --- /dev/null +++ b/src/tests/cli/permission-mode-cycle-order.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, test } from "bun:test"; +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; + +describe("permission mode cycle order", () => { + test("Shift+Tab cycles from default to plan before edit and yolo modes", () => { + const inputRichPath = fileURLToPath( + new URL("../../cli/components/InputRich.tsx", import.meta.url), + ); + const source = readFileSync(inputRichPath, "utf-8"); + + expect(source).toContain("const modes: PermissionMode[] = ["); + expect(source).toContain( + '"default",\n "plan",\n "acceptEdits",', + ); + expect(source).toContain('"acceptEdits",\n "bypassPermissions",'); + }); +});