From bb56af7fbd192b8b57e5cf60491a510cebcbfc30 Mon Sep 17 00:00:00 2001 From: Dotta Date: Tue, 29 Sep 2026 12:28:36 -0500 Subject: [PATCH 1/4] Keep the legacy question fixture payload type-safe Co-Authored-By: Paperclip --- .../services/native-runtime/native-question-bridge.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/services/native-runtime/native-question-bridge.test.ts b/server/src/services/native-runtime/native-question-bridge.test.ts index 35abeabd823..cc2503564cf 100644 --- a/server/src/services/native-runtime/native-question-bridge.test.ts +++ b/server/src/services/native-runtime/native-question-bridge.test.ts @@ -411,8 +411,8 @@ describeEmbeddedPostgres("native question bridge", () => { input.questions[0]!.customAnswer = { enabled: true }; const interaction = await projectNativeRuntimeRequest({ db, binding: binding(), event }); if (mode === "legacy") { - const payload = { ...interaction!.payload } as Record; - delete payload.questionSet; + const payload = { ...interaction!.payload }; + if ("questionSet" in payload) delete payload.questionSet; await db.update(issueThreadInteractions).set({ payload }).where(eq(issueThreadInteractions.id, interaction!.id)); } const service = issueThreadInteractionService(db); From c2b0c804cb118378bffa8e0d71f85b389a542935 Mon Sep 17 00:00:00 2001 From: Dotta Date: Tue, 29 Sep 2026 12:39:03 -0500 Subject: [PATCH 2/4] fix(ui): preserve canonical drafts in classic question cards Reuse the canonical question form for pending structured questions so provider drafts, persisted edits, validation and exact submitted text survive both task surfaces. Co-Authored-By: Paperclip --- .../IssueThreadInteractionCard.test.tsx | 50 +++++++++++++++++++ .../components/IssueThreadInteractionCard.tsx | 42 +++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/ui/src/components/IssueThreadInteractionCard.test.tsx b/ui/src/components/IssueThreadInteractionCard.test.tsx index 47b923e5bbe..f311a190fe9 100644 --- a/ui/src/components/IssueThreadInteractionCard.test.tsx +++ b/ui/src/components/IssueThreadInteractionCard.test.tsx @@ -86,6 +86,12 @@ vi.mock("@/lib/router", () => ({ vi.mock("@/api/connection-intents", () => ({ connectionIntentsApi: connectionIntentsApiMocks })); +vi.mock("./task-chat/TaskChatRichInput", () => ({ + TaskChatRichInput: ({ value, onChange }: { value: string; onChange: (value: string) => void }) => ( +