v0.4.0
Tracks alpenglow ag-v0.4.0. Major release adds the Live tab — a
real-time animation surface that tails an actively-written validator
log and presents chain progression, leader-window outcomes, shred
ingress, transaction pressure, and slot lifecycle as continuously
updating visualisations. Plus a runtime truecolor detector + 6×6×6
cube fallback for terminals that misparse 24-bit RGB, and a four-band
fast-finalize verdict ladder calibrated against operator-observed
cluster performance.
Added
- Live tab — real-time tail of an actively-written log. Hidden when
the log is static (rotated / stale / no size growth observed).
PressSPACEto start tailing,pto pause the animation,
hto toggle an in-app glossary that explains every widget
label and glyph. Composite scene engine with six panes:- Shred streams — turbine particle stream + repair/drop/err
sparklines fromShredFetch/ShredFetchRepair/
ShredSigverify/RecvWindowInsertmetric datapoints. - Slot outcomes — fast/slow/skip/FEC lane bars per
time-slice over a rolling 64-slot window. Skip lane uses
left-pointing triangle glyphs to read distinctly from the
slow lane's dots. - Chain — cannon-particle visualisation: tip-slot chip and
cannon at the top, particles fall into a paged 25×5 bucket
with magic-wipe transition between pages. Left-side tx
stream surfaces recentBankFrozen.signature_countper
slot (filters skipped slots and zero-sig blocks). Four
status chips showcadence/assembly/consensus/
lifecyclep50/p95 in ms. - Block production — recent leader windows as cards with
per-slot bank time, signatures, broadcast time, shreds, tx
counts, and outcome icons ([✓]/[~]/[…]/[✗]/
[A]). Headline summarisesbank avg/sig max/
sh max/since last block. Right-aligned timer column
lands cleanly in the right card slot. - Tx pressure —
BankFrozen.signature_countthermal area
chart with cold→hot gradient + dimmed area fill. Header
surfacesnow / avg / peakover the visible window. - Decorations — status strip with tail health, recent
event summary, pause indicator.
- Shred streams — turbine particle stream + repair/drop/err
- Truecolor detection + 6×6×6 cube fallback (
tui::truecolor).
Routes everyColor::Rgbcallsite through a runtime helper
that detects terminal capability at startup. Detection ladder:
CLI flag →NO_COLOR→COLORTERM=truecolor/24bit→
TERM_PROGRAM=Apple_Terminal→TERMsubstring match
(kitty / alacritty / wezterm / ghostty / iterm / vscode) →
default true. On the fallback path quantises to the nearest
of the 216 colours in the ANSI cube so chip backgrounds and
gradients render correctly on terminals that misparse 24-bit
SGR sequences (notably macOS Terminal.app). --no-truecolorCLI flag to force the 256-colour fallback.--force-truecolorCLI flag to skip the detection ladder
(escape hatch for SSH sessions where COLORTERM was stripped).
Mutually exclusive with--no-truecolorper clap.NO_COLORenv var honoured per the no-color.org convention.- Replay xtask (
cargo xtask replay-log) for offline Live-tab
development against a captured log. - Parser support for
ProduceWindow,Unable to produce window,
Triggering parent ready,ParentReady, and the
shred-pipeline metric datapoints (ShredFetch,
ShredFetchRepair,ShredSigverify,RecvWindowInsert,
ShredInsertIsFull,BankingStageCounts).
Changed
- Overview tab
fast-finalizeheadline rebanded to four
verdicts:perfect (>=98%)(green BOLD),OK (95-98%)
(green),fine (80-95%)(yellow),degraded (<80%)(red).
Verdict text shows each band's actual range rather than a
single lower threshold so the operator reads "I'm in the
80-95% band" rather than the misleading "above 80%". Text-
mode runner cutoff aligned with the newFAST_FIN_GOOD_PCT
(95) to keep CLI and TUI consistent. - Slots tab gains the
LSKIPfilter (we voted skip on a slot
the network ultimately kept canonical — local-skip on a
canonical slot). Distinct fromCSKIP(canonical-skip across
the cluster). - Status bar advertises
[h] helpon the Live tab so the
glossary toggle is discoverable.
Notes
- Tab key bindings:
1–7now span all tabs (Live = tab 7,
hidden in static-log mode). - Test count: 461 (was 222 at 0.3.3 release). Includes 4 new
integration tests incrates/abracadabra/tests/truecolor_render.rs
that prove everyColor::Rgbcallsite routes through the
truecolor detector by walking the rendered ratatui buffer
and asserting zero RGB cells when the fallback is active.