From 2dbb967af351068467ed9dddc9a9337824588028 Mon Sep 17 00:00:00 2001 From: David Hu Date: Sun, 23 Aug 2026 12:53:51 -0700 Subject: [PATCH] fix(clients): sort project menus alphabetically --- apps/mobile/src/features/home/HomeRouteScreen.tsx | 10 ++++++---- .../src/features/threads/ThreadNavigationSidebar.tsx | 10 ++++++---- apps/web/src/components/Sidebar.tsx | 7 ++++++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/apps/mobile/src/features/home/HomeRouteScreen.tsx b/apps/mobile/src/features/home/HomeRouteScreen.tsx index 8061b1d1e85b..508ac8141f2a 100644 --- a/apps/mobile/src/features/home/HomeRouteScreen.tsx +++ b/apps/mobile/src/features/home/HomeRouteScreen.tsx @@ -85,10 +85,12 @@ export function HomeRouteScreen() { projects, environmentId: selectedEnvironmentId, projectGroupingMode: listOptions.projectGroupingMode, - }).map((scope) => ({ - key: scope.key, - label: scope.title, - })), + }) + .map((scope) => ({ + key: scope.key, + label: scope.title, + })) + .toSorted((left, right) => left.label.localeCompare(right.label)), [listOptions.projectGroupingMode, projects, selectedEnvironmentId], ); useEffect(() => { diff --git a/apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx b/apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx index 2e8186fa8e25..2b7164e64560 100644 --- a/apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx +++ b/apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx @@ -281,10 +281,12 @@ function ThreadNavigationSidebarPane( ); const projectFilterOptions = useMemo( () => - projectScopes.map((scope) => ({ - key: scope.key, - label: scope.title, - })), + projectScopes + .map((scope) => ({ + key: scope.key, + label: scope.title, + })) + .toSorted((left, right) => left.label.localeCompare(right.label)), [projectScopes], ); const projectTitleByProjectKey = useMemo( diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index a88bc9ce4bb7..9c6b6ac76791 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -1864,6 +1864,11 @@ export default function Sidebar() { () => sortLogicalProjectsForSidebar(unsortedProjectGroups, threads, sidebarProjectSortOrder), [sidebarProjectSortOrder, threads, unsortedProjectGroups], ); + const projectScopeMenuGroups = useMemo( + () => + projectGroups.toSorted((left, right) => left.displayName.localeCompare(right.displayName)), + [projectGroups], + ); const serverConfigs = useAtomValue(environmentServerConfigsAtom); // Threads on non-primary environments (T3 Connect, hosted) resolve their // provider entry from their own environment's config: default instance ids @@ -3513,7 +3518,7 @@ export default function Sidebar() { All projects - {projectGroups.map((project) => { + {projectScopeMenuGroups.map((project) => { const scopeKey = project.projectKey; return (