Add project archiving to the sidebar so users can move projects out of the main list while keeping them accessible.
SidebarHeader
SidebarContent (scrollable, flex-1)
└─ SidebarGroup — active projects
</SidebarContent>
<div class="shrink-0"> — archived section (pinned at bottom, non-scrolling)
SidebarSeparator
Collapsible "Archived (N)"
└─ archived projects with their threads
</div>
<SidebarSeparator />
<SidebarFooter> — "+ Add project" button
Feature: Archive Projects
Add project archiving to the sidebar so users can move projects out of the main list while keeping them accessible.
Context Menu
Sidebar Layout
SidebarContentas they do todaySidebarContent, positioned between it and theSidebarFooter. This keeps the section pinned at the bottom of the sidebar, not scrolling with the active project listSidebarSeparatorvisually divides active projects from the archived sectionCollapsiblewith a chevron, anArchiveIcon, and a count label — all in muted/subdued styling (text-muted-foreground/60,text-muted-foreground/40)Structure
State Management
archived: booleanto theProjecttypesetProjectArchived(projectId, archived)pure function and store actionexpandedProjectCwdsarray (addarchivedProjectCwdsto the persisted shape)archivedfrom the persisted set or from the existing in-memory project stateFiles Changed
apps/web/src/types.tsarchived: booleantoProjectinterfaceapps/web/src/store.tspersistedArchivedProjectCwdsset, updatereadPersistedState()/persistState(), updatemapProjectsFromReadModel(), addsetProjectArchived()pure function and store actionapps/web/src/store.test.tsarchived: falseto test fixture project objectapps/web/src/components/Sidebar.tsxSidebarContentwith muted styling