diff --git a/apps/web/src/components/Sidebar.logic.test.ts b/apps/web/src/components/Sidebar.logic.test.ts index 3e2e8be2ce18d..88de6144a7ec9 100644 --- a/apps/web/src/components/Sidebar.logic.test.ts +++ b/apps/web/src/components/Sidebar.logic.test.ts @@ -636,7 +636,28 @@ describe("getFallbackThreadIdAfterDelete", () => { { snoozedUntil: "2099-01-01T00:00:00.000Z", snoozedAt: "2026-03-09T10:06:00.000Z" }, ], ["settled", { settledOverride: "settled", settledAt: "2026-03-09T10:06:00.000Z" }], - ] as const)("skips a %s thread parked on its shelf", (_state, parked) => { + [ + "side chat", + { + lineage: { + rootThreadId: ThreadId.make("thread-visible"), + parentThreadId: ThreadId.make("thread-visible"), + relationshipToParent: "fork", + sideChat: true, + }, + }, + ], + [ + "subagent", + { + lineage: { + rootThreadId: ThreadId.make("thread-visible"), + parentThreadId: ThreadId.make("thread-visible"), + relationshipToParent: "subagent", + }, + }, + ], + ] as const)("skips a %s thread the sidebar does not list", (_state, parked) => { const fallbackThreadId = getFallbackThreadIdAfterDelete({ threads: [ makeThread({ diff --git a/apps/web/src/components/Sidebar.logic.ts b/apps/web/src/components/Sidebar.logic.ts index c20789e2a9160..6b006352fabaa 100644 --- a/apps/web/src/components/Sidebar.logic.ts +++ b/apps/web/src/components/Sidebar.logic.ts @@ -1211,7 +1211,10 @@ export function resolveThreadStatusPill(input: { } export function getFallbackThreadIdAfterDelete< - T extends Pick & + T extends Pick< + Thread, + "id" | "projectId" | "createdAt" | "updatedAt" | "settledOverride" | "lineage" + > & ThreadSortInput & ThreadSnoozeShell, >(input: { @@ -1235,7 +1238,8 @@ export function getFallbackThreadIdAfterDelete< thread.id !== deletedThreadId && !deletedThreadIds?.has(thread.id) && thread.settledOverride !== "settled" && - !effectiveSnoozed(thread, { now }), + !effectiveSnoozed(thread, { now }) && + !isSidebarHiddenThread(thread), ), sortOrder, )[0]?.id ?? null