Skip to content

Commit fe9ea82

Browse files
authored
Make file tree collapse state per project (#205)
- Track Files section expansion in a project-scoped set - Keep file tree toggles independent between projects
1 parent 45b2f4f commit fe9ea82

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

apps/web/src/components/Sidebar.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,9 @@ export default function Sidebar() {
398398
const [expandedThreadListsByProject, setExpandedThreadListsByProject] = useState<
399399
ReadonlySet<ProjectId>
400400
>(() => new Set());
401-
const [filesExpanded, setFilesExpanded] = useState(true);
401+
const [filesCollapsedByProject, setFilesCollapsedByProject] = useState<
402+
ReadonlySet<ProjectId>
403+
>(() => new Set());
402404
const dragInProgressRef = useRef(false);
403405
const suppressProjectClickAfterDragRef = useRef(false);
404406
const [desktopUpdateState, setDesktopUpdateState] = useState<DesktopUpdateState | null>(null);
@@ -1480,18 +1482,28 @@ export default function Sidebar() {
14801482
<button
14811483
type="button"
14821484
className="mb-1.5 flex w-full items-center gap-1.5 px-2 text-[10px] uppercase tracking-[0.14em] text-muted-foreground/58 hover:text-muted-foreground/80"
1483-
onClick={() => setFilesExpanded((prev) => !prev)}
1485+
onClick={() =>
1486+
setFilesCollapsedByProject((current) => {
1487+
const next = new Set(current);
1488+
if (next.has(project.id)) {
1489+
next.delete(project.id);
1490+
} else {
1491+
next.add(project.id);
1492+
}
1493+
return next;
1494+
})
1495+
}
14841496
>
14851497
<ChevronRightIcon
14861498
className={cn(
14871499
"size-3 shrink-0 transition-transform",
1488-
filesExpanded && "rotate-90",
1500+
!filesCollapsedByProject.has(project.id) && "rotate-90",
14891501
)}
14901502
/>
14911503
<FolderIcon className="size-3 shrink-0" />
14921504
<span>Files</span>
14931505
</button>
1494-
{filesExpanded && (
1506+
{!filesCollapsedByProject.has(project.id) && (
14951507
<WorkspaceFileTree cwd={activeWorkspaceCwd} resolvedTheme={resolvedTheme} />
14961508
)}
14971509
</div>

0 commit comments

Comments
 (0)