Explorar el Código

carry over if no other draft

Sebastian Herrlinger hace 1 día
padre
commit
32728ff684
Se han modificado 1 ficheros con 20 adiciones y 3 borrados
  1. 20 3
      packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx

+ 20 - 3
packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx

@@ -504,8 +504,9 @@ export function Prompt(props: PromptProps) {
     if (active === next) return
 
     const prev = active
+    const prevDraft = prev ? snapshot() : undefined
     if (prev) {
-      promptState.save(prev, snapshot())
+      promptState.save(prev, prevDraft!)
       promptState.bind(prev, undefined)
     }
 
@@ -515,9 +516,25 @@ export function Prompt(props: PromptProps) {
     const draft = promptState.load(next)
     if (draft) {
       ref.restore(draft)
-    } else {
-      clearPrompt("normal")
+      return
+    }
+
+    const carry =
+      prev &&
+      prev.startsWith("session:") &&
+      next.startsWith("session:") &&
+      route.data.type === "session" &&
+      props.sessionID === route.data.sessionID &&
+      !route.data.initialPrompt &&
+      prevDraft &&
+      (prevDraft.prompt.input || prevDraft.prompt.parts.length > 0)
+
+    if (carry) {
+      ref.restore(prevDraft)
+      return
     }
+
+    clearPrompt("normal")
   })
 
   onCleanup(() => {