From 37945f1fdf36c11a59e83df951cdcc635dd12e31 Mon Sep 17 00:00:00 2001 From: RoboClaw Date: Tue, 25 Aug 2026 21:43:49 -0700 Subject: [PATCH] fix(ui): show Draft mode once in new-session composer (#129858) Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com> Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> --- ...w-session-page.capability-menu.e2e.test.ts | 2 +- .../composer-capability-controls.ts | 39 ++++++------------- ui/src/pages/new-session/composer.test.ts | 12 ++++-- 3 files changed, 21 insertions(+), 32 deletions(-) diff --git a/ui/src/e2e/new-session-page.capability-menu.e2e.test.ts b/ui/src/e2e/new-session-page.capability-menu.e2e.test.ts index d5e49ca692b2..144bde7af1a2 100644 --- a/ui/src/e2e/new-session-page.capability-menu.e2e.test.ts +++ b/ui/src/e2e/new-session-page.capability-menu.e2e.test.ts @@ -84,7 +84,7 @@ suite.define(() => { (text) => text.replace(/\s+/g, " ").trim(), ), ) - .toEqual(["Draft", "3 session overrides"]); + .toEqual(["3 session overrides"]); await page.locator(".new-session-page__message").fill("prepare the release"); await composer.getByRole("button", { name: "Start session" }).click(); diff --git a/ui/src/pages/new-session/composer-capability-controls.ts b/ui/src/pages/new-session/composer-capability-controls.ts index ccc1c26affd7..b9cd0d19896e 100644 --- a/ui/src/pages/new-session/composer-capability-controls.ts +++ b/ui/src/pages/new-session/composer-capability-controls.ts @@ -96,9 +96,8 @@ export function renderNewSessionPlusMenu( } export function renderNewSessionSelectionStatus(options: NewSessionComposerCapabilityOptions) { - const draftEnabled = options.visibility === "draft"; const overrideCount = countSessionToolOverrides(options.toolOverrides); - if (!draftEnabled && overrideCount === 0) { + if (overrideCount === 0) { return nothing; } const disabled = options.submitting || options.messageLocked === true; @@ -108,30 +107,16 @@ export function renderNewSessionSelectionStatus(options: NewSessionComposerCapab options.requestUpdate(); }; return html` - ${draftEnabled - ? html`` - : nothing} - ${overrideCount > 0 - ? html`` - : nothing} + `; } diff --git a/ui/src/pages/new-session/composer.test.ts b/ui/src/pages/new-session/composer.test.ts index 8207c4a4c657..97e8829ed8c2 100644 --- a/ui/src/pages/new-session/composer.test.ts +++ b/ui/src/pages/new-session/composer.test.ts @@ -627,20 +627,24 @@ describe("new-session composer attachment drops", () => { expect(switches).toHaveLength(0); }); - it("lets the draft pill replace page-level incognito", () => { + it("lets one draft pill replace page-level incognito", () => { const onVisibilityChange = vi.fn(); const { composer } = renderComposer({ draftAvailable: true, - visibility: "incognito", + visibility: "draft", onVisibilityChange, }); const draftPill = composer.querySelector('[role="switch"]'); + const visibleDraftButtons = Array.from( + composer.querySelectorAll(".agent-chat__composer-footer button"), + ).filter((button) => button.textContent?.trim() === "Draft"); expect(draftPill?.textContent).toContain("Draft"); - expect(draftPill?.getAttribute("aria-checked")).toBe("false"); + expect(draftPill?.getAttribute("aria-checked")).toBe("true"); + expect(visibleDraftButtons).toEqual([draftPill]); draftPill?.click(); - expect(onVisibilityChange).toHaveBeenCalledWith("draft"); + expect(onVisibilityChange).toHaveBeenCalledWith("normal"); }); it("adds a dropped file through the shared attachment handling", async () => {