From 40233595b0adc66d14f915ab3657378b2f9fecdc Mon Sep 17 00:00:00 2001 From: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Date: Thu, 2 Jul 2026 14:24:53 +0800 Subject: [PATCH] fix(app): clear original prompt after retarget (#34863) --- .../components/prompt-input/submission-state.ts | 2 ++ .../prompt-submission-state.test.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/app/src/components/prompt-input/submission-state.ts b/packages/app/src/components/prompt-input/submission-state.ts index ebc4c50715..f9ca735609 100644 --- a/packages/app/src/components/prompt-input/submission-state.ts +++ b/packages/app/src/components/prompt-input/submission-state.ts @@ -7,6 +7,7 @@ export function createPromptSubmissionState(input: { prompt: Prompt context: (ContextItem & { key: string })[] }) { + const initial = input.target let target = input.target let cleared: Prompt | undefined @@ -15,6 +16,7 @@ export function createPromptSubmissionState(input: { context: input.context, target: () => target, clear() { + if (initial !== target) initial.reset() target.reset() cleared = target.current() }, diff --git a/packages/app/test-browser/prompt-submission-state.test.ts b/packages/app/test-browser/prompt-submission-state.test.ts index da90c04516..9f7019d96b 100644 --- a/packages/app/test-browser/prompt-submission-state.test.ts +++ b/packages/app/test-browser/prompt-submission-state.test.ts @@ -38,6 +38,23 @@ describe("prompt submission state", () => { expect(session.context.items()[0]).toMatchObject({ type: "file", path: "src/index.ts" }) }) + test("clears the original first-submit prompt after retargeting", () => { + const workspace = createPromptState() + const session = createPromptState() + workspace.set([{ type: "text", content: "first prompt", start: 0, end: 12 }]) + const submission = createPromptSubmissionState({ + target: workspace, + prompt: workspace.current(), + context: [], + }) + + submission.retarget(session) + submission.clear() + + expect(workspace.current()[0]).toMatchObject({ type: "text", content: "" }) + expect(session.current()[0]).toMatchObject({ type: "text", content: "" }) + }) + test("does not restore over a prompt edited after submission", () => { const target = createPromptState() target.set([{ type: "text", content: "submitted", start: 0, end: 9 }])