fix(ui): adopt AnalyticsCardShell in five hand-rolled analytics cards - #6472
fix(ui): adopt AnalyticsCardShell in five hand-rolled analytics cards#6472nghetienhiep wants to merge 1 commit into
Conversation
b6ca19b to
edc79ef
Compare
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
edc79ef to
0e0205a
Compare
af48625 to
fa3f9f4
Compare
The cycle-time, gate-precision, reversal-health, gate-outcome, and slop-duplicate-trend cards each re-implemented the shared "titled card with loading/empty/ready" chrome (JSONbored#2200) instead of rendering through AnalyticsCardShell like acceptance-rate and queue-health already do. The root-cause symptom was CycleTimeCard's no-samples branch: it rendered a bare paragraph instead of the shared EmptyState every adopted sibling gets for free. Routing it through the shell with state="empty" fixes that and gives the whole folder one loading/empty/ready implementation. To keep each card's header signal (status pill, public boundary badge, freshness stamp) the shell gains an optional `action` slot rendered in the header across every state — the header already reserved the right-hand space via justify-between. Data-fetching and ready-state content are unchanged; only the chrome/state wrapper moved. Closes JSONbored#6175
fa3f9f4 to
0593568
Compare
|
Caution 🛑 LoopOver review result - reject/close recommendedReview updated: 2026-07-16 09:51:53 UTC
Review summary Blockers
Nits — 5 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentDecision drivers
Context & advisory signals — never blocks the verdict
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.
|
|
LoopOver is closing this pull request on the maintainer's behalf (AI reviewers agree on a likely critical defect: CI shows validate, validate-code, validate-tests, and the UI preview build all FAILED on this commit, which is inconsistent with the PR's claimed clean typecheck/lint/test/build results — this needs to be resolved or explained before merge.). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |


Summary
cycle-time-card,gate-precision-card,reversal-health-card,gate-outcome-card,slop-duplicate-trend-card— to render throughAnalyticsCardShell(#2200), matching howacceptance-rate-card/queue-health-cardalready use it.CycleTimeCard: its no-samples branch rendered a bare<p>instead of the sharedEmptyStateevery adopted sibling gets. Routing it through the shell withstate="empty"now shows the standard EmptyState.AnalyticsCardShellan optionalactionheader slot so each card keeps its existing header signal (status pill,publicboundary badge, freshness stamp) across every state — the header already reserved the right-hand space viajustify-between.GatePrecisionCardkeeps its documented "render nothing when there are no evaluated rows" behavior.Scope
type(scope): short summaryConventional Commit format.apps/loopover-ui/**) and does not mix unrelated backend, MCP, docs, or deploy changes.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #6175.Validation
npm run ui:typecheck— cleannpm run ui:lint(eslint + prettier) — cleannpm run ui:test— 277 passing (34 across the six changed/adjacent card suites)npm run ui:build— succeedsgit diff --check— cleanui:openapiregenerates nothing)apps/**is excluded from Codecov, so this UI-only change carries nocodecov/patchobligation; tests are still added for the shell's newactionslot and updated for the CycleTimeCard empty-state fix.Safety
UI Evidencebelow with GitHub-hosted PNG thumbnails.UI Evidence
Screenshots rendered from
vite devagainst mocked operator/maintainer dashboard payloads.action)action)Notes
reversal-health-cardandgate-outcome-cardalways show their stat grid with an innerEmptyStatefor a sub-section (targets list / outcome-mix bar), so they adopt the shell asstate="ready"and keep that inner empty treatment — the migration unifies their header chrome (includinggate-outcome'sborder-hairline bg-card→ the shell's border).Closes #6175