You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: move metadata labels to client level with per-instance merge (#164)
## Summary
Comprehensive metadata labels support across the UI, building on the
backend label infrastructure.
### Label Filtering
- Replace single-value label filters with multi-value chip UI (OR within
key, AND across keys) on the runs table, suite detail page, and suites
page — consistent Grafana-style filter chips everywhere
- URL format: `key1:val1|val2,key2:val3`
### Label Visibility
- **Run detail page**: show metadata labels as blue chips between stats
cards and GitHub section
- **Runs table**: expandable row via tag icon (rightmost column) with
label chips and instance ID; hover popover on the tag icon; suite hash
hover popover showing suite name, hash, filter, test count, and labels
- **Heatmap tooltip**: show instance ID and labels when hovering over
run squares
### Suite Detail — Group By
- Add group-by selector (label key or instance ID) to the suite detail
Runs tab
- **Heatmap**: renders grouped sections with headers, each containing
per-client rows with independent stats
- **Charts**: separate series per client+group combo via client name
suffixing
- **Chart filters**: client toggle badges and label chip filters for the
Run Charts section, using base client names so they work correctly with
group-by active
- Fix ECharts `notMerge` so filtered-out series actually disappear
### Suite Detail — Compare Buttons
- Per-group compare button in heatmap headers (compare latest successful
run per client within a group)
- Cross-group compare button per client badge (compare a client's latest
successful run across all groups)
- Cross-group compare defaults the compare page label mode to the
group-by key
### Compare Page
- Dynamic label mode options built from runs' metadata (in addition to
None and Instance ID)
- Label mode stored in URL as `label:{key}` for metadata labels
### Infrastructure
- Centralize client chart colors in `client-colors.ts` with
`getBaseClient()` extraction so grouped names like "geth / mainnet"
resolve to correct colors in badges, charts, and logos
## Test plan
- [x] Verify label filter chips work on /runs, suite detail runs tab,
and /suites pages
- [x] Verify labels show on run detail page, runs table (tag icon +
popover), and heatmap tooltip
- [x] Test group-by on suite detail: heatmap sections, chart series,
chart filters
- [x] Test per-group and cross-group compare buttons navigate correctly
- [x] Verify compare page shows dynamic label options and defaults from
group-by
- [x] Verify client colors are correct across all views when group-by is
active
The `runner.metadata.labels` field attaches arbitrary key-value pairs to a benchmark run. Labels are included in the output `config.json` and can be used for filtering and organization (e.g., in the UI or CI pipelines).
144
+
The `runner.client.config.metadata.labels` field attaches arbitrary key-value pairs to benchmark runs. Labels are included in each run's output `config.json` and can be used for filtering and organization (e.g., in the UI or CI pipelines).
145
+
146
+
Labels can be set at the client level (defaults for all instances) and overridden per instance. Instance-level labels are merged with client-level labels, with instance values taking precedence on conflict.
0 commit comments