From 242f61937a8c114d248bf1a5880a2cef643d67a0 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Mon, 20 Apr 2026 19:02:34 +0700 Subject: [PATCH] fix(app): stabilize terminal creation handler --- .../screens/workspace/workspace-screen.tsx | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/packages/app/src/screens/workspace/workspace-screen.tsx b/packages/app/src/screens/workspace/workspace-screen.tsx index 3a92ed8d5..a3e9ecdc6 100644 --- a/packages/app/src/screens/workspace/workspace-screen.tsx +++ b/packages/app/src/screens/workspace/workspace-screen.tsx @@ -1264,34 +1264,24 @@ function WorkspaceScreenContent({ [focusWorkspacePane, openWorkspaceDraftTab, persistenceKey], ); - const handleCreateTerminal = useCallback( - (input?: { paneId?: string }) => { - if (createTerminalMutation.isPending || pendingTerminalCreateInput) { - return; - } + const handleCreateTerminal = useStableEvent((input?: { paneId?: string }) => { + if (createTerminalMutation.isPending || pendingTerminalCreateInput) { + return; + } - if (canCreateTerminalNow) { - createTerminalMutation.mutate(input); - return; - } + if (canCreateTerminalNow) { + createTerminalMutation.mutate(input); + return; + } - if (hasHydratedWorkspaces && isMissingWorkspaceExecutionAuthority) { - toast.error("Workspace path is not available yet"); - return; - } + if (hasHydratedWorkspaces && isMissingWorkspaceExecutionAuthority) { + toast.error("Workspace path is not available yet"); + return; + } - setPendingTerminalCreateInput(input ?? {}); - toast.show("Preparing workspace, opening terminal when ready..."); - }, - [ - canCreateTerminalNow, - createTerminalMutation, - hasHydratedWorkspaces, - isMissingWorkspaceExecutionAuthority, - pendingTerminalCreateInput, - toast, - ], - ); + setPendingTerminalCreateInput(input ?? {}); + toast.show("Preparing workspace, opening terminal when ready..."); + }); const handleSelectSwitcherTab = useCallback( (key: string) => {