feat(tui): surface compression count in Ink status bar

Parity with the classic CLI status bar (PR #18579). The Python backend
already exposes 'compressions' on SessionUsageResponse; this wires it
through the Ink Usage type and renders 'cmp N' next to the duration
segment of StatusRule.

- types.ts Usage: add optional compressions field
- appChrome.tsx StatusRule: render 'cmp N' when > 0, color-tiered by
  pressure (muted <5, warn 5-9, error 10+)
- Plain text 'cmp' token (no emoji) matches PR #18579's original author
  rationale and avoids Ink layout drift from VS16 emoji width
This commit is contained in:
Teknium 2026-05-07 05:15:57 -07:00
parent f5a232af84
commit 3a82172dd5
2 changed files with 9 additions and 0 deletions

View file

@ -325,6 +325,14 @@ export function StatusRule({
<SessionDuration startedAt={sessionStartedAt} />
</Text>
) : null}
{typeof usage.compressions === 'number' && usage.compressions > 0 ? (
<Text color={t.color.muted}>
{' │ '}
<Text color={usage.compressions >= 10 ? t.color.error : usage.compressions >= 5 ? t.color.warn : t.color.muted}>
cmp {usage.compressions}
</Text>
</Text>
) : null}
<SpawnHud t={t} />
{voiceLabel ? (
<Text

View file

@ -160,6 +160,7 @@ export interface SessionInfo {
export interface Usage {
calls: number
compressions?: number
context_max?: number
context_percent?: number
context_used?: number