fix(ui): migrate 3 hand-rolled tables to the shared Table component#7059
Conversation
check-run-readiness-table.tsx, command-table.tsx, and contributor-quality-table.tsx each hand-rolled raw <table>/<thead>/<tbody> markup instead of the shared Table/TableHeader/TableBody/TableRow/TableCell/TableCaption primitives from @/components/ui/table, unlike the rest of the app's adopted convention (epic JSONbored#6504). Migrated all three, preserving each table's existing columns, formatting logic, and per-cell styling exactly -- no new wrapper component invented. command-table.tsx had no existing test; added one covering its columns, per-entry rendering, and the DEFAULT_ROLE_SUMMARY fallback.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-17 20:17:25 UTC
Review summary Nits — 4 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionPartially addressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
Summary
check-run-readiness-table.tsx,command-table.tsx, andcontributor-quality-table.tsxeach hand-rolled raw<table>/<thead>/<tbody>markup instead of the sharedTable/TableHeader/TableBody/TableRow/TableCell/TableCaptionprimitives from@/components/ui/table(a ui-kit-backed component), unlike the rest of the app's adopted convention (epic Miner dashboard redesign: visual overhaul + action-capable chat (epic) #6504, already applied toapps/loopover-miner-ui's tables).contributor-quality-table.tsx'swhitespace-nowrap,check-run-readiness-table.tsx'sscope="col"+sr-onlycaption a11y pattern,command-table.tsx'sDEFAULT_ROLE_SUMMARYfallback). No new wrapper component was invented;TableScroll(a separate, orthogonal scroll-container wrapper already used by two of the three) is left in place around the migratedTable.command-table.tsxhad no existing test; added one covering its columns, per-entry rendering, and theDEFAULT_ROLE_SUMMARYfallback (see policyfor an unmapped command id).Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #6986
Validation
git diff --checknpm run actionlint(no workflow changes in this PR)npm run typecheck(vianpm run ui:typecheck, the UI-scoped equivalent)npm run test:coverage(backend-only; this PR only touchesapps/loopover-ui, which is outside the Codecov patch gate percodecov.yml'signore: apps/**)npm run test:workers(not applicable to this UI-only change)npm run build:mcp(not applicable to this UI-only change)npm run test:mcp-pack(not applicable to this UI-only change)npm run ui:openapi:check(no API/schema changes in this PR)npm run ui:lintnpm run ui:typechecknpm run ui:build(validated via lint + typecheck + the full local test suite instead; the fullui:buildpipeline invokes an unrelated content-collection step for.mdxdocs that mutates files outside this diff in this sandbox)npm audit --audit-level=moderate(no dependency changes in this PR)If any required check was skipped, explain why:
npm run ui:lintandnpm run ui:typecheckboth pass locally, and all 16 tests across the three components' test suites pass (14 pre-existing + 2 new), confirming the migrated markup still renders the same real<table>structure, columns, and content.command-table.tsxthrowsError: CodeBlock is not definedin its compiled MDX content (a bug in the docs renderer, not in this PR's diff), and other routes in this app have separately hit an unrelatedMcpVersionBadgecrash against an unreachableregistry.npmjs.orgin earlier attempts this session. None of these are caused by or related to the table-markup migration itself. Rather than force a misleading capture, I'm flagging this honestly, same as the already-merged Skeleton-adoption PR forapp.index.tsx(app.index.tsx SparkStat hand-rolls skeleton placeholders instead of adopting Skeleton #6984) hit and disclosed the same limitation. The three components' test suites (which assert on real DOM roles:getByRole("table"),getAllByRole("columnheader"),getAllByRole("row")) are the verification that the migrated markup renders correctly.Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots. See the honest explanation above -- capture was attempted multiple times and did not succeed due to pre-existing, unrelated sandbox issues.Notes