Skip to content

refactor(sidebar): group worktree-list files by domain - #14486

Merged
AmethystLiang merged 9 commits into
mainfrom
reorg-worktree-list-domains
Aug 15, 2026
Merged

AmethystLiang merged 9 commits into
mainfrom
reorg-worktree-list-domains

Conversation

@AmethystLiang

@AmethystLiang AmethystLiang commented Aug 14, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 31 +80 −81 −1
Prod 117 +2651 −2396 +255

ELI5

Neil already split WorktreeList into a folder of files. This PR just sorts that folder into smaller rooms (drag, headers, rows, and so on) and throws away a few postage-stamp files that did not need to live alone. The sidebar still works the same way.

What Changed

Follow-up to #14465 / #14467. Layout-only; no drag, reveal, virtualizer, or selection behavior change.

  • Group the landed worktree-list/ extract into domain folders: drag/, headers/, reveal/, rows/, scroll/, viewport/.
  • Keep container-wired composition hooks at the module root (filters, sort, selection, section-rows, dialogs, empty state, use-reused-array-identity).
  • Drop redundant worktree-list- / use-worktree- prefixes once the folder provides context.
  • Fold tiny 4–13 line modules into their owners (visible-refresh listener, imported-card visibility, empty store slices, item-row type guards, visibility label, virtual-row DOM helpers, editable-target guard).
  • Move leftover sidebar-root files into the module (groups, host-filtering, virtual-rows, indentation, review-cache inputs, scroll-to-top / hard-scroll-up, folder-reveal, colocated tests).
  • Retarget imports across renderer, reliability gates, max-lines baseline (rename only), mobile comment, and source-reading tests. No barrels.

Why

The extract on main is a flat dump with long redundant names and several 4–13 line files. Related modules were left at sidebar/ instead of living with the list. This is the folder scheme from the earlier incomplete extract, applied to main's landed files.

Linked Issue

Follow-up to #14465 / #14467.

Visual Proof

N/A — file-layout reorg only. No UI, styling, or interaction change.

Testing

  • pnpm exec tsc --noEmit -p config/tsconfig.tc.web.json
  • pnpm exec oxlint on worktree-list/ + WorktreeList.tsx
  • node config/scripts/check-max-lines-ratchet.mjs
  • Vitest: worktree-list module tests + project-group-header-dom, worktree-keyboard-cycle, hover-reveal file list, WorktreeList.lineage-child-card, FolderWorkspaceWorktreesPanel, host-section-rows (293 tests passed)
  • Grep: no leftover sidebar/worktree-list-groups or flat worktree-list/use-worktree-* imports

Review

Layout-only rename/move. Existing eslint-disable max-lines on rows/groups.ts and rows/groups.test.ts was preserved (already grandfathered; baseline paths renamed). Cross-platform / SSH / folder-workspace comments kept intact.

Checklist

  • This PR is small and focused
  • I explained what changed and why (including ELI5)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@greptile-apps

greptile-apps Bot commented Aug 14, 2026 •

Copy link
Copy Markdown

