pub fn visible_rows(stages: &[StageEntry], budget: usize) -> Vec<Row<'_>>Expand description
Flatten stages into at most budget rows: summarize each stage’s older
sub-items into a tally, then — if that still doesn’t fit — keep the
newest rows rather than the oldest.
The keep-the-newest half is the behavior change. Every platform previously
iterated stages oldest-first and stopped dead at its row cap
(if row >= MAX_STAGE_ROWS { break }), so a long sub-item burst filled the
panel with the earliest entries and never showed the one currently
running — the opposite of what a progress display is for, and the reason a
slow startup looked frozen rather than busy. See the report above.