/usage: progress bar width desyncs from percentage value on initial render

Resolved 💬 1 comment Opened Apr 16, 2026 by akamash Closed May 24, 2026

<img width="823" height="490" alt="Image" src="https://github.com/user-attachments/assets/8e58f9fa-4b39-45eb-a952-69f0155fd8b3" />

Description

In the /usage dialog (Usage tab), progress bars render with an initial "placeholder" width that never reconciles with the actual percentage value once data arrives.

Steps to reproduce

  1. Run /usage → switch to the Usage tab
  2. Observe progress bars for "Current session" and "Current week (Sonnet only)"
  3. Initial frame: bars render with correct proportions briefly
  4. ~1 second later: text labels update to actual values ("0% used", "1% used"), but the bar widths remain stuck at the initial ~60% fill

Expected

Bar width should match the reported percentage — at 0–1% used, the bar should appear empty or near-empty.

Actual

Bar width stays at ~60% fill while the label reads "0% used" / "1% used". The two visual elements are out of sync.

Environment

  • Claude Code version: 2.1.111
  • OS: macOS (Darwin 25.3.0)
  • Terminal: iTerm2
  • TERM=xterm-256color
  • COLORTERM=truecolor
  • Theme: default (dark)

Additional notes

  • "Current week (all models)" renders without any bar at all (likely because no data is tracked yet — may be intentional)
  • "Extra usage" row shows "100% used" as text but no bar rendered
  • Reopening /usage does not reliably fix the desync
  • Suspect a race condition in the Ink render: text state and bar-width state update independently, and the bar's re-render is skipped after data loads

Screenshot available on request.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