Repository navigation
The panel draws what the store was keeping
totals.json has carried a per-model and a per-day dimension since 0.24.0, and nothing rendered
them — the panel showed one lifetime dollar figure and a tier count, so it could not answer which
backend avoided it or is this trending.
The Settings view now shows a ranked per-model table (model · requests · spend avoided, with a
bar restating each figure) and a per-day sparkline over a 7 / 30 / 90 day window.
Hand-built inline SVG, no charting library. A CDN script would break the guarantee that a
default install reaches nothing off-machine, and a vendored minified copy cannot be reviewed in a
diff — which is the only review this project performs. What that costs is zoom and tooltips, so
every value the chart draws is also readable as text: a table beside it, and the graphic's own
label.
The caption states what the chart cannot show. Per-day recording began when 0.24.0 landed on a
given install, and the store evicts its oldest day past a retention cap — so a lifetime figure
legitimately covers more than any chart of it. The caption names the drawn range, how much of the
lifetime total falls outside the window, and how much is in no day bucket at all.
/api/stats names what it sends
Building that renderer meant deciding what the endpoint returns. It had been shipping the
measurement rollup verbatim, so its payload was whatever the rollup happened to hold — three
lifetime fields added for the CLI's benefit, one able to reach ~52 KB, arrived on the panel with
nobody deciding it. The endpoint now declares its own fields, and the two breakdowns reshape into
ordered lists so the ranking and the per-day gap-filling are decided and tested server-side rather
than left as rules the browser has to know.
Internal
Nothing here changes what the product does.
wheelis no longer a build requirement. setuptools builds wheels with its own
bdist_wheel, so the entry resolved a distribution the build never used. The artifacts were
verified equivalent down to the wheel'sRECORD, and a real--no-binarysdist install confirmed
the build never needed it.- The data model's concurrency inventory names the first-run state migration — the one
cross-process write every console script performs at startup, previously absent from the list. - A citation that pointed at a file outside the public tree is fixed, and the class is now
closed by a test that resolves every cited doc against whatgitactually tracks, rather than by
a sweep someone has to remember to re-run. - GitHub Actions are pinned to commit SHAs. Every action previously ran from a mutable major
tag, so what executed was whatever that tag pointed at on the day. A test guards both halves of
each pin — the SHA, and the version comment the update mechanism reads.
Upgrading
No runtime dependency floor moved. httpx >= 0.27, < 1 and PyYAML >= 6.0, < 7 are unchanged, so
nothing about what you may install has narrowed and no announcement is owed under
docs/design/deprecation-policy.md § Dependency floors.
Known limit carried into this release: the per-day chart's history starts where 0.24.0 landed on
your install, not where the lifetime figure starts. The caption says so on every render rather than
letting a narrower window read as a quieter month.