From f5cbf4b6298f91a4e688e9dbda94476474ab431c Mon Sep 17 00:00:00 2001 From: robbond Date: Mon, 3 Aug 2026 19:23:06 +0100 Subject: [PATCH] fix: preserve conversation after update --- components/reasoning-workspace.jsx | 10 +++++++--- components/scenario-form.jsx | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index 3ee8e19..a947725 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -365,6 +365,7 @@ export default function ReasoningWorkspace({ answer, setAnswer, onAnswerSubmit, + lastSubmittedAnswer, }) { const { elapsed: startElapsed, currentMessage: startMsg } = useLoadingStatus( INITIAL_MESSAGES, @@ -376,11 +377,14 @@ export default function ReasoningWorkspace({ updateStatus === "loading" ); + const isUpdating = updateStatus === "loading"; + const hasSelectedQuestion = Boolean(result?.selectedQuestion); + const canAnswer = status === "success" && - updateStatus === "idle" && + !isUpdating && Boolean(result?.situationGraph) && - Boolean(result?.selectedQuestion); + hasSelectedQuestion; const selectedQ = result?.selectedQuestion ?? null; const graph = result?.situationGraph ?? null; @@ -425,7 +429,7 @@ export default function ReasoningWorkspace({ <> {/* ── Post-update acknowledgement ─────────────── */} {updateStatus === "success" && graph && ( - + )} {/* Completion state (only when there is no next question and nothing remains) */} diff --git a/components/scenario-form.jsx b/components/scenario-form.jsx index 2f62781..904e3c4 100644 --- a/components/scenario-form.jsx +++ b/components/scenario-form.jsx @@ -188,6 +188,7 @@ export default function ScenarioForm() { const [updateStatus, setUpdateStatus] = useState("idle"); // idle | loading | error | success const [updateError, setUpdateError] = useState(null); const [updateResult, setUpdateResult] = useState(null); + const [lastSubmittedAnswer, setLastSubmittedAnswer] = useState(""); const textareaRef = useRef(null); const { elapsed: startElapsed, currentMessage: startMsg } = useLoadingStatus( @@ -206,6 +207,8 @@ export default function ScenarioForm() { setResult(null); setAnswer(""); setUpdateStatus("idle"); + setUpdateResult(null); + setLastSubmittedAnswer(""); setUpdateError(null); setResult(null); setUpdateResult(null); @@ -240,6 +243,7 @@ export default function ScenarioForm() { setUpdateStatus("loading"); setUpdateError(null); + setLastSubmittedAnswer(answer.trim()); const submission = await submitAnswerForUpdateCase(fetch, { situationGraph: result?.situationGraph, @@ -337,6 +341,7 @@ export default function ScenarioForm() { answer={answer} setAnswer={setAnswer} onAnswerSubmit={handleUpdate} + lastSubmittedAnswer={lastSubmittedAnswer} /> )}