Release notes

FEATURE

Report upgrades: auto-detecting subscriptions and a new project donut chart

The HTML analysis report now displays a wealth of new insights. It introduces a "Your subscription" section that automatically detects which Claude tier or Codex ChatGPT plan you're paying for and when the subscription started, directly from your local authorization files (rest assured, it strictly ignores your passwords and emails). If you share the report and toggle "Hide project names", the subscription date gets pixelated out for privacy too. There is also a beautiful new "Project-share donut chart" that breaks down your usage, assigning unique colors to your top 6 hungriest projects, folding the rest into "Other", and boldly stamping the total in the center. Furthermore, the system had secretly been calculating the usage duel between Claude and Codex (how many tokens, share, and cost each consumed), and this "Claude vs Codex" head-to-head comparison is now finally visible. It's like getting a medical checkup: they used to just hand you a single total score, but now the report spells out exactly which premium health package you bought, gives you a vivid color chart of exactly where you're storing the most fat, and even explicitly compares the muscle mass of your left arm versus your right.

FEATURE

Internal pipelines polished, saving your computer from doing double duty

Your reports now generate faster because the system dropped some silly internal calculation habits. When calculating your report costs, the system used to be deeply confused: it would sum up all the numbers once, and then redundantly re-calculate everything piece by piece inside a loop. If you had massive amounts of data, it was effectively doing double the work for nothing; it now smartly accumulates the total in a single pass, saving processing time. We also cleaned up the clipboard code for the "copy command" buttons in the report so it no longer relies on two duplicated chunks of logic, and we added a clear internal note to the hard-coded TWD exchange rate explaining it's just a static display estimate rather than a live network fetch. It's like a restaurant checkout counter: the cashier used to punch every single receipt into the calculator once, and then painstakingly re-add every itemized dish again while the line grew out the door; now they simply tally the total in one smooth motion. The cash register's software is much cleaner now, too, sporting a sticky note that reminds the new hires, "The exchange rate here is just an estimate, don't try matching it against the morning news."

Original changelog

Original changelogReport upgrades: auto-detecting subscriptions and a new project donut chart
**"Your subscription" section in the HTML report**: auto-detects Claude (plan + subscription start date) and Codex (ChatGPT plan + subscription start date) from the local OAuth account files. Only the plan name and start date are read — tokens, emails and other secrets are never touched. When sharing the report, the subscription date is masked together with the "Hide project names" toggle. Adds the `subscription.py` module and its tests.
**Project-share donut chart in the HTML report**: pure-SVG (zero external deps) breakdown of token share per project; the top 6 projects get their own colour, the rest fold into "Other", and the centre shows the total.
**"Claude vs Codex" comparison section in the HTML report**: surfaces the per-agent usage (tokens / share / cost) that `build_report_data` already computed but never displayed.
Original changelogInternal pipelines polished, saving your computer from doing double duty
**Double-counted report cost**: `build_report_data` summed cost once over all entries and then recomputed it per entry inside the loop — effectively doubling the work on large datasets. Now accumulated once inside the loop.
**Duplicated clipboard code in the report's "copy command" button**: the tip-copy button now reuses the shared `copyText()` helper instead of re-implementing the legacy-browser fallback.
**Hard-coded TWD rate**: the USD→TWD estimate in the report is now a named `_USD_TO_TWD` constant with a note that it is a display estimate, not a live FX rate.