From 7ec5ebbb9c86894711e20507ef41fca46f8ee0a8 Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 25 Mar 2026 11:46:48 -0700 Subject: [PATCH] fix(desktop): allow adding agents in open channels (#179) --- .../features/channels/ui/ChannelMembersBar.tsx | 4 +++- desktop/tests/e2e/channels.spec.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/desktop/src/features/channels/ui/ChannelMembersBar.tsx b/desktop/src/features/channels/ui/ChannelMembersBar.tsx index e9fedc033..9d7a8b168 100644 --- a/desktop/src/features/channels/ui/ChannelMembersBar.tsx +++ b/desktop/src/features/channels/ui/ChannelMembersBar.tsx @@ -75,10 +75,12 @@ export function ChannelMembersBar({ members.find( (member) => normalizePubkey(member.pubkey) === normalizedCurrentPubkey, ) ?? null; + const canManageMembers = + selfMember?.role === "owner" || selfMember?.role === "admin"; const canAddAgents = channel.channelType !== "dm" && channel.archivedAt === null && - (selfMember?.role === "owner" || selfMember?.role === "admin"); + (channel.visibility === "open" || canManageMembers); const managedAgentPubkeys = React.useMemo( () => new Set(managedAgents.map((agent) => normalizePubkey(agent.pubkey))), [managedAgents], diff --git a/desktop/tests/e2e/channels.spec.ts b/desktop/tests/e2e/channels.spec.ts index 2c1866f02..4a6228bf4 100644 --- a/desktop/tests/e2e/channels.spec.ts +++ b/desktop/tests/e2e/channels.spec.ts @@ -378,6 +378,21 @@ test("manage channel can invite and remove members", async ({ page }) => { ).toHaveCount(0); }); +test("open-channel members can add agents from the header", async ({ + page, +}) => { + await page.goto("/"); + + await page.getByTestId("channel-random").click(); + await expect(page.getByTestId("chat-title")).toHaveText("random"); + + const addAgentTrigger = page.getByTestId("channel-add-bot-trigger"); + await expect(addAgentTrigger).toBeEnabled(); + + await addAgentTrigger.click(); + await expect(page.getByRole("heading", { name: "Add agents" })).toBeVisible(); +}); + test("open channel management supports join and leave", async ({ page }) => { await page.goto("/");