Too many files changed for review (148 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@coderabbitai

coderabbitai Bot commented Aug 14, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The pull request reorganizes the sidebar worktree-list code into grouping, listing, rows, viewport, navigation, and drag modules. It adds grouping and row models, project-group handling, host-label utilities, virtual-row helpers, scroll detectors, reveal helpers, DOM utilities, and drop-indicator rendering. Existing consumers, tests, comments, max-line baselines, reliability-gate commands, and theme tokens now reference the reorganized modules and behavior.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 15.25% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Out of Scope Changes check ⚠️ Warning The PR is described as layout-only, but it also adds theme color tokens and changes EmptyState to use the Button component. Either remove the styling and component changes or document them as intentional scope and provide corresponding visual validation.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The description references follow-up issues #14465 and #14467.
Title check ✅ Passed The title clearly and concisely describes the primary change: reorganizing sidebar worktree-list files by domain.
Description check ✅ Passed The description covers the change, rationale, testing, visual proof, review considerations, and checklist, but the linked issue does not use the required Fixes format.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/renderer/src/components/sidebar/worktree-list/rows/indentation.ts (1)

2-25: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Shorten the layout rationale comments.

Keep only the layout invariant that the code does not show. Remove step-by-step explanation and prefer one line per comment.

As per coding guidelines, “Comments must be concise, non-obvious, and brief—prefer one line.”

Also applies to: 58-59, 79-80, 86-87, 100-101, 116-117, 142-143, 198-199, 214-215

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1301c67c-07f0-4823-9fd7-1d675b7d09ce

📥 Commits

Reviewing files that changed from the base of the PR and between 78ca45e and 715b46a.

📒 Files selected for processing (119)
  • config/max-lines-baseline.txt
  • config/reliability-gates.jsonc
  • mobile/src/worktree/workspace-pr-status-groups.ts
  • src/renderer/src/components/WorktreeJumpPalette.tsx
  • src/renderer/src/components/cmd-j/palette-filter-options.ts
  • src/renderer/src/components/cmd-j/palette-project-results.ts
  • src/renderer/src/components/hover-reveal-touch-action-visibility.test.ts
  • src/renderer/src/components/right-sidebar/AiVaultSessionVirtualList.tsx
  • src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.test.tsx
  • src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.tsx
  • src/renderer/src/components/right-sidebar/ai-vault-virtual-rows.ts
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.test.tsx
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.tsx
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-card.test.ts
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-real-card.test.tsx
  • src/renderer/src/components/sidebar/WorktreeList.tsx
  • src/renderer/src/components/sidebar/empty-project-placeholder-repos.ts
  • src/renderer/src/components/sidebar/host-section-rows.test.ts
  • src/renderer/src/components/sidebar/host-section-rows.ts
  • src/renderer/src/components/sidebar/imported-worktrees-card-candidates.ts
  • src/renderer/src/components/sidebar/new-external-worktrees-inbox-candidates.ts
  • src/renderer/src/components/sidebar/project-group-header-dom.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.ts
  • src/renderer/src/components/sidebar/project-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-header-drop.ts
  • src/renderer/src/components/sidebar/rendered-sidebar-worktree-order.ts
  • src/renderer/src/components/sidebar/worktree-card-presentation.tsx
  • src/renderer/src/components/sidebar/worktree-drag-units.ts
  • src/renderer/src/components/sidebar/worktree-header-section-boundaries.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.test.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/drop-commit-context.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-flush.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/row-state.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/status-target.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-document-drop.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-header-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-lineage-drop-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-native-autoscroll.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-native-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-autoscroll.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-window-events.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-runtime.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-session.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-row-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/headers/FolderPathStatusIndicator.tsx
  • src/renderer/src/components/sidebar/worktree-list/headers/HostSectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/headers/SectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/headers/event-guards.ts
  • src/renderer/src/components/sidebar/worktree-list/headers/project-group-header-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/headers/repo-header-project-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/imported-worktrees-card-visibility.ts
  • src/renderer/src/components/sidebar/worktree-list/option-dom.ts
  • src/renderer/src/components/sidebar/worktree-list/render-row-item-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/ancestors.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/folder-reveal.test.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/folder-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/mounted-row.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/pending-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/use-highlight.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/use-pending.ts
  • src/renderer/src/components/sidebar/worktree-list/reveal/use-requests.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/folder-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/groups.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/imported-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/indentation.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/indentation.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/item-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/notice-rows.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/render-row-lookup.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/renderable-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-context.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-dispatch.tsx
  • src/renderer/src/components/sidebar/worktree-list/scroll/hard-scroll-up.test.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/hard-scroll-up.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/scroll-adjustment.test.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/tuning.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/use-scroll-to-top.test.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/use-scroll-to-top.test.tsx
  • src/renderer/src/components/sidebar/worktree-list/scroll/use-scroll-to-top.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/use-suppression.ts
  • src/renderer/src/components/sidebar/worktree-list/scroll/visible-refresh.test.ts
  • src/renderer/src/components/sidebar/worktree-list/sidebar-editable-target.ts
  • src/renderer/src/components/sidebar/worktree-list/stable-empty-store-slices.ts
  • src/renderer/src/components/sidebar/worktree-list/use-agent-send-target-worktree.ts
  • src/renderer/src/components/sidebar/worktree-list/use-effective-collapsed-groups.ts
  • src/renderer/src/components/sidebar/worktree-list/use-sidebar-host-visible-scope.ts
  • src/renderer/src/components/sidebar/worktree-list/use-sidebar-section-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/use-sidebar-worktree-selection.ts
  • src/renderer/src/components/sidebar/worktree-list/use-sidebar-worktree-sort-order.ts
  • src/renderer/src/components/sidebar/worktree-list/use-status-mutations.ts
  • src/renderer/src/components/sidebar/worktree-list/use-visible-sidebar-worktrees.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/VirtualizedWorktreeViewport.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/active-descendant-option.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/host-filtering.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/host-filtering.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/review-cache-inputs.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/review-cache-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/sticky-headers.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-active-row.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-folder-path-statuses.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-group-toggle.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-keyboard.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-row-measurement.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-virtualizer.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-visible-review-refresh.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/viewport-props.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/virtual-row-dom-attributes.ts
  • src/renderer/src/components/sidebar/worktree-list/worktree-visibility-menu-label.ts
  • src/renderer/src/components/sidebar/worktree-list/worktree-visible-refresh-listener.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-reveal.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-row-preference.ts
💤 Files with no reviewable changes (7)
  • src/renderer/src/components/sidebar/worktree-list/sidebar-editable-target.ts
  • src/renderer/src/components/sidebar/worktree-list/worktree-visible-refresh-listener.ts
  • src/renderer/src/components/sidebar/worktree-list/imported-worktrees-card-visibility.ts
  • src/renderer/src/components/sidebar/worktree-list/worktree-visibility-menu-label.ts
  • src/renderer/src/components/sidebar/worktree-list/virtual-row-dom-attributes.ts
  • src/renderer/src/components/sidebar/worktree-list/stable-empty-store-slices.ts
  • src/renderer/src/components/sidebar/worktree-list/render-row-item-rows.ts

Follow-up to #14465 / #14467. Keep the landed extract and reorganize the
flat worktree-list dump into drag/, headers/, reveal/, rows/, scroll/,
and viewport/. Fold tiny modules into their owners, move leftover
sidebar-root files into the module, and retarget imports and source-path
tests. Layout-only; no behavior change.
Inlining virtual-row-dom-attributes left a second import from the same
module, which fails audit:code-quality:native --deny-warnings.
@AmethystLiang

Copy link
Copy Markdown
Contributor Author

@coderabbitai Fixing. Will be in the next commit

@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@AmethystLiang Thanks for the update. Please request another review after the next commit is available.

You are interacting with an AI system.

Shorten explanations to focus on the essential why, removing redundant
detail and improving readability without changing functionality.
@AmethystLiang
AmethystLiang force-pushed the reorg-worktree-list-domains branch from 715b46a to b91ad74 Compare August 14, 2026 22:59
@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1e133943-8578-4b15-8e68-3f56c63ee7b1

📥 Commits

Reviewing files that changed from the base of the PR and between b91ad74 and c4d382a.

📒 Files selected for processing (109)
  • config/max-lines-baseline.txt
  • src/renderer/src/components/WorktreeJumpPalette.tsx
  • src/renderer/src/components/cmd-j/palette-filter-options.ts
  • src/renderer/src/components/cmd-j/palette-project-results.ts
  • src/renderer/src/components/hover-reveal-touch-action-visibility.test.ts
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.test.tsx
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.tsx
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-card.test.ts
  • src/renderer/src/components/sidebar/WorktreeList.tsx
  • src/renderer/src/components/sidebar/empty-project-placeholder-repos.ts
  • src/renderer/src/components/sidebar/host-section-rows.test.ts
  • src/renderer/src/components/sidebar/host-section-rows.ts
  • src/renderer/src/components/sidebar/imported-worktrees-card-candidates.ts
  • src/renderer/src/components/sidebar/new-external-worktrees-inbox-candidates.ts
  • src/renderer/src/components/sidebar/project-group-header-dom.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.ts
  • src/renderer/src/components/sidebar/project-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-header-drop.ts
  • src/renderer/src/components/sidebar/rendered-sidebar-worktree-order.ts
  • src/renderer/src/components/sidebar/worktree-drag-units.ts
  • src/renderer/src/components/sidebar/worktree-header-section-boundaries.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.test.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/drop-commit-context.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-drop-commit-context.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-header-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-window-events.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-session.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-mutations.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-row-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/build-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/build-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-sections.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/host-labels.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/imported-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/project-group-sections.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/project-grouping.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/row-builders.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/row-types.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/section-order.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/worktree-group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/worktree-grouping.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/EmptyState.tsx
  • src/renderer/src/components/sidebar/worktree-list/listing/host-filtering.test.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/host-filtering.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/render-row.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/renderable-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/review-cache-inputs.test.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/review-cache-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-agent-send-target.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-collapsed-groups.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-external-worktree-cards.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-filters.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-folder-path-statuses.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-host-visible-scope.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-reused-array-identity.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-section-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-sort-order.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-visible-worktrees.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/active-descendant-option.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/folder-reveal.test.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/folder-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/mounted-row-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/pending-reveal-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/render-row-lookup.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/reveal-ancestors.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-active-row.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-keyboard.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-pending-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-reveal-highlight.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-reveal-requests.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-selection.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/FolderPathStatusIndicator.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/HostSectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/ProjectGroupDialogs.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/SectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/folder-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/header-event-guards.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/item-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/notice-rows.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/option-dom.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/project-group-header-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/repo-header-project-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/use-project-group-dialogs.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-dispatch.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/VirtualizedWorktreeViewport.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/drop-indicators.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/hard-scroll-up.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/hard-scroll-up.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/scroll-adjustment.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/sticky-headers.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-row-measurement.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-suppression.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.test.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-virtualizer.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-visible-review-refresh.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/viewport-props.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-row-context.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/visible-refresh.test.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-row-preference.ts
🚧 Files skipped from review as they are similar to previous changes (39)
  • src/renderer/src/components/sidebar/project-group-header-drop.ts
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-card.test.ts
  • src/renderer/src/components/WorktreeJumpPalette.tsx
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.test.ts
  • src/renderer/src/components/sidebar/project-header-drop.ts
  • src/renderer/src/components/sidebar/empty-project-placeholder-repos.ts
  • src/renderer/src/components/sidebar/imported-worktrees-card-candidates.ts
  • src/renderer/src/components/sidebar/host-section-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/folder-row.tsx
  • src/renderer/src/components/sidebar/WorktreeList.tsx
  • src/renderer/src/components/sidebar/rendered-sidebar-worktree-order.ts
  • src/renderer/src/components/sidebar/project-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-group-header-dom.test.ts
  • src/renderer/src/components/sidebar/worktree-drag-units.ts
  • src/renderer/src/components/cmd-j/palette-project-results.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.test.ts
  • config/max-lines-baseline.txt
  • src/renderer/src/components/sidebar/new-external-worktrees-inbox-candidates.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-header-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/sticky-headers.test.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-row-preference.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-row-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-dispatch.tsx
  • src/renderer/src/components/sidebar/host-section-rows.ts
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.test.tsx
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-window-events.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/viewport-props.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-drag.ts
  • src/renderer/src/components/cmd-j/palette-filter-options.ts
  • src/renderer/src/components/sidebar/worktree-header-section-boundaries.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/notice-rows.tsx
  • src/renderer/src/components/sidebar/worktree-list/drag/use-session.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.ts
  • src/renderer/src/components/hover-reveal-touch-action-visibility.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/item-row.tsx
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1e133943-8578-4b15-8e68-3f56c63ee7b1

📥 Commits

Reviewing files that changed from the base of the PR and between b91ad74 and c4d382a.

📒 Files selected for processing (109)
  • config/max-lines-baseline.txt
  • src/renderer/src/components/WorktreeJumpPalette.tsx
  • src/renderer/src/components/cmd-j/palette-filter-options.ts
  • src/renderer/src/components/cmd-j/palette-project-results.ts
  • src/renderer/src/components/hover-reveal-touch-action-visibility.test.ts
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.test.tsx
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.tsx
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-card.test.ts
  • src/renderer/src/components/sidebar/WorktreeList.tsx
  • src/renderer/src/components/sidebar/empty-project-placeholder-repos.ts
  • src/renderer/src/components/sidebar/host-section-rows.test.ts
  • src/renderer/src/components/sidebar/host-section-rows.ts
  • src/renderer/src/components/sidebar/imported-worktrees-card-candidates.ts
  • src/renderer/src/components/sidebar/new-external-worktrees-inbox-candidates.ts
  • src/renderer/src/components/sidebar/project-group-header-dom.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.ts
  • src/renderer/src/components/sidebar/project-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-header-drop.ts
  • src/renderer/src/components/sidebar/rendered-sidebar-worktree-order.ts
  • src/renderer/src/components/sidebar/worktree-drag-units.ts
  • src/renderer/src/components/sidebar/worktree-header-section-boundaries.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.test.ts
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/drop-commit-context.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-drop-commit-context.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-header-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-window-events.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-session.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-mutations.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-row-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/build-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/build-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-sections.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/host-labels.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/imported-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/project-group-sections.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/project-grouping.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/row-builders.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/row-types.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/section-order.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/worktree-group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/grouping/worktree-grouping.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/EmptyState.tsx
  • src/renderer/src/components/sidebar/worktree-list/listing/host-filtering.test.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/host-filtering.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/render-row.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/renderable-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/review-cache-inputs.test.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/review-cache-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-agent-send-target.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-collapsed-groups.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-external-worktree-cards.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-filters.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-folder-path-statuses.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-host-visible-scope.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-reused-array-identity.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-section-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-sort-order.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/use-visible-worktrees.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/active-descendant-option.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/folder-reveal.test.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/folder-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/mounted-row-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/pending-reveal-inputs.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/render-row-lookup.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/reveal-ancestors.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-active-row.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-keyboard.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-pending-reveal.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-reveal-highlight.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-reveal-requests.ts
  • src/renderer/src/components/sidebar/worktree-list/navigation/use-selection.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/FolderPathStatusIndicator.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/HostSectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/ProjectGroupDialogs.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/SectionHeader.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/folder-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/header-event-guards.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/item-row.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/notice-rows.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/option-dom.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/project-group-header-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/repo-header-project-actions.tsx
  • src/renderer/src/components/sidebar/worktree-list/rows/use-project-group-dialogs.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-dispatch.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/VirtualizedWorktreeViewport.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/drop-indicators.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/hard-scroll-up.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/hard-scroll-up.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/scroll-adjustment.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/sticky-headers.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-row-measurement.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-suppression.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.test.tsx
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-scroll-to-top.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-virtualizer.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/use-visible-review-refresh.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/viewport-props.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-row-context.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/visible-refresh.test.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-row-preference.ts
🚧 Files skipped from review as they are similar to previous changes (39)
  • src/renderer/src/components/sidebar/project-group-header-drop.ts
  • src/renderer/src/components/sidebar/WorktreeList.lineage-child-card.test.ts
  • src/renderer/src/components/WorktreeJumpPalette.tsx
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.test.ts
  • src/renderer/src/components/sidebar/project-header-drop.ts
  • src/renderer/src/components/sidebar/empty-project-placeholder-repos.ts
  • src/renderer/src/components/sidebar/imported-worktrees-card-candidates.ts
  • src/renderer/src/components/sidebar/host-section-rows.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/folder-row.tsx
  • src/renderer/src/components/sidebar/WorktreeList.tsx
  • src/renderer/src/components/sidebar/rendered-sidebar-worktree-order.ts
  • src/renderer/src/components/sidebar/project-header-drop.test.ts
  • src/renderer/src/components/sidebar/project-group-header-dom.test.ts
  • src/renderer/src/components/sidebar/worktree-drag-units.ts
  • src/renderer/src/components/cmd-j/palette-project-results.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.test.ts
  • src/renderer/src/components/sidebar/project-group-header-drop.test.ts
  • config/max-lines-baseline.txt
  • src/renderer/src/components/sidebar/new-external-worktrees-inbox-candidates.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-header-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/sticky-headers.test.ts
  • src/renderer/src/components/sidebar/worktree-sidebar-row-preference.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-status-row-drag.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/virtual-row-dispatch.tsx
  • src/renderer/src/components/sidebar/host-section-rows.ts
  • src/renderer/src/components/sidebar/SidebarGroupByToggle.test.tsx
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-window-events.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/pointer-commit.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/viewport-props.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/use-pointer-drag.ts
  • src/renderer/src/components/cmd-j/palette-filter-options.ts
  • src/renderer/src/components/sidebar/worktree-header-section-boundaries.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/notice-rows.tsx
  • src/renderer/src/components/sidebar/worktree-list/drag/use-session.ts
  • src/renderer/src/components/sidebar/worktree-list/drag/groups.ts
  • src/renderer/src/components/sidebar/worktree-list/viewport/virtual-rows.ts
  • src/renderer/src/components/hover-reveal-touch-action-visibility.test.ts
  • src/renderer/src/components/sidebar/worktree-list/rows/item-row.tsx
  • src/renderer/src/components/sidebar/worktree-keyboard-cycle.ts
🛑 Comments failed to post (2)
src/renderer/src/components/sidebar/worktree-list/listing/EmptyState.tsx (2)

5-11: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Wire the extracted component into WorktreeList.tsx.

The supplied graph context still shows SidebarWorktreeListEmptyState defined in src/renderer/src/components/sidebar/WorktreeList.tsx at Lines 5-36, while this file defines another copy. Remove the old local definition and import this component. Otherwise this new module can remain unused and the two implementations can diverge.


23-30: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the shared renderer Button primitive and style tokens.

This renderer UI adds a native <button> with a local class list, including an arbitrary text-[11px] size. Use the approved primitive from src/renderer/src/components/ui/ and tokens from src/renderer/src/assets/main.css for this action.

As per path instructions: src/renderer/src/**/*.{ts,tsx,css} must use tokens from src/renderer/src/assets/main.css and shadcn primitives from src/renderer/src/components/ui/.

Source: Path instructions

@AmethystLiang

Copy link
Copy Markdown
Contributor Author

Fixing:

Will be in the next commit.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@AmethystLiang Thanks for the update. Please request another review after the follow-up commit is available.

You are interacting with an AI system.

host-filtering.test.ts moved from viewport/ to listing/; keep the
runtime-routing.active-server-preference gate pointing at the real file.
Define theme-aware color tokens for workspace PR-state indicators (done, in-review, in-progress) to ensure consistent identity across theme switches. Update references to use the new tokens and refactor EmptyState button to use the Button component.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 65e2b972-58c4-4ce2-9eaa-64e547c638aa

📥 Commits

Reviewing files that changed from the base of the PR and between 4273ac7 and 4671f2c.

📒 Files selected for processing (3)
  • src/renderer/src/assets/main.css
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/EmptyState.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/renderer/src/components/sidebar/worktree-list/grouping/group-keys.ts
  • src/renderer/src/components/sidebar/worktree-list/listing/EmptyState.tsx

Comment thread src/renderer/src/assets/main.css Resolved
React Doctor fails static analysis when refs are written in render.
Commit reused array identity and the Smart live-signal latch after
paint, and return the attention map from the sort memo instead of
stashing it on a render-time ref.
@AmethystLiang
AmethystLiang merged commit 7aaa7c6 into main Aug 15, 2026
46 checks passed
AmethystLiang added a commit that referenced this pull request Aug 17, 2026
* refactor(sidebar): group worktree-list files by domain

Follow-up to #14465 / #14467. Keep the landed extract and reorganize the
flat worktree-list dump into drag/, headers/, reveal/, rows/, scroll/,
and viewport/. Fold tiny modules into their owners, move leftover
sidebar-root files into the module, and retarget imports and source-path
tests. Layout-only; no behavior change.

* fix(sidebar): merge duplicate virtual-rows imports

Inlining virtual-row-dom-attributes left a second import from the same
module, which fails audit:code-quality:native --deny-warnings.

* refactor(sidebar): condense indentation comments

Shorten explanations to focus on the essential why, removing redundant
detail and improving readability without changing functionality.

* refactor: organize worktree-list into lifecycle dest folders

* fix react doctor

* fix: update reliability-gates path after worktree-list reorg

host-filtering.test.ts moved from viewport/ to listing/; keep the
runtime-routing.active-server-preference gate pointing at the real file.

* Extract workspace status colors to design tokens

Define theme-aware color tokens for workspace PR-state indicators (done, in-review, in-progress) to ensure consistent identity across theme switches. Update references to use the new tokens and refactor EmptyState button to use the Button component.

* fix(sidebar): stop mutating refs during worktree-list render

React Doctor fails static analysis when refs are written in render.
Commit reused array identity and the Smart live-signal latch after
paint, and return the attention map from the sort memo instead of
stashing it on a render-time ref.
luisgonzaleznf added a commit to luisgonzaleznf/orca that referenced this pull request Aug 24, 2026
Ports the collections feature across three upstream refactors: the
shared/types barrel drop (stablyai#14447) — Collection type now lives in
shared/collection-types.ts; the worktree-list decomposition (stablyai#14486) —
sidebar integration re-woven into worktree-list/{drag,grouping,listing,
rows,viewport} modules; and the per-domain test split (stablyai#14728) —
web-preload collections coverage moved to its own domain test file.
Splits collection RPC methods out of repo.ts to respect max-lines.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SqQZ3Ssc7LJnAvacUkVhx
enrick-dev pushed a commit to enrick-dev/orca that referenced this pull request Oct 15, 2026
* refactor(sidebar): group worktree-list files by domain

Follow-up to stablyai#14465 / stablyai#14467. Keep the landed extract and reorganize the
flat worktree-list dump into drag/, headers/, reveal/, rows/, scroll/,
and viewport/. Fold tiny modules into their owners, move leftover
sidebar-root files into the module, and retarget imports and source-path
tests. Layout-only; no behavior change.

* fix(sidebar): merge duplicate virtual-rows imports

Inlining virtual-row-dom-attributes left a second import from the same
module, which fails audit:code-quality:native --deny-warnings.

* refactor(sidebar): condense indentation comments

Shorten explanations to focus on the essential why, removing redundant
detail and improving readability without changing functionality.

* refactor: organize worktree-list into lifecycle dest folders

* fix react doctor

* fix: update reliability-gates path after worktree-list reorg

host-filtering.test.ts moved from viewport/ to listing/; keep the
runtime-routing.active-server-preference gate pointing at the real file.

* Extract workspace status colors to design tokens

Define theme-aware color tokens for workspace PR-state indicators (done, in-review, in-progress) to ensure consistent identity across theme switches. Update references to use the new tokens and refactor EmptyState button to use the Button component.

* fix(sidebar): stop mutating refs during worktree-list render

React Doctor fails static analysis when refs are written in render.
Commit reused array identity and the Smart live-signal latch after
paint, and return the attention map from the sort memo instead of
stashing it on a render-time ref.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant