From bc92986023e02821d8a362af3d2ac2e7026d5f58 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 28 Jan 2026 21:52:31 -0600 Subject: [PATCH] fix(tui): resolve EditBuffer destroyed error in dialog-select Fixes race condition where input focus was called on a potentially stale reference before the EditBuffer was fully initialized. Changed from setTimeout with closure variable to queueMicrotask with direct parameter reference to ensure the correct input instance is focused. Verified by testing provider connection flow (Moonshot AI) which previously crashed with "EditBuffer is destroyed" error. --- packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx index 8ff5a3b23b12..92ed4dc06247 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx @@ -241,7 +241,7 @@ export function DialogSelect(props: DialogSelectProps) { focusedTextColor={theme.textMuted} ref={(r) => { input = r - setTimeout(() => input.focus(), 1) + queueMicrotask(() => r.focus()) }} placeholder={props.placeholder ?? "Search"} />