From d975ea11e7e879f29b8057b5d1f8aa08fc13f28a Mon Sep 17 00:00:00 2001 From: Alex Southwell <4596216+saphid@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:56:23 +1100 Subject: [PATCH] fix(web): deleting an archived thread also clears its draft, staged uploads and terminal state Co-Authored-By: Claude Opus 5.5 --- apps/web/src/hooks/useThreadActions.permissions.test.ts | 6 ++++++ apps/web/src/hooks/useThreadActions.ts | 3 +++ 2 files changed, 9 insertions(+) diff --git a/apps/web/src/hooks/useThreadActions.permissions.test.ts b/apps/web/src/hooks/useThreadActions.permissions.test.ts index de5056c4af696..829e0ad900dd5 100644 --- a/apps/web/src/hooks/useThreadActions.permissions.test.ts +++ b/apps/web/src/hooks/useThreadActions.permissions.test.ts @@ -319,6 +319,12 @@ describe("thread action permissions", () => { expect(state.requests).toEqual([ expect.objectContaining({ action: "delete", environmentId: secondary }), ]); + expect(state.localEffects).toEqual([ + "refresh-archive", + "release-uploads", + "clear-draft", + "clear-terminal-ui", + ]); expect(threadPanelStatePresence(target)).toEqual(panelStateCleared); }); diff --git a/apps/web/src/hooks/useThreadActions.ts b/apps/web/src/hooks/useThreadActions.ts index e5eedffc16698..bc7f29c81fb54 100644 --- a/apps/web/src/hooks/useThreadActions.ts +++ b/apps/web/src/hooks/useThreadActions.ts @@ -447,6 +447,9 @@ export function useThreadActions() { if (result._tag === "Success") { expireThreadUndos(target, [...LIST_PLACEMENT_UNDO_KINDS, "archive"]); refreshArchivedThreadsForEnvironment(target.environmentId); + releaseComposerDraftUploads(target); + clearComposerDraftForThread(target); + clearTerminalUiState(target); clearDeletedThreadPanelState(target); } return result;