Skip to content

fix(ui): compare-groups crash with 6+ groups + responsive filter UX#235

Merged
skylenet merged 2 commits into
masterfrom
fix-error-label
May 7, 2026
Merged

fix(ui): compare-groups crash with 6+ groups + responsive filter UX#235
skylenet merged 2 commits into
masterfrom
fix-error-label

Conversation

@skylenet

@skylenet skylenet commented May 7, 2026

Copy link
Copy Markdown
Member

Summary

  • Crash fix: RUN_SLOTS extended from 5 to 10 entries (A–J) so URLs comparing more than 5 groups (e.g. all six EL clients) no longer crash on RUN_SLOTS[r.index].label being undefined. GroupBuilder cap raised from 5 to RUN_SLOTS.length.
  • Per-group loading spinners on the compare-groups builder: each card now shows a small "Loading…" spinner in its header while that group's config or any of its sampled result fetches are in-flight, instead of relying solely on the global state.
  • Non-blocking filter updates on both compare pages: filter URL writes (search box, regex toggle, chip toggles, gas-bucket buttons, diff filter) now run inside useTransition. Chip clicks and keystrokes paint immediately while the fan-out re-renders (charts × runs × thousands of tests) happen as an interruptible transition — rapid clicks cancel in-flight work instead of queueing 4s hangs per click.
  • Quieter dimension breakdown: when only 1–2 dimensions are available, the "Show more / Show fewer dimensions" toggle is hidden entirely (nothing to collapse). Reappears automatically with 3+ dimensions. Applied in both DimensionInsights and CompareDimensionInsights.

Test plan

  • Open /compare/groups?suite=…&groups=besu:;;erigon:;;ethrex:;;geth:;;nethermind:;;reth: — confirm the page renders without throwing on slot.label and each group gets a distinct color (A–F).
  • In the group builder, while results are still loading, confirm each group card shows a small spinner in its header alongside the "X runs found" badge.
  • On /compare?runs=… and /compare/groups?… with thousands of tests, click a facet chip rapidly several times — the click should feel instant; older work should be cancelled rather than queued.
  • In the dimension breakdown panel: with a filter narrow enough that only 1–2 dimensions remain, confirm both are visible and no toggle button is shown. Loosen the filter so 3+ dimensions appear and confirm the toggle reappears.

skylenet added 2 commits May 7, 2026 19:24
…ners

Extends the RUN_SLOTS palette from 5 to 10 (A–J) so URLs comparing more
than 5 groups (e.g. all six EL clients) no longer crash on
`RUN_SLOTS[r.index].label` being undefined. Bumps the GroupBuilder cap
from 5 to RUN_SLOTS.length.

Adds a per-group loading flag — true while that group's config or any
of its sampled result fetches are in-flight — and renders a small
spinner in each GroupCard header so users get feedback that data is
loading for that specific group rather than only seeing a global state.
Filter URL updates on the compare and compare-groups pages now run inside
useTransition. Chip clicks and keystrokes paint immediately while the
fan-out re-renders (charts × runs × thousands of tests) happen as an
interruptible transition — rapid successive clicks cancel in-flight work
instead of queueing 4s hangs per click.

Dimension breakdown skips the preview/toggle entirely when there are only
1–2 dimensions in total: nothing is hidden, so "Show more / Show fewer
dimensions" would be pure noise. Toggle reappears automatically when 3+
dimensions are available.
@skylenet skylenet merged commit 1e405e3 into master May 7, 2026
7 of 9 checks passed
@skylenet skylenet deleted the fix-error-label branch May 7, 2026 17:43
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