v0.10.0 — subscription usage stops counting as money spent
Highlights
- Subscription usage is no longer counted as money spent. A request served by a Claude
Pro/Max provider was priced at Anthropic's API list rate and recorded as ordinary cost —
but that traffic is already paid for by a flat monthly fee, so its marginal cost is zero.
Three things followed: the Costs page drew it as "paid", every spend figure overstated what
you owed, and — the one that could actually bite — ablockbudget could refuse requests
once that notional value crossed its threshold, with nothing saying so. ChatGPT Plus/Pro
traffic is usually unaffected:chatgpt.comis not in the pricing catalog's host map, so
those requests record no cost at all. - The number is kept, not discarded. Each ledger row now snapshots the kind of provider
that served it, and spend splits into what you owe versus what your subscription served. The
Costs headline reports money owed and says it excludes subscription; the subscription figure
sits beside it as "served on subscription", so the previous combined total is still
reconstructable — and simply absent when a range has none. That figure is exactly what tells
you whether a subscription is paying for itself. - The split reaches every figure, not just the headline. The timeseries and the
model/provider/agent breakdowns exclude it too, so the chart can't disagree with the number
above it. The distribution bar gains a fourth segment for prepaid traffic — a second
intensity of the existing accent, adjacent to the paid one, so it still reads as one block
subdivided — and every category now shows its count next to its percentage. - Budgets declare what they count. A budget carries a metering basis: money spent, or
money spent plus subscription usage priced at API rates. Metering notional value is a crude
proxy for a flat-rate plan's capacity, but it is the only usage throttle polyrouter has, so
it stays available as an explicit choice in the Limits form rather than being removed.
Budget alerts state which basis they metered. - Scrolling the sidebar no longer drags the whole dashboard off the top of the window, and
its lower items — the account menu included — stay reachable on a short viewport.
Upgrade notes
- A migration runs on boot. It is additive: two nullable columns on the cost ledgers with
no backfill, and a metering-basis column on budgets. - Budget enforcement does not change. Every existing budget is backfilled to the
notionalbasis and meters exactly what it metered before. Switching a budget to count only
money spent is opt-in, per budget, in the Limits form. New budgets default to money spent. - Your Spend figure will drop if you use a subscription provider — it now reports money
owed. The subscription value is shown beside it, not lost. - Historical requests cannot be classified. Rows recorded before this release have no
provider-kind snapshot, and inferring one from today's providers is exactly the rewrite the
snapshot exists to prevent. They keep counting toward spend and are reported as their own
unclassified component. Expect a visible step in historical figures at the upgrade boundary;
it ages out of the range naturally. - No new environment variables, no config changes.
Full package changelogs live in packages/*/CHANGELOG.md.