refactor(dashboard): group run components under components/run/#62
Conversation
Pure move: git mv the fourteen run-*/runs-* components in apps/dashboard/src/components/ into src/components/run/ (dropping the redundant filename prefix, following the existing analytics/ / monitors/ / settings/ / ui/ convention) and rewrite the @/components/run-<name> and @/components/runs-filter-bar specifiers to @/components/run/<name>. No logic changes. running-spinner.tsx is deliberately excluded: it only shares the "run" prefix and is a generic primitive unrelated to this component family. No index.ts barrel was added, matching the sibling subfolders. Doc-comment references to the old filenames (in meta-pills.tsx, use-run-summary.ts, status-registry.workers.test.ts, the runs page, and a Playwright spec) were updated to match; docs/worklog/ and the historical HTML review under docs/reviews/ were left untouched as point-in-time records. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (33)
📝 WalkthroughWalkthroughThe dashboard adds run filtering, live run-detail rendering, history hover summaries, and test-preview popovers. Existing pages, utilities, tests, and components are migrated to the ChangesRun dashboard updates
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant RunsFilterBar
participant Router
participant RunsPage
User->>RunsFilterBar: change search or filter
RunsFilterBar->>Router: replace URL query parameters
Router->>RunsPage: load filtered runs
sequenceDiagram
participant RunDetailPage
participant useRunSummary
participant currentSummary
participant LiveHeader
RunDetailPage->>useRunSummary: subscribe to run progress
useRunSummary->>currentSummary: merge streamed data with initial summary
currentSummary->>LiveHeader: render current status, duration, count, and outcomes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
wrightful | 255df61 | Jul 22 2026, 10:24 AM |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
apps/dashboard/src/components/run/filter-bar.tsx (1)
44-58: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueLocally redeclared
NavigateFntype duplicatesuseNavigate's options type.
NavigateFn/its inline options shape mirrors theNavigateOptionstype already defined foruseNavigatein@/lib/navigate. Importing/reusing the shared type instead of re-declaring it here would avoid drift if the navigate options shape changes.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/dashboard/src/components/run/filter-bar.tsx` around lines 44 - 58, Remove the local NavigateFn declaration and reuse the shared navigate function/options type exported by "`@/lib/navigate`" in applyFilters. Update the relevant import and preserve the existing navigation behavior and history: "replace" option.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/dashboard/src/components/run/tests-popover.tsx`:
- Around line 73-80: Update the PopoverTrigger rendering the test count to
include a descriptive accessible name that conveys the action and status, such
as “Show 3 failed tests,” while preserving the visible count and existing
prefetch behavior.
---
Nitpick comments:
In `@apps/dashboard/src/components/run/filter-bar.tsx`:
- Around line 44-58: Remove the local NavigateFn declaration and reuse the
shared navigate function/options type exported by "`@/lib/navigate`" in
applyFilters. Update the relevant import and preserve the existing navigation
behavior and history: "replace" option.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 9cf90389-231c-473d-a83c-47a348706c52
📒 Files selected for processing (33)
apps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/flaky.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/run-duration.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/slowest-tests.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/suite-size.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/monitors/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/monitors/monitors-list.client.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/index.server.tsapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/tests/[testResultId]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/tests.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/tests/[testId]/index.tsxapps/dashboard/src/__tests__/parse-branch-param.workers.test.tsapps/dashboard/src/__tests__/status-registry.workers.test.tsapps/dashboard/src/components/run/detail-live.tsxapps/dashboard/src/components/run/filter-bar.tsxapps/dashboard/src/components/run/history-bar-hover.tsxapps/dashboard/src/components/run/history-branch-filter.shared.tsapps/dashboard/src/components/run/history-branch-filter.tsxapps/dashboard/src/components/run/history-chart.tsxapps/dashboard/src/components/run/list-row.tsxapps/dashboard/src/components/run/meta-pills.tsxapps/dashboard/src/components/run/progress-group.tsxapps/dashboard/src/components/run/progress-row.tsxapps/dashboard/src/components/run/progress-skeletons.tsxapps/dashboard/src/components/run/progress.tsxapps/dashboard/src/components/run/summary-live.tsxapps/dashboard/src/components/run/tests-popover.tsxapps/dashboard/src/lib/analytics/params.tsapps/dashboard/src/lib/test-history-view.tsapps/dashboard/src/realtime/use-run-summary.tspackages/e2e/tests-dashboard/test-replay.spec.ts
There was a problem hiding this comment.
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: 1
🧹 Nitpick comments (1)
apps/dashboard/src/components/run/filter-bar.tsx (1)
44-58: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueLocally redeclared
NavigateFntype duplicatesuseNavigate's options type.
NavigateFn/its inline options shape mirrors theNavigateOptionstype already defined foruseNavigatein@/lib/navigate. Importing/reusing the shared type instead of re-declaring it here would avoid drift if the navigate options shape changes.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/dashboard/src/components/run/filter-bar.tsx` around lines 44 - 58, Remove the local NavigateFn declaration and reuse the shared navigate function/options type exported by "`@/lib/navigate`" in applyFilters. Update the relevant import and preserve the existing navigation behavior and history: "replace" option.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/dashboard/src/components/run/tests-popover.tsx`:
- Around line 73-80: Update the PopoverTrigger rendering the test count to
include a descriptive accessible name that conveys the action and status, such
as “Show 3 failed tests,” while preserving the visible count and existing
prefetch behavior.
---
Nitpick comments:
In `@apps/dashboard/src/components/run/filter-bar.tsx`:
- Around line 44-58: Remove the local NavigateFn declaration and reuse the
shared navigate function/options type exported by "`@/lib/navigate`" in
applyFilters. Update the relevant import and preserve the existing navigation
behavior and history: "replace" option.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 9cf90389-231c-473d-a83c-47a348706c52
📒 Files selected for processing (33)
apps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/flaky.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/run-duration.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/slowest-tests.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/insights/suite-size.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/monitors/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/monitors/monitors-list.client.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/index.server.tsapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/runs/[runId]/tests/[testResultId]/index.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/tests.tsxapps/dashboard/pages/t/[teamSlug]/p/[projectSlug]/tests/[testId]/index.tsxapps/dashboard/src/__tests__/parse-branch-param.workers.test.tsapps/dashboard/src/__tests__/status-registry.workers.test.tsapps/dashboard/src/components/run/detail-live.tsxapps/dashboard/src/components/run/filter-bar.tsxapps/dashboard/src/components/run/history-bar-hover.tsxapps/dashboard/src/components/run/history-branch-filter.shared.tsapps/dashboard/src/components/run/history-branch-filter.tsxapps/dashboard/src/components/run/history-chart.tsxapps/dashboard/src/components/run/list-row.tsxapps/dashboard/src/components/run/meta-pills.tsxapps/dashboard/src/components/run/progress-group.tsxapps/dashboard/src/components/run/progress-row.tsxapps/dashboard/src/components/run/progress-skeletons.tsxapps/dashboard/src/components/run/progress.tsxapps/dashboard/src/components/run/summary-live.tsxapps/dashboard/src/components/run/tests-popover.tsxapps/dashboard/src/lib/analytics/params.tsapps/dashboard/src/lib/test-history-view.tsapps/dashboard/src/realtime/use-run-summary.tspackages/e2e/tests-dashboard/test-replay.spec.ts
🛑 Comments failed to post (1)
apps/dashboard/src/components/run/tests-popover.tsx (1)
73-80: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Give the count trigger a descriptive accessible name.
It is currently announced only as the number. Include the status and action, e.g. “Show 3 failed tests.”
Proposed fix
<PopoverTrigger + aria-label={`Show ${count} ${variantLabel(variant)} tests`} className={TRIGGER_CLASS}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.<PopoverTrigger aria-label={`Show ${count} ${variantLabel(variant)} tests`} className={TRIGGER_CLASS} onFocus={prefetch} onPointerEnter={prefetch} style={{ color: statusToken(variant) }} > {count} </PopoverTrigger>🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/dashboard/src/components/run/tests-popover.tsx` around lines 73 - 80, Update the PopoverTrigger rendering the test count to include a descriptive accessible name that conveys the action and status, such as “Show 3 failed tests,” while preserving the visible count and existing prefetch behavior.
Summary
Pure file-reorganization refactor. Moves + import-specifier updates only —
no logic changes. Follows the playbook established by #61
(
lib/github-*->lib/github/), and the existingcomponents/subfolderconvention (
analytics/,monitors/,settings/,ui/).File mapping
All paths relative to
apps/dashboard/src/components/:run-detail-live.tsxrun/detail-live.tsxrun-history-bar-hover.tsxrun/history-bar-hover.tsxrun-history-branch-filter.shared.tsrun/history-branch-filter.shared.tsrun-history-branch-filter.tsxrun/history-branch-filter.tsxrun-history-chart.tsxrun/history-chart.tsxrun-list-row.tsxrun/list-row.tsxrun-meta-pills.tsxrun/meta-pills.tsxrun-progress-group.tsxrun/progress-group.tsxrun-progress-row.tsxrun/progress-row.tsxrun-progress-skeletons.tsxrun/progress-skeletons.tsxrun-progress.tsxrun/progress.tsxrun-summary-live.tsxrun/summary-live.tsxrun-tests-popover.tsxrun/tests-popover.tsxruns-filter-bar.tsxrun/filter-bar.tsxrunning-spinner.tsxwas not moved — it only shares therunprefix andis an unrelated generic primitive. No
index.tsbarrel was added, matchingsibling subfolders. No test files were renamed.
Every
git mvshows as a 98-100% similarity rename. All non-moved-filechanges are one-line
@/components/run-<name>->@/components/run/<name>(or
runs-filter-bar->run/filter-bar) specifier rewrites, including ahandful of doc-comment references to the old filenames (
meta-pills.tsx,use-run-summary.ts,status-registry.workers.test.ts, the runs list page,and a Playwright spec).
docs/worklog/and the historical HTML review underdocs/reviews/were intentionally left untouched as point-in-time records.Verification
grep -rn '@/components/run-\|@/components/runs-' --include='*.ts' --include='*.tsx' .-> zero remaining hits (repo-wide, excluding historicaldocs/worklog/).apps/dashboard/src/components/running-spinner.tsxconfirmed intact and unmoved.pnpm test(repo root): dashboard vitest lane 1 — 63 files passed, 1 skipped; 619 tests passed, 4 skipped. Dashboard workers lane — 116 files passed; 1360 tests passed. Reporter — 17 files passed; 300 tests passed.pnpm check(repo root) exits 0 when scoped toapps+packages: 0 errors, 141 pre-existing warnings in untouched files (matches expected baseline). The unscoped rootpnpm checksurfaced one unrelated formatting issue from a concurrent sibling agent's in-progress, uncommitted work under.claude/worktrees/(a separate parallel refactor branch) — not part of this diff.vp check --fix) ran clean on commit, no additional changes needed.Notes for reviewers
run-progress-row.tsx; git rename detection shouldauto-resolve the rebase (trivial, since this PR makes no logic changes to
that file's contents).
src/lib/run/db/artifact/hook modules is inflight in parallel. Its import rewrites touch the contents of these moved
components, so whichever of the two PRs merges second will need a trivial
rebase.
🤖 Generated with Claude Code
Summary by CodeRabbit