Repository navigation
v0.8.21 — ESC Cancel Fix + S39 Session Charts + S40 Context Gauges
·
755 commits
to master
since this release
v0.8.21 (2026-07-27)
ESC abort now cleanly skips retry nudges + real-time session gauges + stacked memory charts.
Three features and a critical P1 bug fix: pressing ESC mid-task previously fired up to 5 blind retry nudges that re-ran the exact task you just cancelled. That's fixed — the new 'cancelled' error category short-circuits the retry safety net on any user-initiated abort.
What's new
- S39 — Sessions tab with stacked memory graph. Real-time stacked area chart of per-session memory usage (compact limit + context tokens) over time. Data persisted in new SQLite tables (
session_heartbeats,token_samples) with a heartbeat hook that records token usage on everyturn_end. Updates live via SSE (/api/sessions/events) using the sameLast-Event-IDresumable-stream pattern as the compact event stream. - S40 — Per-session context gauges on Overview. Stacked bar of per-repo context usage (real-time via
/api/sessions+ SSE). Each session gets a proportional gauge showing context tokens vs compact limit — making it easy to see at a glance which repos are close to compaction. - S38 cancelled — ESC/Ctrl-C abort skips all retry nudges. The error-retry classifier now recognizes
stopReason === "aborted"(the signal pi fires on ESC) as a new'cancelled'category. BotherrorRetryCountandconsecutiveErrorsare reset to zero (a cancel is not a failure for circuit-breaker purposes). - Dashboard "Buy Me a Coffee" support link.
Fixed
- P1 — ESC abort fires blind retry nudges. The S38 classifier matched
s.includes('aborted')and returned'transient'— identical to a provider 5xx. The safety net then fired up to 5 retry nudges, re-running the task the user explicitly cancelled. Fixed by introducing the'cancelled'category. (5742881) - Dashboard build:
rechartsdependency. The S39 chart component importedrechartswhich was declared inpackage.jsonbut never installed — causing the vite build step to fail. Pinned to^2.15.4. (a2319a1,fb2f2bf) - S40
lastCtxTokensfallback. Providers without usage metadata gracefully fall back to last known value instead of showing 0. (90a7b78)
Tests
S38 file: 37 tests (up from 33). Full gate: 628 pass / 0 fail across 59 files in ~29s. Guardrails clean.
Migration
None — fully backward-compatible. Update with pi update --extensions.