Releases: getagentseal/codeburn
v0.9.14
What's New
Highlights since v0.9.12:
Added (CLI)
- Browser dashboard.
codeburn webserves a local React dashboard with charts and the same task, model, tool, and project breakdowns as the TUI. Reads from disk, binds to localhost. (#531, #533) - Combine usage across your devices.
codeburn shareandcodeburn devicesjoin usage across your machines on the local network, PIN-paired. You can also discover and pair devices from the browser. (#532, #534, #536) - New providers: Grok Build (#521), ZCode / z.ai GLM-5.2 (#537), Hermes Agent (#544), Kiro CLI sessions (#502), and zerostack (#519, thanks @kevinpauer).
codeburn overview, a copy-pasteable plain-text monthly summary. (#528, #535)- Codex credit usage alongside dollar cost (#510), MCP server usage in JSON/CSV exports (#514), and JSON output for
optimizeandyield(#500). - OpenCode 1.1+ file-based sessions (#523) and a Claude-scoped agent-type breakdown.
Fixed (CLI)
- Model names in reports no longer show internal pricing-alias keys: GLM-5.2, Grok Build, gpt-5.5, and gpt-5.3-codex-spark all label correctly. (#548, #550, #539)
- Daily cache bumped to v9 so newly supported providers backfill across history without a manual cache clear. (#550)
- Cursor range-aware scan (#512), cursor-agent workspace-less layout (#542), Claude project-name grouping (#540), Copilot shell and skills display (#527), Codex MCP-call attribution (#513), Antigravity CLI layout (#541).
macOS menubar
- Custom daily budget that respects the display metric (#505, #506), agent tabs ordered by usage for the selected range (#549), fewer keychain prompts on refresh (#491), the macOS 27 right-click menu (#472), and installer HTTP-proxy support (#475).
Thanks to @ozymandiashh, @jonjozwiak, @kevinpauer, @tvcsantos, @steelp02, @sleicht, @theparlor, and @vaibhavarora14 for contributions this release.
The macOS menubar app is published separately as mac-v0.9.14.
What's Changed
- chore(ci): bump GitHub Actions to Node 24 versions by @iamtoruk in #468
- Track + break down workflow/ultra subagent usage (fix #470) by @iamtoruk in #471
- fix(mac): restore right-click status-item menu on macOS 27 by @theparlor in #472
- fix(menubar): support installer HTTP proxies by @sleicht in #475
- fix(menubar): stop repeated keychain prompts on token refresh (#490) by @iamtoruk in #491
- feat(copilot): OTel cache-token parsing (#477) + maintainer review fixes by @iamtoruk in #498
- feat(providers): [copilot.ts]Add OTel cache token parsing including tests and regression checks. by @steelp02 in #477
- fix(menubar): reduce repeated status parsing (#486) + clock-skew guard by @iamtoruk in #499
- fix(menubar): reduce repeated status parsing by @vaibhavarora14 in #486
- feat(cli): JSON output for optimize and yield (#492) by @iamtoruk in #500
- fix(cli): validate --provider and make non-TTY report deterministic by @iamtoruk in #501
- feat(kiro): add Kiro CLI session discovery and parsing (#476) by @iamtoruk in #502
- test(usage-aggregator): fix timeout flake by building against an empty HOME by @iamtoruk in #503
- test(cli-proxy-path): fix load-timeout flake by raising the test timeout by @iamtoruk in #504
- feat(menubar): daily budget alert respects the display metric (Cost or Tokens) (#497) by @iamtoruk in #505
- feat(menubar): custom daily budget amount by @iamtoruk in #506
- fix(menubar): explicit observation dependency for the budget flame by @iamtoruk in #507
- fix(menubar): cost budget stays USD; flag empty custom budget by @iamtoruk in #508
- feat(menubar): polish status-item menu + About tab (Star/Sponsor) by @iamtoruk in #509
- feat(codex): compute Codex credit usage (#408, #495) by @iamtoruk in #510
- fix(menubar): drop ' tok' suffix from Total Tokens metric (#497) by @iamtoruk in #511
- fix(cursor): range-aware scan instead of blind 250k ROWID cap (#482) by @iamtoruk in #512
- fix(codex): attribute MCP calls emitted as event_msg/mcp_tool_call_end (#478) by @iamtoruk in #513
- feat(export): surface MCP server usage in JSON and CSV exports (#496) by @iamtoruk in #514
- Overhaul README: story layout, logo wall, tables, refreshed sponsor section by @iamtoruk in #516
- docs: finish README overhaul (collapsible sections, 'AI tools' wording) by @iamtoruk in #518
- Add zerostack provider by @kevinpauer in #519
- docs: add zerostack to the supported-tools logo wall by @iamtoruk in #520
- feat(providers): add Grok Build provider by @iamtoruk in #521
- docs: add Grok Build to the supported-tools logo wall by @iamtoruk in #522
- feat(opencode): read file-based JSON sessions (OpenCode 1.1+) by @iamtoruk in #523
- fix(dashboard): scope the plan banner to its own provider tab by @iamtoruk in #524
- feat(overview): plain-text monthly usage overview command by @iamtoruk in #528
- chore(dev): silence the tsx module.register deprecation warning by @iamtoruk in #529
- fix: fix and improve test isolation and collision with environment by @tvcsantos in #530
- feat(web): local React/Recharts dashboard (codeburn web) by @iamtoruk in #531
- feat(sharing): securely combine usage across your own devices by @iamtoruk in #532
- feat(web): show usage by device in the dashboard by @iamtoruk in #533
- feat(web): in-dashboard device discovery, share-from-browser, redesign + hardening by @iamtoruk in #534
- feat(overview): cache in/out tokens table, roomier tables by @iamtoruk in #535
- feat(devices): joined Totals by machine report by @iamtoruk in #536
- feat(providers): add ZCode (z.ai GLM-5.2) usage provider by @iamtoruk in #537
- docs: add ZCode to the supported-tools list by @iamtoruk in #538
- Fix Claude Code project names collapsing to a parent folder by @ozymandiashh in #540
- feat(providers): add Hermes Agent provider by @iamtoruk in #544
- Distinguish gpt-5.3-codex-spark from base GPT-5.3 Codex label by @ozymandiashh in #539
- fix(cursor-agent): ingest workspace-less CLI transcript layout by @ozymandiashh in #542
- fix(models): price Hermes lowercase glm-5.2 the same as GLM-5.2 by @ozymandiashh in #545
- fix(antigravity): read current agy antigravity-cli on-disk layout by @ozymandiashh in #541
- fix(copilot): Correct shell commands and skills/agents display by @jonjozwiak in #527
- fix(menubar): surface CLI stdout/stderr on decode failure (#515) by @iamtoruk in #547
- fix(pi): label gpt-5.5 as GPT-5.5 by @iamtoruk in #548
- fix(menubar): show every active agent as a tab, ordered by usage for the selected range by @iamtoruk in #549
- fix: clean model names in reports and re-hydrate daily cache for new providers by @iamtoruk in #550
- chore(release): 0.9.14 by @iamtoruk in #551
New Contributors
- @theparlor made their first contribution in #472
- @steelp02 made their first contribution in #477
- @kevinpauer made their first contribution in #519
- @jonjozwiak made their first contribution in #527
Full Changelog: v0.9.12...v0.9.14
Menubar v0.9.14
Install with:
npm install -g codeburn
codeburn menubar
That command drops the app into ~/Applications, records the persistent
codeburn CLI path used by the menubar, verifies the downloaded checksum,
clears quarantine after bundle verification, and launches it. If you download
the zip from this page directly and macOS shows "cannot verify developer",
right-click the app in Finder and pick Open to whitelist it once.
Menubar v0.9.13
Install with:
npm install -g codeburn
codeburn menubar
That command drops the app into ~/Applications, records the persistent
codeburn CLI path used by the menubar, verifies the downloaded checksum,
clears quarantine after bundle verification, and launches it. If you download
the zip from this page directly and macOS shows "cannot verify developer",
right-click the app in Finder and pick Open to whitelist it once.
v0.9.12
What's New
Highlights since v0.9.11:
Added (CLI)
- MCP server —
codeburn mcpexposesget_usageandget_savingsto AI agents over stdio, with project names pseudonymized by default. (#429) - New providers: Devin (#444), Antigravity IDE (#418), JetBrains — IntelliJ/DataGrip via Copilot (#433), coder/mux (#438), and an opt-in Vercel AI Gateway datasource (#432).
- Automatic pricing gap-fill from models.dev and OpenRouter for models LiteLLM hasn't indexed yet (e.g. Claude Fable 5). (#457)
- Proxy-aware cost attribution —
codeburn proxy-pathreports subscription-backed spend (e.g. Claude Code over Copilot) as net out-of-pocket, leaving actual cost untouched. (#417, #459) - Local-model savings —
codeburn model-savingsreports the counterfactual spend vs a paid baseline; the local call still costs $0. (#421) - CNY currency (#430) and a contribution heatmap insight (#437).
Fixed (CLI)
- Per-file parse isolation — one malformed session file no longer aborts the run or empties the daily-history trend. (#441, #450, #453)
- Codex fork dedupe undercounting (#458) and cache-read double-counting in the models report (#447).
- Model-name matching on the version boundary so
claude-opus-4-6andclaude-opus-4-8don't collapse. (#417) - Critical-path fetch timeouts so a stalled network can't wedge the CLI or menubar. (#445, #448)
- Vercel AI Gateway data now flows through aggregation instead of reporting $0; Fable 5 and Mythos 5 price correctly. (#432, #466)
Fixed (macOS menubar)
- Refresh reliability — awaits the CLI exit via its termination handler and caps concurrent spawns, fixing the "Loading…" wedge after a long idle. (#462)
- Recover from stuck loading orphaned across sleep/wake (#412); correct currency picker (#435).
The macOS menubar app is published separately as mac-v0.9.12.
What's Changed
- fix(menubar): recover from stuck loading when in-flight entry is orphaned by @iamtoruk in #412
- Fix Antigravity hook stale CLI paths by @ozymandiashh in #410
- fix(menubar): run CLI exit-wait and timeout off the cooperative pool by @iamtoruk in #426
- feat(mcp): codeburn mcp server exposing usage + savings to AI agents by @iamtoruk in #429
- Add CNY currency support by @PorunC in #430
- fix(menubar): use SupportedCurrency enum in settings picker by @iamtoruk in #435
- feat(menubar): configure CLAUDE_CONFIG_DIRS via Settings by @iamtoruk in #436
- Add contribution heatmap insight by @PorunC in #437
- feat(providers): add coder/mux as a datasource by @ThomasK33 in #438
- refactor(mux): drop dead openai reasoning fallback by @iamtoruk in #446
- fix(models-report): stop double-counting cache reads by @iamtoruk in #447
- fix(network): add timeouts to critical-path fetches (#445) by @iamtoruk in #448
- fix(parser): tolerate string message content; isolate per-file parse failures (#441) by @iamtoruk in #450
- fix(parser): cache parse failures so broken files aren't re-read every run (#441 follow-up) by @iamtoruk in #453
- feat(cli): local-model cost savings, re-homed onto current main (#421) by @iamtoruk in #454
- feat(cli): track local-model cost savings against a paid baseline (#421) by @justingheorghe in #423
- feat(menubar): add macOS app icon by @iamtoruk in #455
- feat: add JetBrains (IntelliJ/DataGrip) session discovery and parsing by @zuberikea in #433
- test(copilot): JetBrains coverage + Windows path inference fix (#433 follow-up) by @iamtoruk in #456
- fix(codex): content-address fork dedupe key to stop undercounting divergent events by @iamtoruk in #458
- feat(pricing): Fable 5 + Mythos 5 launch pricing + names by @iamtoruk in #463
- feat(pricing): automatic gap-fill from models.dev and OpenRouter by @iamtoruk in #457
- chore(pricing): drop manual Fable/Mythos patch, rely on gap-fill by @iamtoruk in #464
- fix(menubar): await terminationHandler, not a blocked queue thread (real fix for the Loading wedge) by @iamtoruk in #462
- feat(pricing): proxy-aware cost attribution for subscription-backed Claude (#417) by @iamtoruk in #459
- fix(menubar-tests): compile fix for localModelSavings/savingsUSD by @iamtoruk in #465
- feat: add devin provider by @tvcsantos in #444
- feat(antigravity-ide): added support for antigravity IDE by @KirDE in #418
- fix(cursor): period-aligned lookback; add Vercel AI Gateway provider by @sisodiabhumca in #432
- fix: Vercel Gateway aggregation, Mythos pricing, Claude parse isolation by @iamtoruk in #466
- chore(release): 0.9.12 by @iamtoruk in #467
New Contributors
- @PorunC made their first contribution in #430
- @ThomasK33 made their first contribution in #438
- @justingheorghe made their first contribution in #423
- @zuberikea made their first contribution in #433
- @tvcsantos made their first contribution in #444
- @KirDE made their first contribution in #418
- @sisodiabhumca made their first contribution in #432
Full Changelog: v0.9.11...v0.9.12
Menubar v0.9.12
Install with:
npm install -g codeburn
codeburn menubar
That command drops the app into ~/Applications, records the persistent
codeburn CLI path used by the menubar, verifies the downloaded checksum,
clears quarantine after bundle verification, and launches it. If you download
the zip from this page directly and macOS shows "cannot verify developer",
right-click the app in Finder and pick Open to whitelist it once.
v0.9.11
What's New
Fixed (CLI)
- Forge dedup key instability. The fallback deduplication key used the raw message array index, which shifts when messages are deleted between scans. Now uses a composite of model name and token counts. Also fixed a variable reference before its declaration that would crash at runtime when no tool call ID was present.
- Session cache rejected
subagentTypesfield. The cache validator did not recognize thesubagentTypesarray, causing entries with this field to be silently dropped and reparsed on every run. - Conflicting date flags on
statusaccepted silently. Passing--daywith--from/--to, or--dayswith any other date flag, produced undefined behavior. Now exits with a clear error message.
Changed (CLI)
- OpenCode provider uses shared SQLite parser. Delegates to
sqlite-session-parser.ts(same module KiloCode uses), reducing the provider from 498 to 66 lines with no behavior change.
Fixed (macOS menubar)
- Loading watchdog killed healthy CLI fetches. The recovery loop ran every 8 seconds with no backoff. Each attempt reset the generation counter, discarding in-flight CLI responses (45s timeout) before they could finish. Replaced with exponential backoff (8s to 60s, 6 attempts max) that skips recovery when a fetch is already in flight. Shows an error overlay with a Retry button after all attempts are exhausted.
- Multi-day cache key mismatch.
selectedDayreturned the earliest date instead of nil when multiple days were selected, andstartInteractiveSelectionRefreshdid not pass the day set to the cache key constructor. Both now matchPayloadCacheKeynormalization rules.
The macOS menubar is published separately as mac-v0.9.11.
What's Changed
- feat: add Warp provider adapter by @Amirault in #350
- Fix DeepSeek v4 Claude pricing through stale runtime cache by @ozymandiashh in #367
- Fix Antigravity provider, Codex fork dedup, tab ordering by @iamtoruk in #372
- Add tooling breakdowns to CLI and menubar by @iamtoruk in #373
- File-aware retry detection with typed ToolCall by @iamtoruk in #379
- Fix Antigravity 2 Gemini 3.5 Flash tracking by @ozymandiashh in #377
- fix(models): resolve Warp Claude variant pricing aliases by @Amirault in #378
- Group git worktrees under main project by @ozymandiashh in #375
- Fix menubar installer CLI path lookup by @ozymandiashh in #387
- Pause menubar refresh after repeated stalls by @dengsenyao in #388
- Capture Antigravity CLI usage via statusLine by @ozymandiashh in #382
- Normalize Copilot MCP tool names by @ozymandiashh in #374
- Add multi-day calendar selection with custom popover UI by @iamtoruk in #393
- Fix OpenCode provider yielding zero usage (#392) by @iamtoruk in #394
- Add icon-only menubar display mode by @iamtoruk in #396
- fix: group Cowork sessions by space name and unify cross-provider project entries by @cfuselli in #398
- fix(cli): restore antigravity-hook command by @Leezj9671 in #399
- feat(providers): add forge provider support by @sleicht in #401
- Fix menubar stuck loading + KiloCode SQLite support by @iamtoruk in #405
- fix: pre-release cleanup - opencode refactor, watchdog backoff, forge dedup by @iamtoruk in #406
New Contributors
- @Amirault made their first contribution in #350
- @dengsenyao made their first contribution in #388
- @cfuselli made their first contribution in #398
- @Leezj9671 made their first contribution in #399
- @sleicht made their first contribution in #401
Full Changelog: v0.9.10...v0.9.11
Menubar v0.9.11
Added
- CLI update notification. When a newer CLI version is published, a blue banner appears above the star row showing the version and a copy button for the update command (
brew upgrade codeburnornpm update -g codeburn, detected automatically from how the CLI was installed).
Fixed
- Loading watchdog killed healthy CLI fetches. The recovery loop ran every 8 seconds with no backoff. Each attempt reset the generation counter, discarding in-flight CLI responses (45s timeout) before they could finish. Replaced with exponential backoff (8s to 60s, 6 attempts max) that skips recovery when a fetch is already in flight. Shows an error overlay with a Retry button after all attempts are exhausted.
- Multi-day cache key mismatch.
selectedDayreturned the earliest date instead of nil when multiple days were selected, andstartInteractiveSelectionRefreshdid not pass the day set to the cache key constructor. Both now matchPayloadCacheKeynormalization rules. - Dead code cleanup. Removed
RefreshBackoff.swift, its test file, and a broken test that called methods deleted in #393.
Install with:
npm install -g codeburn@0.9.11
codeburn menubar
That command drops the app into ~/Applications, records the persistent
codeburn CLI path used by the menubar, verifies the downloaded checksum,
clears quarantine after bundle verification, and launches it. If you download
the zip from this page directly and macOS shows "cannot verify developer",
right-click the app in Finder and pick Open to whitelist it once.
v0.9.10
What's New
Added (CLI)
- Agent and subagent tracking coverage across providers. Gemini sessions now emit one provider call per assistant message with token usage instead of one aggregate call per session, preserving per-message tools, bash commands, timestamps, and nearest user prompts. Existing cached aggregate Gemini entries are reparsed so the new per-message shape takes effect. Claude discovery also scans direct project-level
subagents/*.jsonlfiles, and Codex agent tool normalization is covered by regression tests. Addresses #336. Thanks @ozymandiashh. (#340) - Optimize tab with retry tax, routing waste, and token display modes. New
codeburn optimizesurface in the dashboard and menubar, with daily budget alerts and project drill-down. (#349)
Fixed (CLI)
- OpenCode child sessions attributed to their root session. The OpenCode parser walks the unarchived
session.parent_idsubtree so child and grandchild agent sessions contribute token and tool usage under the discovered root session, while still excluding child sessions from top-level discovery to avoid double counting. Thanks @ozymandiashh. (#343) - OpenCode router sessions with missing usage are still reported. Some OpenCode router/provider combinations persist assistant messages with text or tool activity but zero token and cost fields. The parser now keeps those turns as zero-cost calls instead of dropping the session entirely. Closes #341. Thanks @ozymandiashh. (#342)
- OpenCode and Goose sessions on fresh installs. Both providers returned zero sessions on first run when their on-disk directories did not yet exist. Discovery now treats missing directories as empty. (#347)
- One-shot rate detection for all non-Claude providers. Retry detection now sees multi-message flows correctly across providers, not only Claude. Follow-up to the v0.9.9 fix. (#355)
- Cursor
#cursor-ws=compound-path separator infingerprintFile.session-cache.tsonly handled the OpenCode:separator, so Cursor's workspace-aware paths could fall back incorrectly. The fingerprint now strips both#and:compound suffixes. Thanks @renerichter. (#358) - Per-provider multi-day data loss, division-by-zero, and decode fragility. Switching to Claude/Codex tab on 7-day/30-day/month periods previously only showed today's categories, models, sessions, and tokens because the cache shortcut only merged cost/calls. Per-provider periods now always do a full parse. Also floors
maxCostat 0.01 to avoid NaN bar widths in ActivitySection and ModelsSection. (#362)
Fixed (macOS menubar)
- Per-provider refresh latency. Switching provider tabs took about 24s on heavy histories. Now about 2s via session cache safety and reuse. (#344)
The macOS menubar is published separately as mac-v0.9.10.
Full Changelog: v0.9.9...v0.9.10
Menubar v0.9.10
Install with:
npm install -g codeburn
codeburn menubar
That command drops the app into ~/Applications, records the persistent
codeburn CLI path used by the menubar, verifies the downloaded checksum,
clears quarantine after bundle verification, and launches it. If you download
the zip from this page directly and macOS shows "cannot verify developer",
right-click the app in Finder and pick Open to whitelist it once.
v0.9.9
What's New
Added (CLI)
- Multi-provider subscription plans.
codeburn plan setnow stores plans per provider, so setting a Codex plan no longer overwrites your Claude plan.plan reset --provider <name>removes only that provider. Existing single-plan configs auto-migrate. Closes #299. Thanks @ozymandiashh. (#300) - Mistral Vibe provider. Reads session folders from
~/.vibe/logs/session/with subagent support. Closes #283. Thanks @ozymandiashh. (#301) - Kimi Code CLI provider. Reads
~/.kimi/sessions/including subagent wire files and Kimi K2 model alias mapping. Thanks @ozymandiashh. (#306) - Codebuff provider. Reads Codebuff session data from
~/.codebuff/. Closes #124. Thanks @anandghegde. (#124) - IBM Bob provider. Discovers IBM Bob IDE task history, reuses the Cline-family parser for token/cost records, extracts model tags and workspace-based project names. Closes #248. (#316)
- Cline provider. Reads Cline task usage from VS Code globalStorage and
~/.cline/data. Thanks @ozymandiashh. (#312)
Fixed (CLI)
- Claude parser OOM risk reduced. Large JSONL sessions now compact entries immediately after parse, keeping only fields needed for cost aggregation. (#335)
- Eager daily-cache hydration caused OOM. Eight commands called
hydrateCache()which parses a 365-day backfill even though onlystatus --format menubar-jsonuses it. Removed from all paths that parse their own date ranges. - Session cache retained between status parses. The
status --format jsonpath parsed today and month ranges without clearing the session cache between them. Cache is now cleared after each period. - Claude 1-hour cache write pricing. 1-hour cache writes now priced at 2x base input (previously used the 5-minute 1.25x rate). Daily cache bumped to v6. Closes #276. (#317)
- OpenCode MCP usage now counted. OpenCode stores MCP tool calls as
<server>_<tool>names. Now normalized tomcp__<server>__<tool>. Closes #308. (#318) - Antigravity Windows discovery. Supports Windows process discovery,
--extension_server_port, CSRF token, and--flag=valuesyntax. Closes #249. Thanks @ozymandiashh. (#324) - Mangled project names in dashboard. Slug decoding broke directory names with dashes or dots. Now uses the real project path. Closes #320. (#320)
- Cursor undated bubble rows misattributed to Today. Bubble rows without
createdAtwere defaulting to the current date. Now skipped. (#321) - Node version guard. Running on Node < 22.13.0 now prints a clear upgrade message instead of crashing with a
node:sqliteerror. Closes #319. (#319) - Windows test fix. cli-plan test no longer fails on Windows. Thanks @brunoleemann-code. (#252)
Fixed (macOS menubar)
- Keychain prompt deferred. The menubar no longer prompts for keychain access on launch. Only triggers when you navigate to the Plan tab and click "Load Quota" or "Connect". (#338)
- All-provider refresh OOM. Refreshing with provider set to "All" could exhaust the V8 heap on heavy session history.
- Tab refresh recovery. Switching tabs during a refresh no longer leaves the panel in a stale loading state. (#315, #328)
- Stale cache recovery. Detects and discards a corrupt or outdated on-disk cache instead of rendering zeroes. (#315)
- Refresh timer hardening. Auto-refresh timer cancelled on sleep/wake, restarted cleanly. (#310, #311)
- Provider strip scrollable. Provider tabs now reachable and mouse-wheel scrollable. Thanks @vaibhavarora14. (#334)
- Version display. Settings panel shows version without the
vprefix. (#315) - Wake recovery. Menubar recovers cleanly after lid-open. (#310)
- PATH discovery. Fixed for nvm/volta/asdf/npm-global installs.
Tests
60 files, 860 tests (was 661). New suites: Kimi provider, Mistral Vibe provider, Codebuff provider, multi-provider plans, Cline provider, IBM Bob provider.
The macOS menubar is published separately as mac-v0.9.9.
Full Changelog: v0.9.8...v0.9.9