@@ -59,16 +59,14 @@ struct WorktrunkSidebarView: View {
5959
6060 Spacer ( minLength: 0 )
6161
62- if !sidebarTabsEnabled {
63- Button {
64- toggleSidebarListMode ( )
65- } label: {
66- Image ( systemName: store. sidebarListMode == . flatWorktrees ? " list.bullet.indent " : " list.bullet " )
67- . foregroundStyle ( . secondary)
68- }
69- . buttonStyle ( . plain)
70- . help ( store. sidebarListMode == . flatWorktrees ? " Switch to nested list " : " Switch to flat list " )
62+ Button {
63+ toggleSidebarListMode ( )
64+ } label: {
65+ Image ( systemName: store. sidebarListMode == . flatWorktrees ? " list.bullet.indent " : " list.bullet " )
66+ . foregroundStyle ( . secondary)
7167 }
68+ . buttonStyle ( . plain)
69+ . help ( store. sidebarListMode == . flatWorktrees ? " Switch to nested list " : " Switch to flat list " )
7270
7371 Menu {
7472 ForEach ( WorktreeSortOrder . allCases, id: \. self) { order in
@@ -187,15 +185,7 @@ struct WorktrunkSidebarView: View {
187185 . onChange ( of: store. sidebarListMode) { _ in
188186 clearSelectionIfMainInFlatMode ( )
189187 }
190- . onChange ( of: sidebarTabsEnabled) { enabled in
191- if enabled {
192- forceFlatModeIfNeeded ( )
193- }
194- }
195188 . onAppear {
196- if sidebarTabsEnabled {
197- forceFlatModeIfNeeded ( )
198- }
199189 if store. sidebarListMode == . nestedByRepo, sidebarState. expandedRepoIDs. isEmpty {
200190 sidebarState. applyExpandedRepoIDs (
201191 Set ( store. sidebarSnapshot. repositories. map ( \. id) ) ,
@@ -297,7 +287,7 @@ struct WorktrunkSidebarView: View {
297287 if store. sidebarListMode == . flatWorktrees {
298288 flatWorktreeList ( snapshot: snapshot, excludingWorktreePaths: topWorktreePaths)
299289 } else {
300- nestedRepoList ( snapshot: snapshot)
290+ nestedRepoList ( snapshot: snapshot, excludingWorktreePaths : topWorktreePaths )
301291 }
302292 }
303293 . background ( SidebarListScrollFinder ( preserver: sidebarScrollPreserver) )
@@ -321,16 +311,6 @@ struct WorktrunkSidebarView: View {
321311 return nil
322312 }
323313
324- private func forceFlatModeIfNeeded( ) {
325- if store. sidebarListMode != . flatWorktrees {
326- store. sidebarListMode = . flatWorktrees
327- }
328- if store. worktreeSortOrder != . recentActivity {
329- store. worktreeSortOrder = . recentActivity
330- }
331- clearSelectionIfMainInFlatMode ( )
332- }
333-
334314 @ViewBuilder
335315 private func sidebarTabsList(
336316 snapshot: WorktrunkStore . SidebarSnapshot ,
@@ -419,7 +399,10 @@ struct WorktrunkSidebarView: View {
419399 }
420400
421401 @ViewBuilder
422- private func nestedRepoList( snapshot: WorktrunkStore . SidebarSnapshot ) -> some View {
402+ private func nestedRepoList(
403+ snapshot: WorktrunkStore . SidebarSnapshot ,
404+ excludingWorktreePaths: Set < String >
405+ ) -> some View {
423406 ForEach ( snapshot. repositories) { repo in
424407 DisclosureGroup (
425408 isExpanded: Binding (
@@ -449,7 +432,9 @@ struct WorktrunkSidebarView: View {
449432 }
450433 . help ( " Create worktree " )
451434
452- let worktrees = snapshot. worktreesByRepositoryID [ repo. id] ?? [ ]
435+ let worktrees = ( snapshot. worktreesByRepositoryID [ repo. id] ?? [ ] ) . filter { wt in
436+ !excludingWorktreePaths. contains ( standardizedPath ( wt. path) )
437+ }
453438 if worktrees. isEmpty {
454439 Text ( " No worktrees " )
455440 . foregroundStyle ( . secondary)
0 commit comments