feat(ui): hide/exclude models from the dashboard (persisted)
CI / test (pull_request) Successful in 9m51s

Each scoreboard row gets a × to hide that model — for retired ones (m1
etc.) you no longer want in the view. Hidden models drop out of the
table, totals, and the findings drill-down; the set persists in
localStorage (grt-hidden) across reloads, with a "hidden (N): …" bar of
click-to-restore chips + a "show all".

Solo-ness is still computed against ALL models (hiding is a view filter,
not a rescoring), so hiding one model never fakes another's solo finds.
README Dashboard section updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Steve Dudenhoeffer
2026-06-27 20:36:24 -04:00
parent 14cbee8e25
commit dd8ada479e
2 changed files with 48 additions and 3 deletions
+6
View File
@@ -159,6 +159,12 @@ Its mirror, **solo-error penalty ×** (default `1.5`), multiplies the FP penalty
was made by **only that model** — a unique wrong claim is noisier than a shared mistake. So a
Blocking-claimed solo FP costs `high(8) × -0.5 × 1.5 = -6` vs `-4` for a shared one. Set to `1` to disable.
**Hiding models.** Each scoreboard row has a small **×** to hide that model — handy for retired ones
(e.g. `m1`) you no longer want cluttering the view. Hidden models drop out of the table, the totals,
and the findings drill-down (but **not** from solo-ness, which stays computed against all models — hiding
is a view filter, not a rescoring). The hidden set persists in `localStorage` across reloads; a
**hidden (N): …** bar lists them as click-to-restore chips, with a **show all** to clear.
Auth: the `/ui` shell is public (it holds no data); paste the store token into its **connect** box,
or open `/ui?token=<token>` once (remembered in `localStorage`). Prefer your own dashboard? Point
Grafana/Metabase/etc. at the SQLite file or the same `/export` + `/scoreboard` + `/runs` JSON.