Skip to content

v3.23.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 20:26
· 5 commits to main since this release
feat: every metric in the perf panel explains itself

The labels are abbreviations forced by a 23-cell box — `flush`, `backlog`, `dropped`,
`overlay` — so the numbers were legible only to whoever wrote them. Dwell on a row and a
popover names the channel, says what it measures, and says what a bad reading indicts:
that flush is your emulator rather than this app, that a non-zero backlog is the
coalescing working and not a fault, that a frame rate idling at exactly 20 is a floor
imposed by the 50 ms poll and not a health signal.

Channel rows carry p50/p95/p99, worst-in-window, all-time peak and sample count. The rate
rows do not — a metric with no percentiles would need a line of zeros invented for it, and
a line of zeros reads as a measurement.

The popovers open away from the panel and are refused permission to flip. The panel draws
last so its own cost stays out of the channels it reports, which means anything overlapping
it is painted over; the side comes from which half of the screen the panel occupies, and
flipping is the one thing that could throw a popover back across it. `HoverTip` grew a
`flip` flag rather than the renderer special-casing an area, so the reason travels with the
tip.

Reuses the existing dwell machinery rather than building a second one: a `TooltipArea::Perf`
variant and one match arm, gated on the master tooltip switch like `Info` and with no toggle
of its own — the panel is already opt-in behind Ctrl+T, and a second switch would gate a
thing you had to ask for twice.

Verified by test rather than by eye, and the distinction matters: a unit test asserts every
metric row registers a region inside the panel, on the row it describes, with its prose and
its percentiles. The pty harness could NOT confirm the popover on screen — but a column
header's tooltip, which predates this change, does not appear in that harness either, so
the limitation is driving a one-second dwell through a pty and not a regression here.