# Session Status Indicators - Design Date: 2026-05-30 Status: Approved (3-distinct-states) ## Problem Sidebar session indicator is an animated green dot driven purely by timestamp (isActive: diffInMinutes < 10 in sidebar/utils/utils.ts). It lights up for any session touched in the last 10 min regardless of whether an agent is running. The real processing state (processingSessions Set, event-driven) is only shown in the chat-area status bar, never in the sidebar. ## Three States - Processing: processingSessions.has(session.id) -> amber dot, animate-ping halo + solid core. Title "Agent running". - Recently active: sessionView.isActive && !isProcessing -> static sky-blue dot. Title "Recently active". - Idle: neither -> no indicator. ## Data flow (new threading, parallel to currentTime) AppContent -> useProjectsState({processingSessions}) -> sidebarSharedProps -> Sidebar (SidebarProps) -> projectListProps -> SidebarProjectList -> SidebarProjectItem -> SidebarProjectSessions -> SidebarSessionItem. processingSessions optional in leaf types -> graceful degrade. ## Files 1. app/AppContent.tsx - pass processingSessions into useProjectsState 2. hooks/useProjectsState.ts - accept + sidebarSharedProps + deps 3. sidebar/types/types.ts - SidebarProps gains processingSessions 4. sidebar/view/Sidebar.tsx - destructure + projectListProps 5. sidebar/view/subcomponents/SidebarProjectList.tsx - type + passthrough 6. sidebar/view/subcomponents/SidebarProjectItem.tsx - type + passthrough 7. sidebar/view/subcomponents/SidebarProjectSessions.tsx - type + passthrough 8. sidebar/view/subcomponents/SidebarSessionItem.tsx - 3-state indicator ## Risk: low, additive prop threading + presentational swap. Feature branch, no deploy until reviewed.