diff --git a/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.test.mjs b/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.test.mjs index b2ea2f89c..e24ccaba9 100644 --- a/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.test.mjs +++ b/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.test.mjs @@ -18,7 +18,7 @@ function buildChannel(overrides) { memberCount: overrides.memberPubkeys?.length ?? 0, memberPubkeys: overrides.memberPubkeys ?? [], lastMessageAt: null, - archivedAt: null, + archivedAt: overrides.archivedAt ?? null, participants: [], participantPubkeys: [], isMember: overrides.isMember ?? false, @@ -103,6 +103,23 @@ test("applies no creator/membership filter — every matching name is included r ]); }); +test("excludes an archived channel even when its name matches the prefix", () => { + const channels = [ + buildChannel({ + id: "1", + name: "loganj-ws-done", + archivedAt: "2026-01-01T00:00:00Z", + }), + buildChannel({ id: "2", name: "loganj-ws-active" }), + ]; + + const result = filterWorkstreamChannels(channels); + assert.deepEqual( + result.map((c) => c.id), + ["2"], + ); +}); + test("returns an empty array when nothing matches", () => { const channels = [ buildChannel({ id: "1", name: "general" }), diff --git a/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.ts b/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.ts index f083a7319..11f3dd0da 100644 --- a/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.ts +++ b/desktop/src/features/workstream-board/lib/discoverWorkstreamChannels.ts @@ -2,15 +2,18 @@ import type { Channel } from "@/shared/api/types"; /** * Channels whose name starts with this prefix are discovered as workstream - * board entries. There is no creator/ownership filter — any visible channel - * matching the prefix is included, regardless of who created or joined it. + * board entries. There is no creator/ownership filter — any visible, + * non-archived channel matching the prefix is included, regardless of who + * created or joined it. */ export const WORKSTREAM_CHANNEL_PREFIX = "loganj-ws-"; export function filterWorkstreamChannels( channels: readonly Channel[], ): Channel[] { - return channels.filter((channel) => - channel.name.startsWith(WORKSTREAM_CHANNEL_PREFIX), + return channels.filter( + (channel) => + channel.name.startsWith(WORKSTREAM_CHANNEL_PREFIX) && + channel.archivedAt === null, ); }