Problem
The menubar popover's headline number is currency-only. In the screenshot below the user sees $442.72 (Today) and $226.51 / $164.24 / … in the Activity rows, but cannot flip the same panel to show token totals as the primary metric without leaving the popover and running codeburn today --format=json | jq on the CLI.
For users on Claude Max / ChatGPT Pro flat-rate plans, the cost number is largely informational — what they actually want to monitor at-a-glance is token consumption (rate-limit headroom), not dollars.
Evidence (v0.9.7 on macOS 14+)
Verified by inspecting the installed bundle and CLI:
codeburn currency [code] switches currency (USD/EUR/GBP/CNY etc. via api.frankfurter.app), NOT cost↔tokens. Strings present in CodeBurnMenubar binary: SupportedCurrency, setCurrencyCode:, _currency, currencySymbol, savingsUSD.
defaults read org.agentseal.codeburn-menubar exposes only 4 keys, all housekeeping (UpdateChecker.lastCheckDate, UpdateChecker.latestVersion, codeburn.loginItemRegistered, codeburn.starBannerDismissed). No displayMode / headlineMetric / showTokens key.
- CLI has no
config subcommand and no --unit flag on today / report. codeburn --help top-level commands: report status today month export menubar currency model-alias plan optimize compare yield.
- Binary does contain an
InsightMode symbol, suggesting the data layer can already produce both views — only the user-facing toggle is missing.
So the data is already computed (inputTokens / cacheReadTokens / cacheWriteTokens / effectiveTokens fields are in the JSON payload) — the gap is purely UI exposure in the popover.
Tokens are partially visible already, but inconsistently
- Inside the
Trend tab the chart Y-axis IS tokens (Last 19 days 267.7M tokens, Avg/day 14.1M tok, Peak 52.1M tok, Yesterday 12.7M tok).
- But the popover headline (
Today $442.72), the Activity rows (Coding $226.51), and the menubar status-icon number are all currency-only.
This split forces the user to mentally translate between two metrics on the same panel.
Proposal
Add a single toggle that flips headline + Activity rows + menubar status icon between Cost and Tokens. Three placement options, in order of preference:
- Tab next to
Trend / Forecast / Pulse / Stats → e.g. Cost | Tokens segmented control at panel top. Same affordance as the existing tab strip, zero new visual vocabulary.
- Right of the
$ USD button in the footer → e.g. $ USD becomes $ USD ⇄ Tokens cycler. Keeps unit-related controls grouped, but conflates "currency" with "metric" semantically.
- CLI-only first →
codeburn config set menubar.headline tokens (persist to ~/.config/codeburn/config.json), menubar reads on next refresh. Lowest UI risk, fastest to ship.
Either way the underlying InsightMode enum probably already supports it — this is a UI-surface change, not a data-layer change.
Related
Environment
- CodeBurn v0.9.7 (CLI + Menubar app)
- macOS 14+, M3 Max
Problem
The menubar popover's headline number is currency-only. In the screenshot below the user sees
$442.72(Today) and$226.51 / $164.24 / …in the Activity rows, but cannot flip the same panel to show token totals as the primary metric without leaving the popover and runningcodeburn today --format=json | jqon the CLI.For users on Claude Max / ChatGPT Pro flat-rate plans, the cost number is largely informational — what they actually want to monitor at-a-glance is token consumption (rate-limit headroom), not dollars.
Evidence (v0.9.7 on macOS 14+)
Verified by inspecting the installed bundle and CLI:
codeburn currency [code]switches currency (USD/EUR/GBP/CNY etc. viaapi.frankfurter.app), NOT cost↔tokens. Strings present inCodeBurnMenubarbinary:SupportedCurrency,setCurrencyCode:,_currency,currencySymbol,savingsUSD.defaults read org.agentseal.codeburn-menubarexposes only 4 keys, all housekeeping (UpdateChecker.lastCheckDate,UpdateChecker.latestVersion,codeburn.loginItemRegistered,codeburn.starBannerDismissed). NodisplayMode/headlineMetric/showTokenskey.configsubcommand and no--unitflag ontoday/report.codeburn --helptop-level commands:report status today month export menubar currency model-alias plan optimize compare yield.InsightModesymbol, suggesting the data layer can already produce both views — only the user-facing toggle is missing.So the data is already computed (
inputTokens/cacheReadTokens/cacheWriteTokens/effectiveTokensfields are in the JSON payload) — the gap is purely UI exposure in the popover.Tokens are partially visible already, but inconsistently
Trendtab the chart Y-axis IS tokens (Last 19 days 267.7M tokens,Avg/day 14.1M tok,Peak 52.1M tok,Yesterday 12.7M tok).Today $442.72), the Activity rows (Coding $226.51), and the menubar status-icon number are all currency-only.This split forces the user to mentally translate between two metrics on the same panel.
Proposal
Add a single toggle that flips headline + Activity rows + menubar status icon between Cost and Tokens. Three placement options, in order of preference:
Trend / Forecast / Pulse / Stats→ e.g.Cost | Tokenssegmented control at panel top. Same affordance as the existing tab strip, zero new visual vocabulary.$ USDbutton in the footer → e.g.$ USDbecomes$ USD ⇄ Tokenscycler. Keeps unit-related controls grouped, but conflates "currency" with "metric" semantically.codeburn config set menubar.headline tokens(persist to~/.config/codeburn/config.json), menubar reads on next refresh. Lowest UI risk, fastest to ship.Either way the underlying
InsightModeenum probably already supports it — this is a UI-surface change, not a data-layer change.Related
Environment