perf: reduce startup request fanout

Avoid repeated sidebar session and worktree refreshes
Limit concurrent GitHub PR status checks
Reuse cached worktree root resolution
This commit is contained in:
Bohdan Triapitsyn
2026-05-25 11:58:59 +03:00
parent 68f00e4b7b
commit f8beffce32
7 changed files with 64 additions and 98 deletions
@@ -360,6 +360,22 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
syncSessionsSnapshotRef.current = liveSessions;
}, [syncSessionStructureSignature, liveSessions]);
const projectWorktreeDiscoveryKey = React.useMemo(
() => projects
.map((project) => `${project.id}:${normalizePath(project.path) ?? ''}`)
.join('|'),
[projects],
);
const initialGlobalSessionsRefreshStartedRef = React.useRef(false);
React.useEffect(() => {
if (initialGlobalSessionsRefreshStartedRef.current) {
return;
}
initialGlobalSessionsRefreshStartedRef.current = true;
void refreshGlobalSessions(syncSessionsSnapshotRef.current);
}, []);
React.useEffect(() => {
let cancelled = false;
@@ -397,13 +413,12 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
});
};
void refreshGlobalSessions(syncSessionsSnapshotRef.current);
void discoverWorktrees();
return () => {
cancelled = true;
};
}, [currentDirectory, syncSessionStructureSignature, projects]);
}, [projectWorktreeDiscoveryKey]);
React.useEffect(() => {
let refreshTimeout: ReturnType<typeof setTimeout> | null = null;
@@ -1113,7 +1128,6 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
});
void refreshPrStatusTargets([...uniqueTargets.values()], {
force: true,
silent: true,
markInitialResolved: true,
});