You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stability Score — new composite 0–100 metric combining p95 latency (30%), jitter/σ (30%), spike rate (20%), and uptime (20%). Displayed as a color-coded column in the TUI (green ≥80, cyan ≥60, yellow ≥40, red <40).
p95 latency (getP95) — 95th percentile latency from successful pings. Answers "95% of requests are faster than X ms."
Jitter (getJitter) — standard deviation of latency. Low jitter = predictable, high jitter = erratic/spiky.
"Spiky" verdict — new verdict that catches models with good average latency but terrible tail latency (p95 spikes). A model with avg 250ms but p95 6000ms now gets flagged as "Spiky 📈" instead of "Perfect 🚀".
Stability sorting — press B to sort by stability score. Most stable models rise to the top. B key now listed in the footer bar sort keys.
24 new unit tests covering p95, jitter, stability score, Spiky verdict, and stability sorting.
README: Stability Score section — documents the formula, weights, color thresholds, and an example calculation.
README: Verdict values table — lists all 7 verdict categories with their emoji, meaning, and criteria.
Changed
"Stab" column renamed to "Stability" — column header widened from 6 to 11 characters; header text now reads StaBility with the B sort-key letter in uppercase bold yellow.
SWE% column: 8-band color gradient — replaced the old 3-band color scheme (green ≥50, yellow ≥30, dim otherwise) with an 8-band gradient matching TIER_COLOR: ≥70% bright neon green, ≥60% green, ≥50% yellow-green, ≥40% yellow, ≥35% amber, ≥30% orange-red, ≥20% red, <20% dark red.
getVerdict() is now stability-aware: models in "Perfect" or "Normal" avg range get downgraded to "Spiky" when p95 shows extreme tail latency (requires ≥3 pings to avoid false positives).
findBestModel() now uses a 4-key sort: status → avg latency → stability score → uptime (was 3-key: status → avg → uptime).
sortResults() supports new 'stability' column.
VERDICT_ORDER updated to include "Spiky" between "Slow" and "Very Slow".
README: keyboard shortcuts updated to include B for Stability sort; "How it works" diagram updated.
Default ping interval → 3 seconds (was 2s) for a calmer default pace; still adjustable with W/X keys.
Verdict colors unified with TIER_COLOR gradient — Perfect (cyan-green) → Normal (lime) → Spiky (yellow-green) → Slow (orange) → Very Slow (red-orange) → Overloaded (red) → Unstable (dark red) → Unusable (darkest red). Best→worst ordering in code.
Footer cleanup — Removed the BETA TUI warning line. Renamed "Join our Discord" to just "Discord" and placed it next to Contributors on the "Made with love" line.
Footer link colors — Star on GitHub: yellow, Contributors: orange, Discord: light purple. Ctrl+C Exit moved to end of "Made with love" line.
Discord plain URL — Shows Discord → https://discord.gg/5MbTnDC3Md so terminals without OSC 8 link support can still see the URL.
K Help styling — Changed from green background badge to neon green text (rgb(0,255,80)) with no background.
Z Mode styling — Red-orange color (rgb(255,100,50)) matching OpenClaw branding.
Selection row styling — Darker backgrounds: favorite rows bgRgb(35,20,0), cursor rows bgRgb(50,0,60). Model name and Origin rendered in white bold when selected.
README — Updated all ping interval references from 2s to 3s; removed BETA warning line.
Fixed
Column alignment: Health/Status emoji width — Health column used .padEnd() which miscounted emoji width (✅, 🔥, ⏳ etc. are 2 terminal columns but counted as fewer). Switched to padEndDisplay() so Verdict, Stability, and Up% columns now align correctly.
Verdict emojis moved to end of text — emojis now appear after the word (e.g., Perfect 🚀 instead of 🚀 Perfect) for cleaner left-alignment.
Empty cell placeholders — changed from single — to ——— in Latest Ping, Avg Ping, and Stability columns so empty cells have more visual weight and don't look like blank space.