From a2c1539875e48675336ee5efe30dfd6b3d749c68 Mon Sep 17 00:00:00 2001 From: Dan Mo Date: Sun, 25 Oct 2026 04:55:29 +1100 Subject: [PATCH] Workspace: unconfirmed no-cost edits recover themselves; no duplicate pending message Co-Authored-By: Claude Opus 5.5 --- studio-app/src/StoryboardConnected.jsx | 11 +++++++++++ studio-app/src/StoryboardWorkspace.jsx | 15 ++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/studio-app/src/StoryboardConnected.jsx b/studio-app/src/StoryboardConnected.jsx index 12def87..3504002 100644 --- a/studio-app/src/StoryboardConnected.jsx +++ b/studio-app/src/StoryboardConnected.jsx @@ -320,6 +320,17 @@ export default function StoryboardConnected({ onLegacyGuide, onCanvas, onNewScen live = false; }; }, [c.account, s.project.id, s.workspace.mode]); + // An unconfirmed edit (no generation, no money) replays itself with its original key: + // the server returns the first result or proves nothing was written (owner, 2026-10-25). + // Preflight and batch submissions still wait for the person to check them. + const pendingKind = + c.account && s.workspace.mode === 'cloud' && !cloud.workbenchRunning() + ? cloud.workbenchPending()?.kind + : null; + useEffect(() => { + if (!['actions', 'preferences', 'copies'].includes(pendingKind)) return; + void dispatch({ type: 'workbenchRecover' }).catch(() => {}); + }, [pendingKind, s.project.id]); useEffect(() => { if (!c.account || !c.operatorAccess) { setQueue(null); diff --git a/studio-app/src/StoryboardWorkspace.jsx b/studio-app/src/StoryboardWorkspace.jsx index f1aca99..118c961 100644 --- a/studio-app/src/StoryboardWorkspace.jsx +++ b/studio-app/src/StoryboardWorkspace.jsx @@ -1055,7 +1055,20 @@ function StoryboardShell({ onLegacyGuide, onCanvas, onNewScene, filmControl }) { onDragCancel={() => setDragging(null)} >
- +