perf(ui): narrow session switch fanout

Keep sidebar rows independent from the active sync directory by moving export history loading behind an explicit-directory command.

Make active-project selection preserve project topology and remove activeProjectId from mounted group render props. Reuse a per-session-array ID index so subscription snapshots do not repeatedly scan session lists.
This commit is contained in:
c_w_xiaohei
2026-08-26 00:44:14 +08:00
parent 701173e399
commit fa1503a038
9 changed files with 74 additions and 39 deletions
@@ -113,7 +113,6 @@ const createProps = (): SessionGroupSectionProps => ({
resetGroupSessionLimit: () => undefined,
mobileVariant: false,
alwaysShowActions: false,
activeProjectId: 'project',
setActiveProjectIdOnly: () => undefined,
setActiveMainTab: () => undefined,
setSessionSwitcherOpen: () => undefined,
@@ -232,7 +232,6 @@ const areGroupPropsEqual = (prev: SessionGroupSectionProps, next: SessionGroupSe
&& prev.resetGroupSessionLimit === next.resetGroupSessionLimit
&& prev.mobileVariant === next.mobileVariant
&& prev.alwaysShowActions === next.alwaysShowActions
&& prev.activeProjectId === next.activeProjectId
&& prev.setActiveProjectIdOnly === next.setActiveProjectIdOnly
&& prev.setSessionSwitcherOpen === next.setSessionSwitcherOpen
&& prev.openNewSessionDraft === next.openNewSessionDraft
@@ -58,7 +58,6 @@ type SessionProjectScrollerGroupProps = Pick<SessionGroupSectionProps,
| 'startFolderRename'
| 'setCopiedSessionId'
> & {
activeProjectId: string | null;
pinnedSessionIds: Set<string>;
sessionOrderIndex: Map<string, number>;
};