From dc1f485a86eb26373d8dca597678183d672a3249 Mon Sep 17 00:00:00 2001 From: Guilhem Lemouel Date: Thu, 24 Sep 2026 08:43:25 +0200 Subject: [PATCH] fix: resolve the key before deleting a draft from the drafts page The page lists a live editor's draft under its chosen name, so the name has to be resolved to a storage key now that the adapter takes one. Co-Authored-By: Claude Opus 5 (1M context) --- .../(logged)/global_drafts/+page.svelte | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/frontend/src/routes/(root)/(logged)/global_drafts/+page.svelte b/frontend/src/routes/(root)/(logged)/global_drafts/+page.svelte index f645f7e3d6..99782a4f34 100644 --- a/frontend/src/routes/(root)/(logged)/global_drafts/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/global_drafts/+page.svelte @@ -3,7 +3,8 @@ import { clearGlobalDrafts, deleteGlobalDraft, - listGlobalDrafts + listGlobalDrafts, + resolveDraftTarget } from '$lib/components/copilot/chat/global/userDraftAdapter' import type { WorkspaceItem } from '$lib/components/copilot/chat/global/workspaceItems' import { goto } from '$lib/navigation' @@ -49,9 +50,19 @@ return `${item.type}:${item.triggerKind ?? '-'}:${item.path}` } + // A live editor's draft is listed under its chosen name, so the key to delete has to be + // resolved from it; a persisted row is already listed under its storage key. + function draftTargetOf(item: WorkspaceItem) { + return resolveDraftTarget($workspaceStore!, { + type: item.type, + path: item.path, + triggerKind: item.triggerKind + }) + } + async function deleteDraft(item: WorkspaceItem) { if (!$workspaceStore) return - await deleteGlobalDraft($workspaceStore, item.type, item.path, item.triggerKind) + await deleteGlobalDraft($workspaceStore, item.type, await draftTargetOf(item), item.triggerKind) refreshDrafts() } @@ -62,7 +73,12 @@ // Continue past a per-row failure so one bad delete doesn't strand the rest. for (const item of [...drafts]) { try { - await deleteGlobalDraft($workspaceStore, item.type, item.path, item.triggerKind) + await deleteGlobalDraft( + $workspaceStore, + item.type, + await draftTargetOf(item), + item.triggerKind + ) } catch (e) { console.error('Failed to clear draft', item.path, e) }