Repository navigation
v1.11.4 - per-machine rollups report their own usage, not the account ledger
Install
Download copilot-usage-dashboard-1.11.4.vsix below, then:
code --install-extension copilot-usage-dashboard-1.11.4.vsix
Fixed — every system reported the whole account's spend
The Systems — Combined Usage table credited each machine with the entire account's credits. A Linux laptop with 3 sessions and 97 requests reported 42,069 credits — more than a workstation with 221 sessions and 2,564 turns — and the combined row then added that same figure once per machine.
1.11.3 made the headline adopt GitHub's quota_snapshots ledger. That is right for the hero tile, but it is an account figure: on a pooled Business or Enterprise seat it covers every machine, every IDE, github.com, the cloud agent, and every other member of the org. The per-machine rollup published over Settings Sync kept reading that same field, so each system republished the account total as its own.
Machines now publish localTotalCredits — the same number before the ledger delta is folded in — with sessions, turns and tokens clipped to the billing cycle and to VS Code chat. The headline tile is unchanged and still reconciles with github.com exactly.
On the token counts this surfaced: they were never wrong. Agent sessions re-send the whole conversation each round, so 9 user messages became 97 LLM calls, and 93.6% of the 6.4M gross input tokens were cache reads. Large totals from a handful of sessions are expected.
Fixed — a machine's daily history was discarded on every publish
The slot declared a 120-day retention window, but byDay was replaced wholesale rather than merged on each write. It therefore only ever held what the current scan could still see — one or two days in practice. Debug logs rotate, workspace storage gets cleaned up, and a closed cycle stops being recomputed, so days that had been recorded correctly vanished on the next publish. The retention window applied to nothing.
This matters most for a machine that is gone: machineId changes after an OS reinstall, so a rebuilt machine gets a fresh slot and the old one can never republish. Its slot is the only surviving record of that system.
byDay now accumulates. A recomputed day supersedes the stored one only when non-zero — a zero means the scan lost sight of that day, not that the day was free.
Fixed — the Systems table ignored the range selector
It was keyed off each slot's single cycleCredits scalar and hard-filtered to the current billing cycle, so a system could only ever appear in the one cycle it last reported — including under "All Time". A retired machine whose slot froze in a closed cycle was reachable from no range at all.
Per-system credits are now summed from the synced byDay map for the selected range, so the table answers the range selector like every other panel. Sessions, turns and tokens are a whole-slot snapshot rather than a per-day series, so they render as — outside the cycle a system last reported instead of being misattributed. The combined-overage row is withheld for any range that is not exactly the current cycle, since the allowance is per-cycle.
Changed — pre-1.11.4 systems degrade honestly instead of disappearing
Slots now carry a schema field rather than the sync key being versioned. Bumping the key would have hidden every machine that had not updated yet, since a machine only republishes when its own VS Code restarts.
A system still on an older build keeps its row — host, platform, session and turn counts, last seen — tagged pre-1.11.4, with its credits shown as — and excluded from the combined total until it updates. The Systems table also renders for a single system now; that stopped being a restatement of the headline once the headline became the account-wide ledger.
Full changelog: https://github.com/pvjagtap/github-copilot-usage-dashboard/blob/v1.11.4/CHANGELOG.md