From 6bd3fff52844c2706d89372f4dbfff8141665e99 Mon Sep 17 00:00:00 2001 From: jamesx0416 Date: Tue, 17 Mar 2026 16:11:24 +1100 Subject: [PATCH] sort sidebar threads by latest visible message time --- apps/web/src/components/Sidebar.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index d99d9a96d..0f8427f50 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -386,8 +386,9 @@ export default function Sidebar() { const latestThread = threads .filter((thread) => thread.projectId === projectId) .toSorted((a, b) => { - const byDate = new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); - if (byDate !== 0) return byDate; + const aTime = a.messages.at(-1)?.createdAt ?? a.createdAt; + const bTime = b.messages.at(-1)?.createdAt ?? b.createdAt; + if (aTime !== bTime) return bTime.localeCompare(aTime); return b.id.localeCompare(a.id); })[0]; if (!latestThread) return; @@ -1296,9 +1297,9 @@ export default function Sidebar() { const projectThreads = threads .filter((thread) => thread.projectId === project.id) .toSorted((a, b) => { - const byDate = - new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); - if (byDate !== 0) return byDate; + const aTime = a.messages.at(-1)?.createdAt ?? a.createdAt; + const bTime = b.messages.at(-1)?.createdAt ?? b.createdAt; + if (aTime !== bTime) return bTime.localeCompare(aTime); return b.id.localeCompare(a.id); }); const isThreadListExpanded = expandedThreadListsByProject.has(project.id);