From cfae2814b3036f78fc9b0468a28df82946e6395c Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Mon, 22 Dec 2025 19:10:05 -0800 Subject: [PATCH] fix: generate plan file path when entering plan mode via tab cycling (#357) Co-authored-by: Letta --- src/cli/App.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/cli/App.tsx b/src/cli/App.tsx index b2a6cd6..8e7dbf1 100644 --- a/src/cli/App.tsx +++ b/src/cli/App.tsx @@ -22,7 +22,7 @@ import type { AgentProvenance } from "../agent/create"; import { sendMessageStream } from "../agent/message"; import { SessionStats } from "../agent/stats"; import type { ApprovalContext } from "../permissions/analyzer"; -import { permissionMode } from "../permissions/mode"; +import { type PermissionMode, permissionMode } from "../permissions/mode"; import { updateProjectSettings } from "../settings"; import { settingsManager } from "../settings-manager"; import { telemetry } from "../telemetry"; @@ -4310,6 +4310,17 @@ DO NOT respond to these messages or otherwise consider them in your response unl permissionMode.getMode(), ); + // Handle permission mode changes from the Input component (e.g., shift+tab cycling) + const handlePermissionModeChange = useCallback((mode: PermissionMode) => { + // When entering plan mode via tab cycling, generate and set the plan file path + if (mode === "plan") { + const planPath = generatePlanFilePath(); + permissionMode.setPlanFilePath(planPath); + } + // permissionMode.setMode() is called in InputRich.tsx before this callback + setUiPermissionMode(mode); + }, []); + const handlePlanApprove = useCallback( async (acceptEdits: boolean = false) => { const currentIndex = approvalResults.length; @@ -4762,7 +4773,7 @@ Plan file path: ${planFilePath}`; onSubmit={onSubmit} onBashSubmit={handleBashSubmit} permissionMode={uiPermissionMode} - onPermissionModeChange={setUiPermissionMode} + onPermissionModeChange={handlePermissionModeChange} onExit={handleExit} onInterrupt={handleInterrupt} interruptRequested={interruptRequested}