From 9ccf1e49772ed0fc9ae484cd35b8ddacbe6c860a Mon Sep 17 00:00:00 2001 From: Guilhem Lemouel Date: Mon, 24 Aug 2026 15:07:29 +0200 Subject: [PATCH] fix: don't offer to discard a data table that was created MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closing the wizard after a failed appended step asked "Leave without adding a data table?" and warned that what ran had left things behind. Every part of that is false when the setup itself succeeded: the data table exists and works, and only its migrations did not run. hasUnfinishedIntent() now asks only whether the setup succeeded. The import step is the only caller that passes onFinishAlso, and it shows that failure on its own row with a way to run it again, and will not let Finish through while it stands — so closing loses nothing. The in-dialog "Try again" is unchanged; it is still the direct retry. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Xg8vXUuHCH3aRkf91sfxjx --- .../workspaceSettings/AddDataTableWizard.svelte | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/workspaceSettings/AddDataTableWizard.svelte b/frontend/src/lib/components/workspaceSettings/AddDataTableWizard.svelte index 806239b395..289cce5353 100644 --- a/frontend/src/lib/components/workspaceSettings/AddDataTableWizard.svelte +++ b/frontend/src/lib/components/workspaceSettings/AddDataTableWizard.svelte @@ -782,12 +782,14 @@ /** * Whether closing would throw away work. A failed run counts: its inputs are still editable - * and it may have left something behind, and so does a setup that succeeded with its - * appended step still failing. A run in flight cannot be closed at all, and one that - * finished cleanly has nothing left to lose. + * and it may have left something behind. A run in flight cannot be closed at all, and one + * that made its data table has nothing left to lose — including when `onFinishAlso` failed + * afterwards, because the table is real and working and the caller owns what is left. The + * import step, the only caller that passes one, shows that failure on its own row with a + * way to run it again and will not let Finish through while it stands. */ function hasUnfinishedIntent(): boolean { - return wiz.provider !== undefined && !run.running && (!run.result?.ok || finishAlsoFailed) + return wiz.provider !== undefined && !run.running && !run.result?.ok } /** Backdrop, Escape and the close button all arrive here. */