Releases: wheelbarrel00/ClaudeCodeUsageTracker
Releases · wheelbarrel00/ClaudeCodeUsageTracker
Release list
v1.5.1
Fixed
- Live plan limits and subscription detection now work on macOS. Claude Code
stores its OAuth credentials in the login Keychain on macOS, not in
~/.claude/.credentials.json— so the live-limits fetch found no token and
silently fell back to the on-disk cache (which can sit hours stale). The
extension now reads the token from the Keychain (the same
Claude Code-credentialsitem Claude Code itself writes) read-only, and
still prefers the credentials file when one is present. Windows and Linux are
unchanged.
v1.5.0
Fixed
- 1-hour cache writes were undercounted by 37.5%. Anthropic bills prompt-cache writes
with the 1-hour TTL at 2× input, versus 1.25× for the 5-minute TTL — and Claude Code
sessions use the 1-hour TTL. The extension priced all cache writes at the 5-minute
rate. It now splits the 1-hour portion out of every usage record and prices it at 2×.
Your cache-write cost figures will step up after this release — the new numbers are
the correct ones, not an increase in your actual usage. - Sonnet 5 is priced correctly ($2 / $10 per MTok introductory pricing, through
2026-08-31) — it previously fell through to the $3 / $15 default, overstating Sonnet 5
usage by ~50%. Model matching is also more robust: Bedrock-style prefixed ids
(anthropic./us.anthropic.) now match, and an unlisted or future id is priced by
its family (a future Opus prices as Opus) instead of silently billing at the mid-tier
default. - Totals no longer dip or zero out on transient file errors. Three separate causes,
all fixed to keep the last good data and retry: a session file locked mid-write (common
on Windows) was cached as empty until its next change; a failed listing of the log
directory purged every parsed file and published zeros; and a failed stat on one file
silently dropped its contribution for a pass. - Today's bar no longer disappears from the Daily chart for the rest of the month
after a DST spring-forward in timezones where the clocks skip midnight (e.g. Havana,
Santiago, the Azores). - Case-distinct projects on Linux no longer merge.
/dev/APIand/dev/apiare
different directories on a case-sensitive filesystem and now group separately in
By project; Windows and macOS keep folding case, matching their filesystems. - The status bar's four items are now distinguishable in the right-click "Hide" menu.
They used to appear as four identical unnamed entries sharing one visibility setting;
each now has its own name and remembers its own visibility. - "Explain with AI" can no longer get stuck on "Analyzing your usage…" — an
unexpected failure now surfaces as an error box in the panel. - A relocated
CLAUDE_CONFIG_DIRis honored everywhere. The log reader, the limits
cache, credentials, and the shared multi-window cache all resolve from the same root;
previously the live-limits fetch honored the override while the log and cache readers
kept reading~/.claude, splitting the two sources.
Changed
- Much lighter on long, heavy histories. The active session file is no longer re-read
and re-parsed in full on every assistant turn — only the newly appended lines are read
and folded into the parsed cache (with truncation/rewrites detected and re-parsed in
full). Cold startup streams files in chunks instead of loading each as one giant string,
and yields to the editor while parsing. A refresh that finds nothing changed reuses the
previous result instead of rebuilding the record set, repeated strings (model ids,
paths, session ids) are stored once, and the dashboard webview is released while hidden
and rebuilt on reveal — with the last AI explanation preserved — instead of keeping a
full browser context alive in memory. - The limit colors are now yours. The status-bar sunburst and the dashboard bars turn
yellow at your firstpredictiveAlerts.warnThresholdsvalue and red at your last
(75% / 90% by default), so the colors always agree with your warning notifications. An
explicit warning from Anthropic can still escalate a color, never downgrade one — and
the status bar and dashboard can no longer disagree with each other. - The 5-hour pace meter is visible again for the whole window. 1.4.0 stopped it from
crying wolf, but overshot: it hid the projection for the first half of every window and
whenever you paused for a few minutes, so most of the time there was simply no estimate —
the meter looked broken. It now shows from early in the window and stays put while you're
idle. Early on, the projection is damped toward your current utilization instead of
hidden: a thin early slice extrapolates wildly (5h 15%at 30 min in would read a raw
→ 150%), so the meter is shrunk toward where you actually are and firms up to the plain
projection by the time the window is half over. Past the half-mark the number is exactly
what 1.4.0 showed. The breach popup is unchanged — it still fires only once the window
is at least half over, you're actively burning, and you're clear of the on-pace band — so
an always-on meter never brings back false "you'll breach" warnings.
v1.4.0
Fixed
- Output tokens (and cost) were undercounted by ~20%. Claude Code writes an assistant
message to its transcript once per streamed content block; the interim lines carry a
placeholderoutput_tokensand only the final line reports the settled figure. The
extension was keeping the first line of each message and discarding the rest, so it
banked the placeholder and threw the real output count away. It now takes the final,
settled usage. Your output-token and cost figures will step up after this release —
the new numbers are the correct ones, not an increase in your actual usage.
Changed
- The 5-hour pace meter no longer cries wolf. It was a bare extrapolation
(utilization ÷ elapsed), which is a knife-edge at exactly the moment it matters: being
a point or two ahead of an even pace rendered as a confident→ 104%, and one idle
minute later as→ 99%. Three changes:- It waits until the window is half over. The meter was shown from 10% elapsed, but
the breach warning already refused to fire before 50% because the projection isn't
reliable before then — so the extension was printing a number it was too suspicious of
to warn on. Both now share one gate. Early in a window you see just5h 15%. - New
· on pacereading. Within ten points of 100% the projection is noise, so the
meter now says5h 53% · on paceinstead of committing to a number that flips on the
next refresh. Clearly under or over pace still shows the figure (5h 23% → 45%,
5h 95% → 119%). The breach warning clears the same band, so a popup can no longer
contradict an "on pace" meter. - It hides when you stop. The meter ignored whether you were still burning, so a
heavy start followed by an hour of idling kept projecting a breach. It now disappears
when you're idle, like the weekly ETA and the warnings already did.
- It waits until the window is half over. The meter was shown from 10% elapsed, but
- The burn readout says what it actually measures.
Burn: 1.6M tok/minwas ~95% cache
reads — a long session re-reads its whole context every turn — so the headline tracked
context size × turn count rather than anything you consume, and it sat under the "Claude
plan limits" heading as though it drove the pace projection (it never did). It is now its
own tooltip block, split into new work versus context re-reads, with the rate labeled as
an API-equivalent estimate on a subscription, matching the dashboard:
49.5k new tok/min · 849.1k/min context re-read · ≈ $0.80/min at API rates.
v1.3.1
Changed
- Per-table totals. Replaced the all-time grand-total strip (added in 1.3.0) with a
totals row at the foot of each dashboard breakdown — By model, By project, and By
branch now sum their Messages, Tokens, and Cost columns, in the same format as the rows
above. The All Time card already serves as the grand total, so the separate strip was
redundant; per-section totals are more useful.
v1.3.0
Added
- Grand total — a strip beneath the Today / This Month / All Time cards in the
dashboard, summing your all-time spend, messages, and active time in one place.
Active time reuses the session active-time measure (idle gaps longer than 15 minutes
are excluded), so it reflects time actually spent working, not wall-clock. On a
subscription the spend is labeled "≈ API" to match the rest of the dashboard.
Fixed
- Plan limits now stay live across multiple editor windows. With more than one
window open (and especially on a Max plan), each window used to poll Anthropic's
usage endpoint independently; the extra traffic could get a window rate-limited
(HTTP 429) and stuck showing a stale "Updated Nd ago" reading until you reloaded it.
A successful fetch is now published to a small shared file that every window reads,
so all open windows share one fetch (~one request between them instead of one each),
and a rate-limited window shows a sibling window's fresh data instead of falling back
to a stale cache. The shared file holds only the usage figures and a timestamp — never
your credentials — and lives alongside Claude's own files (honoringCLAUDE_CONFIG_DIR)
so Cursor and VS Code on the same account coordinate too.
v1.2.1
v1.2.0
Added
- Advisor — a new panel in the dashboard with ranked, money-quantified tips to
cut waste, computed entirely from your local usage data (no network, no API key,
no prompt text). Toggle withadvisor.enabled(on by default). It surfaces:- Routing routine turns to a cheaper model — when a period's spend includes a
run of short turns on an expensive model, it estimates what those same turns
would have cost one tier down (e.g. Opus → Sonnet) and shows the saving. - Long sessions re-processing context uncached — sessions with many turns but
low prompt-cache reuse, where context was paid for at full input price instead
of read back at ~1/10th. - Sessions running near the context limit — a habit of peaking above 80%
context, where Claude has to compact or drop earlier context to keep going. - A month-end spend forecast at your current pace.
- Subscription-aware framing — on a Pro/Max plan (flat fee, no per-token billing)
the dollar figures are labeled estimated API-equivalent usage (a gauge, not a
bill) and the advice — local cards and the AI explanation alike — is framed around
your 5-hour / weekly session limits instead of a bill. The Today / This Month /
All Time cost cards also carry a subtle "≈ API-equivalent" caption.
- Routing routine turns to a cheaper model — when a period's spend includes a
- Explain with AI (opt-in) — a button on the Advisor panel that turns the
computed signals into written, prioritized coaching. It calls Anthropic's Messages
API with your own API key (stored in VS Code Secret Storage via the new Set
Anthropic API Key command; never the Claude Code OAuth token). Only usage metadata
is sent by default; prompt text is included only if you enable
advisor.ai.includePromptsand confirm each time. The model is configurable with
advisor.ai.model(default Sonnet). Needs a pay-as-you-go Anthropic API key (a
Pro/Max subscription doesn't include API credit); the call surfaces Anthropic's
actual error — e.g. a 400 "credit balance is too low" with a one-click link to
billing — instead of a bare status code.
v1.1.1
Changed
- Clarified the new status-bar pace meter in the README and Marketplace overview:
5h 42% → 53%is the projected end-of-window utilization at your current pace
(here, on track to finish the 5-hour window at 53%). Spelled out in the hero
caption and the Predictive alerts feature description so it reads clearly before
install. No functional change.
v1.1.0
Added
- Predictive alerts — the extension now forecasts when you'll hit a plan limit
and warns you before you do, so you don't get cut off mid-session. On by default;
turn the whole feature off withpredictiveAlerts.enabled. It runs entirely on
the usage figures already shown and makes no network calls of its own.- Status-bar pace forecast, computed from your average consumption over the
current window so far — so each window is judged on its own timescale (the 5-hour
window over hours, the 7-day window over days) and a single percentage tick can't
manufacture an alarming number. The 5-hour window shows a live pace meter: the
projected end-of-window utilization at your current rate (5h 24% → 48%). The
weekly window shows a time-to-limit ETA only when you're on a trustworthy
track to breach it before reset. Toggle each withpredictiveAlerts.showFiveHourEta
andpredictiveAlerts.showWeeklyEta. - Proactive warnings. A notification fires when a window crosses a configurable
utilization threshold — 75% and 90% by default (predictiveAlerts.warnThresholds)
— and, withpredictiveAlerts.predictBreachon, when your current pace projects
you'll hit a limit before it resets. Each warning fires once per window, re-arms
when the window resets, and only fires while you're actually burning, so an idle
window never nags. - Burn rate in the status-bar tooltip: tokens/min and cost/min over a
configurable trailing window (predictiveAlerts.windowMinutes, default 15). - Model-cost advisor (
predictiveAlerts.modelAdvisor.enabled, off by
default): when recent turns show heavy spend on an expensive model for little
output, a one-time, dismissible hint suggests a cheaper model for routine work.
- Status-bar pace forecast, computed from your average consumption over the
v1.0.5
Added
- Pay-as-you-go extra usage monitoring (
showExtraUsage, off by default).
When your account has extra usage enabled, your spend beyond plan limits is
shown asextra <spent> / <cap>in the status bar, with detail in the tooltip
and an Extra usage section in the dashboard. Read from Anthropic's usage
response (extra_usage: minor units + currency); nothing is shown when your
account has extra usage disabled.