Skip to content

Tree Compare: replace change-type chips with freeform (from → to) status pair filter #2052

Description

@felipebergamin

Summary

On the Tree Compare breakdown tables, replace the current change-type filter chips (regression, fixed, newFailure, etc.) with a freeform filter where users build their own (from, to) status pairs, can add multiple pairs, and can remove them individually.

Filtering stays client-side (same as today). Table change badges can remain as derived labels; only the filter UX changes.

Motivation

Change chips are named buckets over sideA → sideB transitions and are lossy (e.g. “regression” covers more than PASS → FAIL). Letting users pick exact status pairs matches what’s shown in the table and gives finer control.

Behavior

  • Users pick From and To from: PASS / FAIL / INCONCLUSIVE / (absent)
  • Add appends the pair to the active filter list (no duplicates)
  • Each active pair is shown as a removable chip (e.g. PASS → FAIL)
  • Multiple pairs use OR semantics: a row matches if its (sideA, sideB) equals any selected pair
  • Empty list = show all rows
  • Default (preserve today’s useful default): PASS → FAIL and FAIL → PASS
  • Would be nice to have a persistence of the filters created by user (maybe using localStorage?)

UI sketch

  • Label + short tooltip explaining the four statuses (including absent)
  • Two Selects (From, To) + Add
  • Disable Add when incomplete or duplicate
  • Removable chips for active pairs
  • Reuse existing shadcn Select / chip styling patterns from Tree Compare

Acceptance criteria

  • Change-type filter chips are gone from the compare breakdown filter
  • Users can add/remove multiple (from, to) pairs using all statuses
  • Tables (builds / boots / tests) filter by those pairs with OR semantics
  • Empty selection shows all rows; default is PASS→FAIL + FAIL→PASS
  • Active pairs are reflected in the URL
  • Unit tests cover parse/normalize/apply helpers

Visual reference

This is just a concept/mockup—it doesn't have to look exactly like this.

Image

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status
In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions