Skip to content

Stop showing "~100% left at reset" on untouched meters#1016

Open
robinebers wants to merge 1 commit into
mainfrom
claude/reset-progress-display-2c95af
Open

Stop showing "~100% left at reset" on untouched meters#1016
robinebers wants to merge 1 commit into
mainfrom
claude/reset-progress-display-2c95af

Conversation

@robinebers

@robinebers robinebers commented Jul 16, 2026

Copy link
Copy Markdown
Owner

TL;DR — An unstarted quota window (0 used) no longer shows the tautological "~100% left at reset" note and even-pace tick when Always Show Pacing is on; zero usage now means "no pace signal", so the row stays a plain calm bar.

What was happening

  • With Always Show Pacing on, every bounded metric whose window had nothing spent yet — e.g. all three Cursor meters on a fresh billing cycle — showed "~100% left at reset" next to the title, plus an even-pace tick on the bar.
  • Root cause: Pace.evaluate special-cased used <= 0 as a confident .ahead verdict with a fabricated 0-usage projection. Zero usage carries no burn rate, so there was nothing real to project.
  • This was also asymmetric: the amber/red verdicts already distrust projections below 5% used and fall back to a plain level bar, and Claude/Antigravity session rows already show a pace-free "Not started" — but the blue path had no such guard, so the least-informed state got the most confident copy. Affected every provider with reset-window meters (Cursor, Codex, Claude weeklies, Copilot, Devin, Grok, OpenCode, ZAI, …).

What this changes

  • Pace.evaluate returns nil (no signal) when nothing has been spent, same as the existing "too early in the window" case. The meter falls back to the absolute-level state: calm blue bar, no projection copy, no tooltip, no tick.
  • Flipped the two tests that pinned the old behavior and added a regression test for the exact reported scenario (fresh cycle + Always Show Pacing on → silent row).
  • Updated docs/dashboard.md, docs/settings.md, and docs/providers/codex.md to say an untouched metric stays plain until something is spent.

Heads-up

  • The even-pace tick also disappears on untouched bars — intentional (a pace notch on a bar with no pace is noise), but it's a small visual change to the Always Show Pacing look.
  • Codex's 5h row now just goes quiet at 0% rather than gaining a Claude-style "Not started" label, matching the documented Codex behavior; promoting it to isSessionWindow would be a separate decision.
  • The fix lives in the shared pacing engine, so it covers all providers at once; only WidgetData.meterState consumes Pace.evaluate, and alerts can't regress (zero usage never produced an alertable state on either side of this change).

Tests

  • Full suite green locally: 1178 tests, 0 failures (3 pre-existing skips).
  • New regression test: testAlwaysShowPacingStaysSilentOnUntouchedMeter; updated testZeroUsageHasNoPaceSignal and testZeroUsageFallsBackToPlainLevelBar.
  • Verified live with the dev build: Cursor reporting used: 0 on a fresh cycle with Always Show Pacing enabled renders plain bars.

Screenshots

The change is removal-only (the note and tick no longer render on untouched bars). Before, from the report:

Cursor Total/Auto/API each showed "~100% left at reset" beside the title with a tick near the bar's end, despite "100% left · Resets in 28d 23h".

🤖 Generated with Claude Code


Note

Low Risk
Small behavioral change in shared pacing logic with targeted tests and docs; no auth or data-path changes.

Overview
Fixes Always Show Pacing showing a meaningless "~100% left at reset" note and even-pace tick on meters with 0% used (e.g. a fresh Cursor billing cycle).

Pace.evaluate now returns nil when used <= 0 instead of fabricating an .ahead verdict, so WidgetData.meterState falls back to a plain calm blue bar with no projection tooltip or tick until something has actually been spent. Tests and dashboard/settings/Codex docs are updated to match.

Reviewed by Cursor Bugbot for commit 2fe8b79. Bugbot is set up for automated code reviews on this repo. Configure here.

Pace.evaluate treated zero usage as a confident "ahead" verdict with a
0-usage projection, so with Always Show Pacing on, every unstarted
window (e.g. a fresh Cursor billing cycle) showed the tautological
"~100% left at reset" plus an even-pace tick. Zero usage carries no
burn rate to project, so treat it like the too-early-in-window case:
no pace signal, and the row falls back to the plain level bar.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@robinebers robinebers added the gate-passed Passed the automated PR gatekeeper checks (gatekeeper skips it on later runs) label Jul 16, 2026 — with Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs gate-passed Passed the automated PR gatekeeper checks (gatekeeper skips it on later runs) tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant