refactor(web): the pull request list's rows read the speed-mode modifier themselves#22704

merged1
refactor/split-pull-requests-detail-hook
refactor/split-pull-requests-list-groups
opened4d agobyJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 4d ago

The page subscribed to the Shift modifier at the top of the route, so every Shift press re-rendered the whole page and the column only to pass speedMode to the rows.

The grouped rows move into PullRequestListGroups.tsx, which reads the modifier itself. With 136 rows listed, 3 Shift taps: PullRequestsRouteView 6 → 0 renders, PullRequestsColumn 6 → 0; the rows still re-render because their speed actions really change.

FileBeforeAfter
routes/_chat.pull-requests.tsx2,1002,034
PullRequestListGroups.tsx-121

Part of the pull request page split stack: #22671 → #22672 → #22702 → #22703 → #22704 → #22705 → #22706.

Measured with the rc-init render counter against a dev server seeded from real data (136 pull requests listed), fresh browser per side, main 6a6c84f990 vs the stack top. Opening a PR detail: 6482 / 947 / 1249 renders on main vs 6331 / 1187 / 956 on the stack (noise, the first open includes data arriving). Switching Summary/Timeline/Code: 2-13 renders per switch on both sides. Holding Shift 3 times on the list: 14952 vs 14937 renders; the page and column no longer re-render (6 + 6 before, 0 after), the rows still do because their speed-mode prop really changes.

Tests run on this layer: tsc --noEmit for apps/web, vp lint on the changed files, vp test run src/reactCompilerCoverage.test.ts -t pullRequest (every new file compiles with 0 bailouts), vp test run src/components/pullRequest/pullRequestsRouteSearch.test.ts.

🤖 Generated with Claude Code

Checks

All checks passed

Added 1 commit

  • refactor(web): the pull request list's rows read the speed-mode modifier themselves39c2453
Synced from GitHub

Approvability

Verdict: Approved at 39c2453

Macroscope's review found this PR approvable — This refactors the existing pull-request list so speed-mode modifier updates re-render the rows instead of the entire route and open detail panel. Rendering and interaction inputs remain otherwise unchanged, with no schema, security, deployment, default, or static-analysis override changes.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 9a3d675f-3048-4e01-922c-2abf5d025649
📥 Commits

Reviewing files that changed from the base of the PR and between a9ac4ea519b445df7faaba75045f0379e587a3cc and 39c2453342f21a0f56d05bf184a749337a230098.

📒 Files selected for processing: 2
  • apps/web/src/components/pullRequest/PullRequestListGroups.tsx
  • apps/web/src/routes/_chat.pull-requests.tsx

Limit details: You’ve used all 10 included reviews currently available.

📝 Walkthrough

The pull-request route now delegates grouped row and header rendering to the new PullRequestListGroups component. The component handles group headers, row state and callbacks, Shift-only speed mode, match state, and pointer disabling during sweeps.

Changes: Grouped Pull Request List

Layer / File(s)Summary
Group headers and row rendering
apps/web/src/components/pullRequest/PullRequestListGroups.tsx
The new component renders group headers and pull-request rows. It passes selection, match, action, and sweep state to each row. Speed mode is enabled only when Shift is pressed without Meta, Control, or Alt.
Route integration
apps/web/src/routes/_chat.pull-requests.tsx
The route replaces inline group and row rendering with PullRequestListGroups and passes it display groups, state, and callbacks. It removes the previous group-header and speed-mode code.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Refactor

Suggested reviewers: maria-rcks

Merge Risk: ⚪ Minimal · up to 39c24

Grouped pull-request rows retain the inspected interactions and Shift-action behavior. No actionable merge risk remains after normal checks.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check nameStatusExplanationResolution
Description checkWarningThe description explains the performance problem, implementation, measured results, and verification commands. It does not provide the required Scope and approval information, and it omits the require…Add the required Problem, Change, Scope and approval, and Verification sections. Link the triaged issue or maintainer approval, or explain why this focused fix qualifies for an exemption. Add before/after screenshots for the UI change and a…
Passed Passed checks: 3 passed
Check nameStatusExplanation
Title checkPassedThe title clearly describes the main change: grouped pull-request rows now read the Shift speed-mode modifier themselves. It is concise, specific, and uses the repository's conventional commit format.
Linked Issues checkPassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes checkPassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the performance problem, implementation, measured results, and verification commands. It does not provide the required Scope and approval information, and it omits the required before/after UI screenshots.

Resolution

Add the required Problem, Change, Scope and approval, and Verification sections. Link the triaged issue or maintainer approval, or explain why this focused fix qualifies for an exemption. Add before/after screenshots for the UI change and a recording if interaction timing requires it.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Usage-based review receipt

Note

This review was completed with usage-based billing: files reviewed beyond your plan's included limits are billed at $0.25/file. View usage-based billing.

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