What's Changed
- fix(gemini): parse current JSONL session usage by @IvGolovach in https://github.com/leecoder/tokscale/pull/495
- fix(codex): attribute resumed token counts to later model by @IvGolovach in https://github.com/leecoder/tokscale/pull/496
- docs: add deno dx examples by @Ardakilic in https://github.com/leecoder/tokscale/pull/494
- fix(core): handle incomplete upstream session data by @junhoyeo in https://github.com/leecoder/tokscale/pull/501
- chore: bump agents by Junho Yeo (5f5d715)
- fix(ci): keep PR auto-fix commits from skipping validation by @IvGolovach in https://github.com/leecoder/tokscale/pull/502
- fix(copilot): parse VS Code OTel usage records by @IvGolovach in https://github.com/leecoder/tokscale/pull/503
- fix(copilot): harden VS Code OTel parser against trace-id collisions by @junhoyeo in https://github.com/leecoder/tokscale/pull/505
- fix(cursor): sync usage cache before local reports by @IvGolovach in https://github.com/leecoder/tokscale/pull/504
- fix(cursor): bound auto-sync latency with HTTP timeout and freshness gate by @junhoyeo in https://github.com/leecoder/tokscale/pull/507
- test(antigravity): redirect TOKSCALE_CONFIG_DIR for hermetic test isolation by @junhoyeo in https://github.com/leecoder/tokscale/pull/506
- ci: update coverage badge [skip ci] by @github-actions[bot] (4463674)
- fix(claude): scan wrapper transcripts with usage metadata by @IvGolovach in https://github.com/leecoder/tokscale/pull/513
- fix(kilo): harden SQLite parser row handling by @IvGolovach in https://github.com/leecoder/tokscale/pull/510
- fix(codex): deduplicate forked token count history by @IvGolovach in https://github.com/leecoder/tokscale/pull/511
- feat(zed): support hosted Zed agent threads by @makoMakoGo in https://github.com/leecoder/tokscale/pull/509
- feat(auth): support non-interactive API token auth by @IvGolovach in https://github.com/leecoder/tokscale/pull/512
- fix(auth): clear API token after copy + cross-feature regression coverage by @junhoyeo in https://github.com/leecoder/tokscale/pull/514
- chore(frontend): add vitest config so @/* aliases resolve in tests by @junhoyeo in https://github.com/leecoder/tokscale/pull/515
- chore(security): rehash plaintext personal tokens, drop OR-clause by @junhoyeo in https://github.com/leecoder/tokscale/pull/516
- fix(codex): suppress inherited forked subagent usage by @IvGolovach in https://github.com/leecoder/tokscale/pull/521
- feat(kiro): add Kiro client support by @leecoder in https://github.com/leecoder/tokscale/pull/525
- fix(cli): avoid wrapped clients flag parser collision by @kacpersaw in https://github.com/leecoder/tokscale/pull/529
- fix(kiro): stop reading JSONL after line errors by @junhoyeo in https://github.com/leecoder/tokscale/pull/536
- docs(readme): add Zed row to localized READMEs by @junhoyeo in https://github.com/leecoder/tokscale/pull/538
- chore(kiro): format parser changes by @junhoyeo in https://github.com/leecoder/tokscale/pull/537
- docs(readme): use Deno quickstart without alias setup by @junhoyeo in https://github.com/leecoder/tokscale/pull/535
- fix(submit): accept Zed usage payloads by @junhoyeo in https://github.com/leecoder/tokscale/pull/534
- fix(gemini): include tool tokens in reported totals by @junhoyeo in https://github.com/leecoder/tokscale/pull/531
- fix(gemini): avoid caching partial JSONL parses by @junhoyeo in https://github.com/leecoder/tokscale/pull/532
- fix(cursor): require fresh cache for each saved account by @junhoyeo in https://github.com/leecoder/tokscale/pull/533
- fix(ci): gate macOS-only Zed scanner test and quiet test-only clippy lints by @junhoyeo in https://github.com/leecoder/tokscale/pull/539
- ci: update coverage badge [skip ci] by @github-actions[bot] (b140a07)
- fix(frontend): add missing client sources (antigravity, codebuff, goose) to validation schema by @ddarkr in https://github.com/leecoder/tokscale/pull/547
- fix(hermes): include Hermes usage in agent totals by @IvGolovach in https://github.com/leecoder/tokscale/pull/552
- fix(gemini): recover v0.39 stream-json usage by @IvGolovach in https://github.com/leecoder/tokscale/pull/518
- fix(antigravity): decode chunked identity probe responses by @ddarkr in https://github.com/leecoder/tokscale/pull/562
- fix(tui): keep tab sort defaults in sync by @IvGolovach in https://github.com/leecoder/tokscale/pull/553
- feat(tui): open daily detail rows for selected date by @xczllgit in https://github.com/leecoder/tokscale/pull/564
- feat(tui): add Minutely tab for per-minute token breakdown by @DigitalPhilosopher in https://github.com/leecoder/tokscale/pull/542
- docs(readme): document minutelyTabEnabled and the optional Minutely tab by @junhoyeo in https://github.com/leecoder/tokscale/pull/568
- docs(readme): correct TUI keyboard map and sync language readmes by @junhoyeo in https://github.com/leecoder/tokscale/pull/569
- fix(cli): prevent self-spawn fork bomb in which fallback by @shunkakinoki in https://github.com/leecoder/tokscale/pull/585
- fix(tui): align tab mouse hitboxes with rendered labels by @jeongjin0 in https://github.com/leecoder/tokscale/pull/573
- fix(claude): normalize anthropic model variants by @IvGolovach in https://github.com/leecoder/tokscale/pull/578
- fix(pricing): map opus-4-7 ids to claude-opus-4-7 instead of legacy claude-opus-4 by @xczllgit in https://github.com/leecoder/tokscale/pull/580
- Pricing support for composer 2.5 by @RawToast in https://github.com/leecoder/tokscale/pull/581
- fix(tui): use compatible colors in Apple Terminal by @IvGolovach in https://github.com/leecoder/tokscale/pull/577
- perf(tui): cache minutely sort order by @IvGolovach in https://github.com/leecoder/tokscale/pull/575
- fix(tui): preserve minutely aggregation in background loads by @xczllgit in https://github.com/leecoder/tokscale/pull/570
- feat(leaderboard): show search on all periods and match displayName by @leecoder in https://github.com/leecoder/tokscale/pull/582
- fix(pricing): require exact matches for provider-scoped models by @IvGolovach in https://github.com/leecoder/tokscale/pull/550
- fix(submit): reject implausible submitted totals by @IvGolovach in https://github.com/leecoder/tokscale/pull/557
- fix(auth): serialize device auth polling by @AsaZhou923 in https://github.com/leecoder/tokscale/pull/546
- feat(pricing): add custom pricing overrides by @ben-vargas in https://github.com/leecoder/tokscale/pull/549
- fix(claude): price inline MCP sub-provider usage by @IvGolovach in https://github.com/leecoder/tokscale/pull/519
- fix(gemini): detect Gemini CLI usage with configurable path and new token formats by @cantalupo555 in https://github.com/leecoder/tokscale/pull/540
- feat: add time period filters and URL sync to leaderboard by @leecoder in https://github.com/leecoder/tokscale/pull/522
- feat(trae): add Trae client support by @itling in https://github.com/leecoder/tokscale/pull/555
- feat(embed): add card templates with color, theme, format, and graph options by @Bae-ChangHyun in https://github.com/leecoder/tokscale/pull/584
- fix(cli): avoid stale PATH launcher fallback by @IvGolovach in https://github.com/leecoder/tokscale/pull/576
- feat(core,cli): add session and client+session group-by by @carlosflorencio in https://github.com/leecoder/tokscale/pull/543
- fix(submit): make usage merges device-aware by @IvGolovach in https://github.com/leecoder/tokscale/pull/517
- Show subscription usage in Tokscale by @shidevil in https://github.com/leecoder/tokscale/pull/493
- feat(cli): add 'qr' command for transferring API token to mobile apps by @eugenn in https://github.com/leecoder/tokscale/pull/545
- feat(models): add token timing and Claude Code stream dedupe by @PekingSpades in https://github.com/leecoder/tokscale/pull/563
- feat: add session time metrics (active time tracking per contribution) by @leecoder in https://github.com/leecoder/tokscale/pull/528
- feat(groups): add scoped leaderboards with invites by @IvGolovach in https://github.com/leecoder/tokscale/pull/524
- chore(followups): post-batch cleanup from 2026-05-24 review by @junhoyeo in https://github.com/leecoder/tokscale/pull/592
- feat(devices): add per-device read+rename APIs and fix submit_count drift by @junhoyeo in https://github.com/leecoder/tokscale/pull/593
- chore(db): drop dead columns + redundant indexes + unique constraint by @junhoyeo in https://github.com/leecoder/tokscale/pull/598
- refactor(leaderboard): fold Groups into Leaderboard view selector by @junhoyeo in https://github.com/leecoder/tokscale/pull/599
- chore(ui): audit pass on Leaderboard ViewSelector + GroupsBrowser by @junhoyeo in https://github.com/leecoder/tokscale/pull/600
- feat(report): add report command with model/task/daily breakdown by @leecoder (4d5b337)
- fix(cli): restore strict verification and Trae aggregation by @junhoyeo (246e599)
- fix(groups): reject malformed invite payloads by @junhoyeo (dd03d7c)
- fix(leaderboard): preserve filters and paginate groups by @junhoyeo (5692be9)
- docs(readme): correct Trae sync and client filters by @junhoyeo (6d86721)
- fix(leaderboard): avoid swallowing dynamic route detection by @junhoyeo (3692725)
- docs(cli): clarify Trae credential variants by @junhoyeo (58d4343)
- fix(leaderboard): preserve filters across view toggles by @junhoyeo (5c04cb4)
- fix(groups): reject non-object invite payloads by @junhoyeo (aee7d59)
- refactor(leaderboard): remove duplicate date validation by @junhoyeo (bfa488e)
- fix(cli): write Trae sync artifacts only when referenced by @junhoyeo (70a26c9)
- docs(cli): document local active-time day buckets by @junhoyeo (07a83e8)
- ci: update coverage badge [skip ci] by @github-actions[bot] (0b71d7d)
- test(frontend): add CI coverage for tests and migrations (junhoyeo#605) by @IvGolovach (6195f12)
- fix(groups): enforce invite role hierarchy (junhoyeo#604) by @IvGolovach (db08e09)
- fix(submit): allow consistent high-volume token reports (junhoyeo#602) by @IvGolovach (4583419)
- fix(submit): adopt legacy rows for first device submit (junhoyeo#609) by @IvGolovach (ab5d03d)
- fix(submit): preserve same-device totals on parser regressions by @IvGolovach (880496f)
- fix(release): commit release provenance before npm publish by @IvGolovach (5266066)
- fix(cli): honor explicit home diagnostics by @IvGolovach (c61d401)
- fix(scanner): scan Hermes profile databases from extra paths by @IvGolovach (7b29b03)
- docs: require maintainer identity for agent commits by @junhoyeo (4084f9b)
- fix(cursor): surface setup diagnostics for explicit reports by @IvGolovach (1553303)
- fix(submit): bypass cost-without-tokens check for Cursor legacy
premium-tool-call(junhoyeo#612) by @junhoyeo (b6942bc) - fix: invite privilege escalation, submit savepoint race, leaderboard pagination drift, CSRF origin gate, CI coverage floors (junhoyeo#611) by @junhoyeo (a09803c)
- fix(tui): anchor warm-cache writer and TUI reader on a shared group_by constant (junhoyeo#613) by @junhoyeo (fdaea48)
- fix(submit): exclude tokenless-cost rows instead of failing the whole submission by @junhoyeo (2f6a0d0)
- style: rustfmt wrap in tokenless-cost exclusion test by @junhoyeo (3e9ca23)
- chore(release): reset manifests to 2.1.3 to re-publish 3.0.0 by @junhoyeo (8573b01)
- fix(leaderboard): drop duplicate page title above the view tabs by @junhoyeo (ebc6de7)
- feat(report): add multi-backend summarizer and LLM task grouping by @leecoder (994b496)
- fix(report): address cubic review - error on unknown summarizer, propagate DB errors by @leecoder (0701424)
- fix(report): address remaining cubic review issues by @leecoder (ca98efa)
- fix: resolve clippy lint errors by @leecoder (b8bf362)
- feat(cli): add diagnose command and rename optimize → diagnose by @leecoder (a214768)
- docs(readme): add diagnose command section by @leecoder (c2fb6d7)
- feat: support npx github:leecoder/tokscale execution via GitHub Releases by @leecoder (854225a)
- fix: remove npm publish jobs, keep only GitHub Releases asset upload by @leecoder (2a99a69)
- feat: add -lcN suffix to version bumps for fork distinction by @leecoder (565e4f9)
Full Changelog: v2.1.0...v3.0.0-lc1
