# Changelog v0.1.67 - 2026-02-26

### Added

- **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: TUI Columns reference table** — full 12-column table documenting every column (Rank, Tier, SWE%, Model, Origin, Latest, Avg, Health, Verdict, Stability, Context, Up%).
- **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.

---
