From 63d37eecdfe424b030a987b388ad35e32ea3e021 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Wed, 22 Jul 2026 16:34:25 +0300 Subject: [PATCH] fix: map PR summaries to directory branch keys Preserves a stable lookup key for PR status summaries Displays PR indicators using directory and branch labels Skips unmatched summary entries safely --- .../src/components/session/SessionSidebar.tsx | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/ui/src/components/session/SessionSidebar.tsx b/packages/ui/src/components/session/SessionSidebar.tsx index 1104d4ad..f3f7a48f 100644 --- a/packages/ui/src/components/session/SessionSidebar.tsx +++ b/packages/ui/src/components/session/SessionSidebar.tsx @@ -1324,9 +1324,15 @@ const SessionSidebarComponent: React.FC = ({ })); }, [sectionsForRender, showArchivedSessions]); - const prLookupKeys = React.useMemo(() => { - if (!isVisible) return EMPTY_STRING_ARRAY; + const prLookup = React.useMemo(() => { + if (!isVisible) { + return { + keys: EMPTY_STRING_ARRAY, + displayKeyByLookupKey: new Map(), + }; + } const keys = new Set(); + const displayKeyByLookupKey = new Map(); sectionsForSidebarRender.forEach((section) => { section.groups.forEach((group) => { const directory = normalizePath(group.directory ?? null); @@ -1334,13 +1340,15 @@ const SessionSidebarComponent: React.FC = ({ if (!directory || !branch) { return; } - keys.add(getGitHubPrStatusKey(directory, branch)); + const lookupKey = getGitHubPrStatusKey(directory, branch); + keys.add(lookupKey); + displayKeyByLookupKey.set(lookupKey, `${directory}::${branch}`); }); }); - return [...keys]; + return { keys: [...keys], displayKeyByLookupKey }; }, [gitBranches, isVisible, sectionsForSidebarRender]); - const prVisualSummaryMap = usePrVisualSummaryByKeys(prLookupKeys); + const prVisualSummaryMap = usePrVisualSummaryByKeys(prLookup.keys); React.useEffect(() => { if (!isVisible || !githubAuthChecked || !githubAuthStatus?.connected || !github) { @@ -1505,7 +1513,11 @@ const SessionSidebarComponent: React.FC = ({ const prVisualStateByDirectoryBranch = React.useMemo(() => { const result = new Map(); for (const [key, summary] of prVisualSummaryMap) { - result.set(key, { + const displayKey = prLookup.displayKeyByLookupKey.get(key); + if (!displayKey) { + continue; + } + result.set(displayKey, { visualState: summary.visualState as PrVisualState, number: summary.number, url: summary.url, @@ -1521,7 +1533,7 @@ const SessionSidebarComponent: React.FC = ({ }); } return result; - }, [prVisualSummaryMap]); + }, [prLookup.displayKeyByLookupKey, prVisualSummaryMap]); const renderGroupSessions = React.useCallback( (