{S.chat.noSessions}
) : ( renderRows(shownActive, withAgentHint) )} {/* Load/reveal more (kept adjacent to the active list it extends, above the folders) */} {hasMore && ( )} {/* Folders (collapsed by default): subagent first — spawned from the conversations at hand — then scheduled background runs, then archived (archived wins over the origin folders). */} {folders} > ); }; /** Reveal-next-page-of-groups row (render cap only — data loading is untouched). */ const moreGroupsRow = (total: number) => ( ); const navItems: Array<{ to: string; label: string; icon: string }> = [ { to: "/agents", label: S.nav.agents, icon: NAV_ICONS.agents }, { to: "/skills", label: S.nav.skills, icon: NAV_ICONS.skills }, { to: "/models", label: S.nav.models, icon: NAV_ICONS.models }, { to: "/usage", label: S.nav.usage, icon: NAV_ICONS.usage }, { to: "/traces", label: S.nav.traces, icon: NAV_ICONS.traces }, { to: "/benchmark", label: S.nav.benchmark, icon: NAV_ICONS.benchmark }, ]; const themeOptions: ReadonlyArray<{ value: ThemeMode; label: string }> = [ { value: "light", label: S.settings.themeLight }, { value: "dark", label: S.settings.themeDark }, { value: "system", label: S.settings.followSystem }, ]; const langOptions: ReadonlyArray<{ value: LangPref; label: string }> = [ { value: "en", label: S.settings.langEn }, { value: "zh", label: S.settings.langZh }, { value: "system", label: S.settings.followSystem }, ]; const fontOptions: ReadonlyArray<{ value: FontScale; label: string }> = [ { value: "sm", label: S.settings.fontSmall }, { value: "md", label: S.settings.fontMedium }, { value: "lg", label: S.settings.fontLarge }, ]; const currencyOptions: ReadonlyArray<{ value: Currency; label: string }> = [ { value: "USD", label: S.models.currencyUsd }, { value: "CNY", label: S.models.currencyCny }, ]; return ({S.chat.noSessions}
) : ( orderedWorkspaceGroups.slice(0, groupCap).map((group) => { const parts = partitionSessions(group.sessions); const collapsed = collapsedGroups.has(group.key); const pinned = pinnedGroups.has(group.key); /** This group's exact server share (per-Workspace fold) and its per-category fetch fan-out. */ const counts = workspaceGroupCounts.get(group.key); const contributingAgents = [...new Set(group.sessions.map((s) => s.agentId))]; const agentsFor = (category: SessionCategory) => [ ...new Set([...(counts?.agents[category] ?? []), ...contributingAgents]), ]; return ({deletingSession ? S.chat.deleteSessionConfirm(deletingSession.title ?? S.chat.defaultSessionTitle) : ""}
{label}
{children}