v0.12.0 — account-switch data fixes, a Requests page that stays true, and a dashboard that works on a phone
LatestHighlights
- Fixed: another account's data could stay on screen after switching accounts. If more
than one person signs in through the same browser, this is the reason to upgrade. Signing
out and back in as a different user could leave the previous account's request rows, its
spend totals and cost breakdowns, and — the severe half — its captured prompt and
response text in the inspector, the one category of content the system otherwise refuses
to store at all. A response begun under the previous account could also still commit under
the next. No server-side isolation failure was involved: every API response was correctly
scoped to whoever asked, and nothing was ever sent to the wrong principal. The defect was
in what the browser held onto locally, so loading the new build fixes it completely. The
guard now lives in the shared slice runner and at the identity boundary itself, so every
current loader is covered at once and every future one by default — a per-loader fix has
to be remembered each time, which is how the gap opened. - The Requests page stops going quietly stale. It froze its time window at load and
nothing ever triggered another read, so it silently stopped being true the moment you
opened it — and the new live band above it made that worse, reading as "this page is
current" while the list below was not. Page 1 now refreshes on the same floored cadence
the Overview uses, through the same shared budget, so a burst of settling requests cannot
become a query storm. Once you have clicked "Load more" the list is left alone and a
"N new" pill appears instead — discarding pages you explicitly asked for in order to
show fresher rows is the worse trade. A probe that fails says so rather than reading as
"nothing new". - A finished request stops claiming to be running. A settled request lingers for a few
seconds while its durable row is written, and the whole time it said Running with a
pulsing dot. It now says Finishing, without the live indicator. This was a defect on
the Overview card too, masked there by a handoff that usually completes quickly. - Live in-flight rows on the Requests page. The band of currently-running requests that
the Overview has always had now appears above the request list as well, with the same
behaviour and the same degraded-path polling when the event stream is unavailable. - The Overview breakdown panel switches between spend and tokens. The by-model,
by-provider and by-agent breakdown can now be read in tokens instead of dollars, which is
the figure that actually explains a cost — a model that is cheap per token can still
dominate a bill on volume.GET /api/analytics/breakdowngains an optionalmetric
parameter defaulting tospend, so existing callers are unaffected. - The dashboard works on a phone. Every page reflows at phone widths rather than
demanding a horizontal scroll; overlays and dialogs are reachable sheets that account for
the on-screen keyboard and the browser's own chrome instead of being pushed off-screen by
it; and routing rules can be reordered by touch, which previously required a mouse.
Upgrade notes
- No migrations and no schema change — a drop-in upgrade from 0.11.0.
- Two token figures deliberately change value. Token totals now count both cost ledgers
(an escalated cascade attempt burns tokens you were billed for) and include cached tokens
(input_tokensis recorded as uncached input). The Overview headline will therefore
read higher than it did for the same range — more so the more caching and cascade
escalation your traffic does. Historical cost is untouched: no price snapshot is
recomputed and no recorded cost changes. GET /api/analytics/breakdowngains an optionalmetricparameter, defaulting to
spend. Existing callers see no change; its rows now additionally carry the four token
components and anestimatedTokensfigure.- Nothing to configure. The account-switch fixes, the Requests-page freshness behaviour
and the responsive layout all take effect on the new build with no setting to change.
Full package changelogs live in packages/*/CHANGELOG.md.