Skip to content

feat(ui): multi-select group-by for Recent Runs by Client - #258

Merged
skylenet merged 1 commit into
masterfrom
ui-group-by-recent-runs
Jul 2, 2026
Merged

feat(ui): multi-select group-by for Recent Runs by Client#258
skylenet merged 1 commit into
masterfrom
ui-group-by-recent-runs

Conversation

@skylenet

@skylenet skylenet commented Jul 2, 2026

Copy link
Copy Markdown
Member

The suite-details "Group by" (Recent Runs by Client) previously allowed only a single value. It's now multi-select and defaults to all available labels, so runs group by the combination — e.g. selecting aot + bal-mode groups by aot=…, bal-mode=….

Changes

  • SuiteDetailPage.tsx
    • groupBy URL param semantics: unset = all label keys (the new default), none = no grouping, otherwise a comma-separated key list (aot,bal-mode). New parseGroupByKeys/serializeGroupByKeys helpers mirror the existing steps param convention.
    • effectiveGroupBy (single) → effectiveGroupByKeys: string[]. applyGrouping builds a composite key=value, key=value suffix on the client name.
    • The selector becomes a multi-toggle row (like "Metric steps"): None clears grouping; each label and instance id toggle independently.
    • All four compare-URL builders emit correct multi-key group specs.
  • RunsHeatmap.tsx: groupBy?: stringstring[]. It composites each run's group value, carries a per-group metadata map, renders the key=value composite in the group header, and passes the metadata map to getGroupCompareGroupHref so it can emit client:k1=v1,k2=v2.

The /compare/groups group-spec parser already ANDs multiple key=value conditions per group, so no compare-page changes were needed.

Notes

  • Grouping by instance_id combines with labels; it's excluded from the compare metadata filter (it isn't a metadata key) exactly as before.
  • Display format is key=value pairs (disambiguates which value belongs to which label).

Validation

No UI test suite exists; verified with tsc -b, eslint, and a full vite build — all clean.

The suite-details "group by" now allows selecting multiple labels at once
(e.g. aot + bal-mode), grouping runs by the composite key=value combination,
and defaults to selecting all available labels.

- groupBy URL param: unset = all label keys (default), 'none' = no grouping,
  else a comma-separated key list (parse/serialize mirrors the steps param).
- effectiveGroupBy -> effectiveGroupByKeys[]; applyGrouping builds a composite
  "key=value, key=value" client suffix; the selector is a multi-toggle row
  (None clears; each label + instance id toggle independently).
- RunsHeatmap groupBy is now string[]: it composites the group value, carries
  a per-group metadata map, and the compare-URL builders emit multi-key
  client:k1=v1,k2=v2 group specs (the /compare/groups grammar already supports
  multiple key=value conditions, so no compare-page change is needed).
@skylenet
skylenet merged commit d443b17 into master Jul 2, 2026
7 checks passed
@skylenet
skylenet deleted the ui-group-by-recent-runs branch July 2, 2026 11:28
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