Skip to content

Commit 9103574

Browse files
committed
Make sidebar worktrees opt-in and drop the inverse expansion set
With the section hidden until the user enables it in Settings → Worktrees, expanded-by-default is the right behavior for those who opted in. That removes the need for expandedWorktreeSections — the inverse-polarity twin of collapsedSections — so the section now uses the shared collapsedSections/toggleSection mechanism like every other sidebar section. Generated-By: PostHog Code Task-Id: 24032eac-82cc-4c5f-a7e9-30ed9278a6e1
1 parent e18a42b commit 9103574

3 files changed

Lines changed: 7 additions & 32 deletions

File tree

packages/ui/src/features/settings/settingsStore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ interface SettingsStore {
232232

233233
// Sidebar
234234
// Shows a per-repo "Worktrees" dropdown of task-less worktrees a click can
235-
// start a task in.
235+
// start a task in. Opt-in: off by default to keep the sidebar uncluttered.
236236
showSidebarWorktrees: boolean;
237237
setShowSidebarWorktrees: (enabled: boolean) => void;
238238

@@ -454,7 +454,7 @@ export const useSettingsStore = create<SettingsStore>()(
454454
set({ conversationCollapseMode: mode }),
455455

456456
// Sidebar
457-
showSidebarWorktrees: true,
457+
showSidebarWorktrees: false,
458458
setShowSidebarWorktrees: (enabled) =>
459459
set({ showSidebarWorktrees: enabled }),
460460

packages/ui/src/features/sidebar/components/GroupWorktreesSection.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,15 @@ interface GroupWorktreesSectionProps {
1313
/**
1414
* Nested "Worktrees" dropdown at the bottom of a repo group listing the repo's
1515
* task-less worktrees. Clicking one starts a task in that worktree and opens
16-
* its chat + shell. Collapsed by default; renders nothing when the repo has no
17-
* adoptable worktrees.
16+
* its chat + shell. Renders nothing when the repo has no adoptable worktrees.
1817
*/
1918
export function GroupWorktreesSection({
2019
groupId,
2120
mainRepoPath,
2221
}: GroupWorktreesSectionProps) {
2322
const worktrees = useAdoptableWorktrees(mainRepoPath);
24-
const expandedWorktreeSections = useSidebarStore(
25-
(state) => state.expandedWorktreeSections,
26-
);
27-
const toggleWorktreeSection = useSidebarStore(
28-
(state) => state.toggleWorktreeSection,
29-
);
23+
const collapsedSections = useSidebarStore((state) => state.collapsedSections);
24+
const toggleSection = useSidebarStore((state) => state.toggleSection);
3025
const { startTask, startingBranches } =
3126
useStartTaskFromWorktree(mainRepoPath);
3227

@@ -39,8 +34,8 @@ export function GroupWorktreesSection({
3934
label={`Worktrees (${worktrees.length})`}
4035
icon={<TreeStructure size={14} className="text-gray-10" />}
4136
depth={1}
42-
isExpanded={expandedWorktreeSections.has(sectionId)}
43-
onToggle={() => toggleWorktreeSection(sectionId)}
37+
isExpanded={!collapsedSections.has(sectionId)}
38+
onToggle={() => toggleSection(sectionId)}
4439
tooltipContent="Worktrees without a task — click one to start a task there"
4540
>
4641
{worktrees.map((worktree) => {

packages/ui/src/features/sidebar/sidebarStore.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ interface SidebarStoreState {
1010
width: number;
1111
isResizing: boolean;
1212
collapsedSections: Set<string>;
13-
// Per-repo "Worktrees" subsections start collapsed, so unlike
14-
// collapsedSections this tracks the expanded exceptions.
15-
expandedWorktreeSections: Set<string>;
1613
folderOrder: string[];
1714
historyVisibleCount: number;
1815
organizeMode: "by-project" | "chronological";
@@ -33,7 +30,6 @@ interface SidebarStoreActions {
3330
setWidth: (width: number) => void;
3431
setIsResizing: (isResizing: boolean) => void;
3532
toggleSection: (sectionId: string) => void;
36-
toggleWorktreeSection: (sectionId: string) => void;
3733
reorderFolders: (fromIndex: number, toIndex: number) => void;
3834
setFolderOrder: (order: string[]) => void;
3935
syncFolderOrder: (folderIds: string[]) => void;
@@ -57,7 +53,6 @@ export const useSidebarStore = create<SidebarStore>()(
5753
width: 256,
5854
isResizing: false,
5955
collapsedSections: new Set<string>(),
60-
expandedWorktreeSections: new Set<string>(),
6156
folderOrder: [],
6257
historyVisibleCount: 25,
6358
organizeMode: "by-project",
@@ -83,16 +78,6 @@ export const useSidebarStore = create<SidebarStore>()(
8378
}
8479
return { collapsedSections: newCollapsedSections };
8580
}),
86-
toggleWorktreeSection: (sectionId) =>
87-
set((state) => {
88-
const next = new Set(state.expandedWorktreeSections);
89-
if (next.has(sectionId)) {
90-
next.delete(sectionId);
91-
} else {
92-
next.add(sectionId);
93-
}
94-
return { expandedWorktreeSections: next };
95-
}),
9681
reorderFolders: (fromIndex, toIndex) =>
9782
set((state) => {
9883
const newOrder = [...state.folderOrder];
@@ -141,7 +126,6 @@ export const useSidebarStore = create<SidebarStore>()(
141126
hasUserSetOpen: state.hasUserSetOpen,
142127
width: state.width,
143128
collapsedSections: Array.from(state.collapsedSections),
144-
expandedWorktreeSections: Array.from(state.expandedWorktreeSections),
145129
folderOrder: state.folderOrder,
146130
historyVisibleCount: state.historyVisibleCount,
147131
organizeMode: state.organizeMode,
@@ -157,7 +141,6 @@ export const useSidebarStore = create<SidebarStore>()(
157141
hasUserSetOpen?: boolean;
158142
width?: number;
159143
collapsedSections?: string[];
160-
expandedWorktreeSections?: string[];
161144
folderOrder?: string[];
162145
historyVisibleCount?: number;
163146
organizeMode?: SidebarStoreState["organizeMode"];
@@ -177,9 +160,6 @@ export const useSidebarStore = create<SidebarStore>()(
177160
persistedState.width ?? current.width,
178161
),
179162
collapsedSections: new Set(persistedState.collapsedSections ?? []),
180-
expandedWorktreeSections: new Set(
181-
persistedState.expandedWorktreeSections ?? [],
182-
),
183163
folderOrder: persistedState.folderOrder ?? [],
184164
historyVisibleCount:
185165
persistedState.historyVisibleCount ?? current.historyVisibleCount,

0 commit comments

Comments
 (0)