From aeab8e7faf3e1f74acf07aaabaee971385efbafc Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 11 Jul 2026 03:02:02 -0700 Subject: [PATCH] fix(ui): hide group submenu separator when New group is the only entry (#104370) --- ui/src/components/session-menu.test.ts | 27 ++++++++++++++++++++++++++ ui/src/components/session-menu.ts | 4 +++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ui/src/components/session-menu.test.ts b/ui/src/components/session-menu.test.ts index dd90d7dc18e6..e0803a4069c5 100644 --- a/ui/src/components/session-menu.test.ts +++ b/ui/src/components/session-menu.test.ts @@ -174,6 +174,33 @@ describe("session menu", () => { expect(menuItemLabels(menu)).not.toContain("Remove from group"); }); + it("omits the submenu separator when New group is the only entry", async () => { + const menu = await mountMenu({ groups: [] }); + + menuItem(menu, "Move to group").click(); + await menu.updateComplete; + + const submenu = menu.querySelector(".session-menu__submenu"); + if (!submenu) { + throw new Error("Expected group submenu"); + } + expect(menuItemLabels(submenu)).toEqual(["New group…"]); + expect(submenu.querySelector('[role="separator"]')).toBeNull(); + }); + + it("keeps the submenu separator when groups exist", async () => { + const menu = await mountMenu({ groups: ["Research"] }); + + menuItem(menu, "Move to group").click(); + await menu.updateComplete; + + const submenu = menu.querySelector(".session-menu__submenu"); + if (!submenu) { + throw new Error("Expected group submenu"); + } + expect(submenu.querySelector('[role="separator"]')).not.toBeNull(); + }); + it("numbers group submenu entries and dispatches them from digit keys", async () => { const onAction = vi.fn<(action: SessionMenuAction) => void>(); const menu = await mountMenu({ diff --git a/ui/src/components/session-menu.ts b/ui/src/components/session-menu.ts index 1dad8bba6c15..bc11f92fe461 100644 --- a/ui/src/components/session-menu.ts +++ b/ui/src/components/session-menu.ts @@ -268,7 +268,9 @@ class SessionMenu extends OpenClawLightDomElement { category: null, }) : nothing} - + ${this.groups.length > 0 || session.category + ? html`` + : nothing} ${entry(t("sessionsView.newGroup"), false, { kind: "new-group" })} `;