From b469effc88ae924913dbab6424bfd73f4e60f684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CCharanjot=E2=80=9D?= Date: Sun, 19 Jul 2026 17:06:17 +0530 Subject: [PATCH] feat: allow deleting tasks from sidebar without archiving first Fixes #3555 --- packages/core/src/context-menu/context-menu.test.ts | 12 ++++++++++++ packages/core/src/context-menu/context-menu.ts | 3 +++ 2 files changed, 15 insertions(+) diff --git a/packages/core/src/context-menu/context-menu.test.ts b/packages/core/src/context-menu/context-menu.test.ts index b06a4a79cb..1c4d9ebc14 100644 --- a/packages/core/src/context-menu/context-menu.test.ts +++ b/packages/core/src/context-menu/context-menu.test.ts @@ -142,6 +142,18 @@ describe("ContextMenuService.showTaskContextMenu", () => { ); }); + it("offers Delete for active tasks and resolves without an inline confirm", async () => { + const menu = new FakeContextMenu(); + // dialogReturning(0) would cancel any inline confirm; Delete must resolve + // anyway because confirmation happens downstream in TaskDeletionService. + const result = makeService(menu, dialogReturning(0)).showTaskContextMenu( + baseTask, + ); + await menu.shown; + findItem(menu.lastItems, "Delete").click(); + expect(await result).toEqual({ action: { type: "delete" } }); + }); + it("resolves to null when the menu is dismissed", async () => { const menu = new FakeContextMenu(); const result = makeService(menu).showTaskContextMenu(baseTask); diff --git a/packages/core/src/context-menu/context-menu.ts b/packages/core/src/context-menu/context-menu.ts index d4437e9488..34f4b5ff12 100644 --- a/packages/core/src/context-menu/context-menu.ts +++ b/packages/core/src/context-menu/context-menu.ts @@ -185,6 +185,9 @@ export class ContextMenuService { }, }, ), + // Confirmation is handled downstream by TaskDeletionService via + // confirmDeleteTask (worktree-aware wording), so no inline confirm here. + this.item("Delete", { type: "delete" }), ]); }