From 55c0e024984a4a1ad0bb0b6d0fddcfcaaef9a457 Mon Sep 17 00:00:00 2001 From: Mani Sundararajan <10191300+itsrainingmani@users.noreply.github.com> Date: Sat, 10 Jan 2026 09:32:04 -0500 Subject: [PATCH] move props.ref to onMount so input can only be set when DOM is ready --- .../cli/cmd/tui/component/prompt/index.tsx | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index 4558914cb7e..1463c813e8a 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -317,6 +317,38 @@ export function Prompt(props: PromptProps) { onMount(() => { promptPartTypeId = input.extmarks.registerType("prompt-part") + props.ref?.({ + get focused() { + return input.focused + }, + get current() { + return store.prompt + }, + focus() { + input.focus() + }, + blur() { + input.blur() + }, + set(prompt) { + input.setText(prompt.input) + setStore("prompt", prompt) + restoreExtmarksFromParts(prompt.parts) + input.gotoBufferEnd() + }, + reset() { + input.clear() + input.extmarks.clear() + setStore("prompt", { + input: "", + parts: [], + }) + setStore("extmarkToPartIndex", new Map()) + }, + submit() { + submit() + }, + }) }) function restoreExtmarksFromParts(parts: PromptInfo["parts"]) { @@ -452,39 +484,6 @@ export function Prompt(props: PromptProps) { }, ]) - props.ref?.({ - get focused() { - return input.focused - }, - get current() { - return store.prompt - }, - focus() { - input.focus() - }, - blur() { - input.blur() - }, - set(prompt) { - input.setText(prompt.input) - setStore("prompt", prompt) - restoreExtmarksFromParts(prompt.parts) - input.gotoBufferEnd() - }, - reset() { - input.clear() - input.extmarks.clear() - setStore("prompt", { - input: "", - parts: [], - }) - setStore("extmarkToPartIndex", new Map()) - }, - submit() { - submit() - }, - }) - async function submit() { if (props.disabled) return if (autocomplete?.visible) return