Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 19 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,19 @@ publishing empty notes.
arithmetic, not a bill, and the old line said nothing the absence of `≥`
did not already say. With unpriced models the `▲ N model(s) unpriced`
caveat still takes the line.

- **The Overview cards say what kind of money they are, in order.** SPEND,
TOKENS, TOKEN COST, AVG USAGE RATE, TOOLS & SITES — the actual bill first,
the work done, the API-rate hypothetical it would have cost, how hard the
plan is being driven, the machine's inventory last. SPEND now carries only
real money: the saving-vs-API-rates line moved off it (the comparison lives
on TOKEN COST and in the Cost view), and in its place the card says whether
extra usage is in play — `no extra usage` while the metering windows have
never pegged, `▲ extra usage likely` once one has. AVG USAGE RATE is new:
the mean peak of the 5-hour metering windows, the number that predicts a
cap hit before it bills. TOOLS and AI SITES folded into one card.

### Added

- **The Usage view can show the plan's own meter.** <kbd>m</kbd> swaps the
token table for Claude's 5-hour metering windows — per day, how many were
started and the peak utilisation each reached, with the deepest window
drawn as a bar against the cap itself. Reconstructed from the samples
Claude Desktop already keeps in `plan-usage-history.json`; timestamps and
percentages are all that is read, the org id in the file is never kept, and
a machine without the file gets the absence stated rather than a zero. The
window count is a floor — samples exist only while Claude Desktop runs.
- **A SPEND card that prices seats, and a TOKEN COST card that prices tokens.**
The Overview's old SPEND figure — the window's tokens at API list rates — now
sits under the name it deserved, **TOKEN COST**. The **SPEND** card answers
Expand All @@ -54,6 +56,14 @@ publishing empty notes.
Cost view's subscription table picks up detected plans the same way, still
suffixed `est`. Detected plans persist in the ledger (now version 5, so the
first scan after upgrading re-reads transcripts once).
- **The Usage view can show the plan's own meter.** <kbd>m</kbd> swaps the
token table for Claude's 5-hour metering windows — per day, how many were
started and the peak utilisation each reached, with the deepest window
drawn as a bar against the cap itself. Reconstructed from the samples
Claude Desktop already keeps in `plan-usage-history.json`; timestamps and
percentages are all that is read, the org id in the file is never kept, and
a machine without the file gets the absence stated rather than a zero. The
window count is a floor — samples exist only while Claude Desktop runs.
- **The Projects view names the tools behind each repository.** Each project
row ends in a `TOOLS` column listing the tools whose sessions ran there,
behind the same series texture the usage chart keys that tool by — so two
Expand Down
30 changes: 16 additions & 14 deletions docs/guide/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,21 +59,23 @@ one of those is a caveat rather than a count.

| Card | Figure | Qualifiers |
|---|---|---|
| **SPEND** | What the seats actually cost, `$X/mo` | Where the figures came from (`N configured seat(s)`, `N plan(s) detected`), the saving against API rates, and `▲ N tool(s) unpriced` if any |
| **TOKEN COST** | The window's tokens at API list rates | `over N days · ≈ $X/day`, the period delta, and `▲ N model(s) unpriced` — or `at API list rates` when none are, because the figure is list-rate arithmetic, not a bill |
| **SPEND** | What is actually paid: the seats, `$X/mo` | Where the figures came from (`N configured seat(s)`, `N plan(s) detected`), whether extra usage is in play (`no extra usage`, or `▲ extra usage likely` once a metering window has pegged), and `▲ N tool(s) unpriced` if any |
| **TOKENS** | Everything billable, cache included | Message count, distinct model count |
| **TOOLS** | AI tools detected | `▲ N autonomous`, vendor count |
| **AI SITES** | Distinct AI domains visited | Visit total, and `▲ N browser(s) unreadable` if any |

SPEND and TOKEN COST are different questions about the same tokens. TOKEN COST
is arithmetic — the window's usage priced per token at list rates. SPEND is
what is actually paid for the seats behind that usage: a figure from
`[cost.subscriptions]` is shown plainly; one from a plan the tool's own
transcripts name (Codex writes `plan_type` beside its token counts) is priced
at that plan's list rate and marked `≈` an estimate; a tool with usage but no
figure makes the total `≥` a floor. Knowing nothing, the card shows `–` and
says how to configure it — it never guesses, and it still reads no account
state.
| **TOKEN COST** | The window's tokens at API list rates | `over N days · ≈ $X/day`, the period delta, and `▲ N model(s) unpriced` — or `at API list rates` when none are, because the figure is list-rate arithmetic, not a bill |
| **AVG USAGE RATE** | Mean peak of the 5-hour metering windows | Window count, hottest window (`▲` amber from 90%), and the pointer to <kbd>m</kbd> on Usage for the per-day breakdown |
| **TOOLS & SITES** | Installed tools `·` AI domains visited | `▲ N autonomous`, visit total, and `▲ N browser(s) unreadable` if any |

The order is deliberate: the actual bill first, then the work done, then what
that work *would* have cost, then how hard the plan is being driven, then the
machine's inventory. SPEND carries only real money — seats from
`[cost.subscriptions]` shown plainly, a plan the tool itself names priced at
list rate and marked `≈` an estimate, a tool with usage but no figure making
the total `≥` a floor — and the API-rate hypothetical never appears on it;
that comparison lives on TOKEN COST and in the Cost view. Knowing nothing,
SPEND shows `–` and says how to configure it — it never guesses, and it still
reads no account state. AVG USAGE RATE comes from the same metering samples
as the Usage view's <kbd>m</kbd> toggle, and shows `–` on a machine without
them rather than a zero that would read as idleness.

### The rate and the delta

Expand Down
Loading