- Account-first Phase 1: account registry, default identity, cache stamp, plain-matching CLI/API (#1027) by @robinebers
- Account-first Phase 0: shell-environment snapshot + the plan (#1026) by @robinebers
- Cache parsed local usage logs across launches (#1017) by @robinebers
Full Changelog: v0.7.6...v0.7.7-beta.1
- 7723025 Account-first Phase 1: account registry, default identity, cache stamp, plain-matching CLI/API (#1027) by @robinebers
- d785f7e Account-first Phase 0: shell-environment snapshot + the plan (#1026) by @robinebers
- 6a2d74d Cache parsed local usage logs across launches (#1017) by @robinebers
- Hide menu bar usage while the screen is shared (#1013) by @robinebers
- Fold pi coding agent usage into Claude and Codex (#975) by @jal-co
- Sync usage history across Macs with iCloud (#984) by @robinebers
- Add a machine-readable limits API and global
openusagecommand (#982) by @robinebers - Read the existing Claude Desktop login safely as a read-only fallback (#962) by @robinebers
- Add hover-revealed screenshot copying to provider headers (#989) by @robinebers
- Fix menu-bar icon not closing panel on second click at top of screen (#1012) by @robinebers
- Fix ~20x Codex spend inflation from subagent replay logs (#1001) by @robinebers
- Fix Claude and Codex token cost calculations, including Codex fast-tier pricing from session logs (#995) by @validatedev
- Accept xhigh effort suffix on Grok 4.5 alias rules (#999) by @robinebers
- Restore Cursor Enterprise included-request and on-demand usage (#986) by @iicdii
- Keep Sparkle updater windows in the foreground during manual updates (#985) by @robinebers
- Follow symlinked log directories when scanning local usage (#973) by @robinebers
- Recognize Cursor Grok 4.5 usage slugs (#981) by @robinebers
- Update Grok provider logo (#1005) by @robinebers
- Keep inactive issues open for 30 days before warning (#998) by @robinebers
- Ignore the
.build-testdirectory by @robinebers
Full Changelog: v0.7.5...v0.7.6
- 89e4b82 Hide menu bar usage while the screen is shared (#1010) (#1013) by @robinebers
- 0d236d8 Fix menu-bar icon not closing panel on second click at top of screen (#1012) by @robinebers
- c3777d5 Update Grok provider logo (#1005) by @robinebers
- de0fec9 feat(providers): fold pi coding agent usage into Claude and Codex (#975) by @jal-co
- 99d1ab3 docs: changelog for v0.7.6-beta.3 by @robinebers
- 55dd61f Fix ~20x Codex spend inflation from subagent replay logs (#1001) by @robinebers
- acc032f fix: make iCloud sync in-flight tests deterministic (#1000) by @robinebers
- 27fb007 Merge pull request #999 from robinebers/fix/grok-45-xhigh-alias by @robinebers
- bd49afa fix(pricing): accept xhigh effort suffix on grok-4.5 alias rules by @robinebers
- f7e1752 docs: changelog for v0.7.6-beta.2 by @robinebers
- be6e3d7 Merge pull request #998 from robinebers/cursor/cea9ec49 by @robinebers
- e145e7a chore(stale): keep inactive issues open for 30 days before warning by @robinebers
- a0569bd Merge pull request #995 from robinebers/fix/token-cost-calculation-disperancies by @validatedev
- cfdfdd0 fix: price Codex fast tier per session from rollout logs, not config.toml by @robinebers
- 0d0136d fix: handle persisted Claude print usage and Codex fast aliases by @validatedev
- bfb325c fix: correct token cost calculations by @validatedev
- 8674407 docs: changelog for v0.7.6-beta.1 by @robinebers
- 47cc6c7 Merge pull request #962 from robinebers/cursor/5daa197a by @robinebers
- a305236 Merge pull request #985 from robinebers/codex/fix-sparkle-update-focus by @robinebers
- 4cb0841 fix(claude): try Desktop before environment fallback by @robinebers
- 09ef91c Merge pull request #986 from iicdii/fix/cursor-enterprise-usage by @iicdii
- 17ec2b9 Merge pull request #989 from robinebers/codex/provider-header-copy-feedback by @robinebers
- 71c7694 Refine provider header copy controls by @robinebers
- 3ac257c fix(claude): pick Desktop token by client/scope rank, not max expiry by @robinebers
- 1e65178 feat: read Claude Desktop login safely by @robinebers
- d514522 docs: add Cursor Enterprise live screenshot by @iicdii
- 022286f fix(cursor): show enterprise included and on-demand usage by @iicdii
- aa51755 Merge remote-tracking branch 'origin/main' into codex/fix-sparkle-update-focus by @robinebers
- a8c8fa5 Merge pull request #984 from robinebers/codex/icloud-usage-sync by @robinebers
- 74ef79f Stop merging disabled provider history by @robinebers
- c1c131c Persist iCloud device identity in Keychain by @robinebers
- eb71e79 Accept team-prefixed iCloud profiles by @robinebers
- 27d3fec Bound synced history to refresh window by @robinebers
- 7fb7722 Fix Sparkle updater window activation by @robinebers
- b0c88a0 Preserve history across scan misses by @robinebers
- e4b9fba add
.build-test/to.gitignoreby @robinebers - 23e4e77 Fix iCloud sync update races by @robinebers
- ed659c6 Merge pull request #973 from robinebers/claude/github-issue-971-0b9423 by @robinebers
- b71b371 Polish iCloud sync settings by @robinebers
- ba515c9 Auto-detect iCloud development profiles by @robinebers
- 30cdf85 Fix iCloud provisioning and sync activity state by @robinebers
- e68b7c1 Refine iCloud sync status by @robinebers
- 9f3f8b6 Add iCloud usage sync by @robinebers
- 6d83bca Merge pull request #982 from robinebers/agent/one-shot-openusage-cli by @robinebers
- 5292c15 Share provider ordering across limits surfaces by @robinebers
- 2b3e7f7 Expose provider refresh errors in limits by @robinebers
- fa6ac11 Add machine-readable limits CLI by @robinebers
- bd9353d Add one-shot shared-core usage CLI by @robinebers
- b728d6b Merge pull request #981 from robinebers/fix/pricing-cursor-grok-4.5-prefix by @robinebers
- 00d2d7e fix(pricing): recognize cursor-grok-4.5 usage slugs by @robinebers
- b75e329 fix: strip the resolved dir prefix when deduping Codex session files by @robinebers
- 4d8bbd6 docs: polish the symlink note in the Claude spend-tiles doc by @robinebers
- 15b0976 Follow symlinked log directories when scanning local usage by @Linyxus
- Fix ~20x Codex spend inflation from subagent replay logs (#1001) by @robinebers
- Make iCloud sync in-flight tests deterministic (#1000) by @robinebers
- Accept xhigh effort suffix on Grok 4.5 alias rules (#999) by @robinebers
Full Changelog: v0.7.6-beta.2...v0.7.6-beta.3
- 55dd61f Fix ~20x Codex spend inflation from subagent replay logs (#1001) by @robinebers
- acc032f fix: make iCloud sync in-flight tests deterministic (#1000) by @robinebers
- 27fb007 Merge pull request #999 from robinebers/fix/grok-45-xhigh-alias by @robinebers
- bd49afa fix(pricing): accept xhigh effort suffix on grok-4.5 alias rules by @robinebers
- Fix Claude and Codex token cost calculations, including Codex fast-tier pricing from session logs (#995) by @validatedev
- Keep inactive issues open for 30 days before warning (#998) by @robinebers
Full Changelog: v0.7.6-beta.1...v0.7.6-beta.2
- be6e3d7 Merge pull request #998 from robinebers/cursor/cea9ec49 by @robinebers
- e145e7a chore(stale): keep inactive issues open for 30 days before warning by @robinebers
- a0569bd Merge pull request #995 from robinebers/fix/token-cost-calculation-disperancies by @validatedev
- cfdfdd0 fix: price Codex fast tier per session from rollout logs, not config.toml by @robinebers
- 0d0136d fix: handle persisted Claude print usage and Codex fast aliases by @validatedev
- bfb325c fix: correct token cost calculations by @validatedev
- Read the existing Claude Desktop login safely as a read-only fallback (#962) by @robinebers
- Sync usage history across Macs with iCloud (#984) by @robinebers
- Add a machine-readable limits API and global
openusagecommand (#982) by @robinebers - Add hover-revealed screenshot copying to provider headers (#989) by @robinebers
- Restore Cursor Enterprise included-request and on-demand usage (#986) by @iicdii
- Keep Sparkle updater windows in the foreground during manual updates (#985) by @robinebers
- Follow symlinked log directories when scanning local usage (#973) by @robinebers
- Recognize Cursor Grok 4.5 usage slugs (#981) by @robinebers
- Ignore the
.build-testdirectory by @robinebers
Full Changelog: v0.7.5...v0.7.6-beta.1
- 47cc6c7 Merge pull request #962 from robinebers/cursor/5daa197a by @robinebers
- a305236 Merge pull request #985 from robinebers/codex/fix-sparkle-update-focus by @robinebers
- 4cb0841 fix(claude): try Desktop before environment fallback by @robinebers
- 09ef91c Merge pull request #986 from iicdii/fix/cursor-enterprise-usage by @robinebers
- 17ec2b9 Merge pull request #989 from robinebers/codex/provider-header-copy-feedback by @robinebers
- 71c7694 Refine provider header copy controls by @robinebers
- 3ac257c fix(claude): pick Desktop token by client/scope rank, not max expiry by @robinebers
- 1e65178 feat: read Claude Desktop login safely by @robinebers
- d514522 docs: add Cursor Enterprise live screenshot by @iicdii
- 022286f fix(cursor): show enterprise included and on-demand usage by @iicdii
- aa51755 Merge remote-tracking branch
origin/maininto updater-focus work by @robinebers - a8c8fa5 Merge pull request #984 from robinebers/codex/icloud-usage-sync by @robinebers
- 74ef79f Stop merging disabled provider history by @robinebers
- c1c131c Persist iCloud device identity in Keychain by @robinebers
- eb71e79 Accept team-prefixed iCloud profiles by @robinebers
- 27d3fec Bound synced history to refresh window by @robinebers
- 7fb7722 Fix Sparkle updater window activation by @robinebers
- b0c88a0 Preserve history across scan misses by @robinebers
- e4b9fba add
.build-test/to.gitignoreby @robinebers - 23e4e77 Fix iCloud sync update races by @robinebers
- ed659c6 Merge pull request #973 from robinebers/claude/github-issue-971-0b9423 by @robinebers
- b71b371 Polish iCloud sync settings by @robinebers
- ba515c9 Auto-detect iCloud development profiles by @robinebers
- 30cdf85 Fix iCloud provisioning and sync activity state by @robinebers
- e68b7c1 Refine iCloud sync status by @robinebers
- 9f3f8b6 Add iCloud usage sync by @robinebers
- 6d83bca Merge pull request #982 from robinebers/agent/one-shot-openusage-cli by @robinebers
- 5292c15 Share provider ordering across limits surfaces by @robinebers
- 2b3e7f7 Expose provider refresh errors in limits by @robinebers
- fa6ac11 Add machine-readable limits CLI by @robinebers
- bd9353d Add one-shot shared-core usage CLI by @robinebers
- b728d6b Merge pull request #981 from robinebers/fix/pricing-cursor-grok-4.5-prefix by @robinebers
- 00d2d7e fix(pricing): recognize cursor-grok-4.5 usage slugs by @robinebers
- b75e329 fix: strip the resolved directory prefix when deduping Codex session files by @robinebers
- 4d8bbd6 docs: polish the symlink note in the Claude spend-tiles documentation by @robinebers
- 15b0976 Follow symlinked log directories when scanning local usage by @Linyxus
- Claim Codex rate-limit resets from the popover (#972) by @robinebers
- Fix Codex window routing by duration (#980) by @robinebers
Full Changelog: v0.7.4...v0.7.5
- e1ddf23 Fix Codex window routing by duration by @robinebers
- 50e0a94 fix: say what we know when disabling Use after nothing_to_reset by @robinebers
- 7b6d4a9 fix: retry the post-claim refresh on transient failure; drop the unused popover title by @robinebers
- ad59baf fix: close the second review's three findings on the claim hardening by @robinebers
- ce755b9 fix: harden the resets claim per review findings by @robinebers
- be00fe2 feat: wire the resets claim to the real Codex consume endpoint by @robinebers
- bb46eae feat: animate the resets claim flow by @robinebers
- 20fb41f feat: claim flow in the Codex resets popover (mocked claim) by @robinebers
- Cross-provider Total Spend ring card with morphing sectors, provider brand colors, a settings toggle, and capability gating (#857) by @robinebers
- Add Cost / Tokens / Cost/MTok menu to the Total Spend card (#906) by @robinebers
- Add OpenCode provider (Zen / Go) from local logs (#969) by @robinebers
- Add GPT-5.6 pricing aliases (#880) by @robinebers
- Add Grok 4.5, Kimi K2.7 Code, and Claude 4.7 Opus pricing aliases (#907) by @robinebers
- Add a hover affordance to Usage Trend values (#881) by @robinebers
- Replace the Codex resets tooltip with a hover popover and highlight the value on hover (#879) by @robinebers
- Add hover highlight on spend-row values so the model breakdown reads as interactive (#877) by @claude
- Improve Options legibility when Increase Transparency is on (#963) by @validatedev
- Isolate Claude usage cache when the login changes (#953) by @robinebers
- Prefer profile-scoped Claude login over an inference-only environment token for live usage (#865) by @joshuavial
- Bind Antigravity credential caches to verified local state and purge on logout (#961) by @robinebers
- Keep local credential files private (#910) by @robinebers
- Encode OAuth refresh form values correctly (#911) by @robinebers
- Validate Cursor usage exports without dropping primary usage (#948) by @robinebers
- Mark Cursor spend as estimated (#886) by @robinebers
- Reject malformed Z.ai quota values (#951) by @robinebers
- Fix request-wide long-context pricing and price GPT-5.6 fast variants correctly (#885, #889) by @robinebers
- Match Cursor's
grok-4.5-fast-highpricing slug order (#908) by @robinebers - Clear the update banner after the available update is resolved (#882) by @robinebers
- Keep launch-at-login errors visible (#887) by @robinebers
- Bound concurrent log parsing and report unreadable usage files without repeated warnings (#888, #890) by @robinebers
- Preserve the initial popover height and measure it against the correct display (#904) by @robinebers
- Show Codex usage percentages as reported while keeping near-empty pacing calm (#905) by @robinebers
- Improve Codex resets popover edge cases (imminent “soon”, zero vs unfetched, two-unit day scale) (#879) by @robinebers
- Never drop an enablement wake posted mid refresh pass; probe credentials concurrently (#856) by @robinebers
- Anchor tooltips to the hovered item, balance wrapped lines, and use the cursor’s screen for zero-size anchor fallback (#858) by @robinebers
- Scope Total Spend to providers with real spend tiles; show the card even when the dashboard is empty (#857) by @robinebers
- Disable hover tooltips in share-card renders by @robinebers
- Remove the legacy Tauri autostart LaunchAgent on launch (#876) by @claude
- Single-instance decisions must not trust the LaunchServices snapshot (#873) by @xuing
- Center the Total Spend share arrow like the provider header icons by @robinebers
- Clear the value highlight when the panel closes by @claude
- Extract layout persistence, startup rules, dashboard sections, and panel management into focused components (#895, #896, #897, #898, #899, #900, #902, #952) by @robinebers
- Extract
PanelHeightCoordinator,StatusItemImageUpdater,QuotaNotificationEvaluator, andPopoverNavigationStore(#869, #870, #871, #872) by @robinebers - Simplify refresh coalescing, popover visibility, and model-share computation (#891, #893, #894) by @robinebers
- Remove dead UI and provider code paths (#883, #950) by @robinebers
- DRY / dead-code / KISS cleanup from code-quality audit (#868) by @robinebers
- Refresh price lists hourly instead of daily (#909) by @robinebers
- Sync documentation with current app behavior (#884, #914) by @robinebers
- Test the real metric-divider path (#892) by @robinebers
- Update README screenshot and version query on screenshot URL by @robinebers
- Fix Pages deploy recovery in release skill to use
mainref by @robinebers - Bump PostHog iOS 3.64.1 → 3.64.5 (#960) by @dependabot[bot]
- Bump actions/deploy-pages 4 → 5 (#958) by @dependabot[bot]
- Bump actions/upload-pages-artifact 3 → 5 (#959) by @dependabot[bot]
Full Changelog: v0.7.3...v0.7.4
- 766d035 Address review findings: fail loudly on unreadable OpenCode sources by @robinebers
- e59c86f Fix stale-anchor Go plan badge (Bugbot) by @robinebers
- 1bfb96a Add OpenCode provider (Zen / Go) from local logs by @robinebers
- b2aa491 fix(ui): reinforce Options glass in transparent mode by @validatedev
- 8755f62 docs: align credential probe guidance by @robinebers
- 43e20fd docs: correct residual behavior claims by @robinebers
- 113f84a docs: sync current app behavior by @robinebers
- a378387 docs: finish layout terminology cleanup by @robinebers
- 710a75e docs: use current layout section names by @robinebers
- 5c47e8b refactor: split layout store responsibilities by @robinebers
- 1fcdbf2 refactor: align metric and API-key contracts by @robinebers
- d7355ad refactor: remove dead text widget parsing by @robinebers
- 61cc416 docs: describe current refresh and metric paths by @robinebers
- 8042c14 test: align coverage with live contracts by @robinebers
- 5ffba86 refactor: remove dead UI and provider paths by @robinebers
- d31d37b Reuse shared numeric parsing for Z.ai by @robinebers
- 3db9090 Keep unknown Z.ai windows forward compatible by @robinebers
- be28ac6 Reject malformed Z.ai quota values by @robinebers
- 6dc87ba Reject JSON booleans at numeric boundaries by @robinebers
- 697c7a9 Keep Cursor boundary docs and tests current by @robinebers
- b1b80e8 Log Cursor optional endpoint failures by @robinebers
- fe6ca85 Validate Cursor usage exports at the boundary by @robinebers
- 14ab1f5 fix: reject BOM-prefixed malformed credentials by @robinebers
- 5cd9268 fix: purge Antigravity cache during logout detection by @robinebers
- 4102b00 Protect credential probes and Antigravity cache by @robinebers
- 33e19b0 Bump github.com/posthog/posthog-ios from 3.64.1 to 3.64.5 by @dependabot[bot]
- 3ea0867 Bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot]
- b66f3ba Bump actions/deploy-pages from 4 to 5 by @dependabot[bot]
- 309f298 fix: isolate Claude usage by login by @robinebers
- 906d94f fix: keep credential files private by @robinebers
- 4816fbf fix: correctly encode OAuth form values by @robinebers
- 890d809 chore(pricing): refresh price lists hourly instead of daily by @robinebers
- e04266c fix(pricing): match Cursor's grok-4.5-fast-high slug order by @robinebers
- b96b012 feat(pricing): add Grok 4.5, Kimi K2.7 Code, and Claude 4.7 Opus aliases by @robinebers
- 1419a20 docs: changelog for v0.7.4-beta.5 by @robinebers
- a433934 Reorder Total Spend metric menu to Cost, Cost/MTok, Tokens. by @robinebers
- 87e3ef4 Add Cost / Tokens / Cost/MTok menu to Total Spend card. by @robinebers
- e7fa4f9 docs: changelog for v0.7.4-beta.4 by @robinebers
- a1bdc28 Keep near-empty Codex pacing calm by @robinebers
- 5fbc22b Show Codex usage percentages as reported by @robinebers
- 2da68aa Capture display before measuring panel height by @robinebers
- 4c53fb1 Preserve the first panel height on open by @robinebers
- ac6a3e3 Extract panel outside-click handling by @robinebers
- 07a35bd Extract panel height handling by @robinebers
- 612d847 Extract popover footer by @robinebers
- dba66ad Extract popover top bar by @robinebers
- 0581cfc Extract dashboard scrolling content by @robinebers
- 35842a9 Extract layout startup rules by @robinebers
- 315e6b3 Extract layout persistence by @robinebers
- a8750e7 Keep unreadable log warnings quiet across batches by @robinebers
- 76247d7 Test the real metric divider path by @robinebers
- 8ddc401 Compute model shares once per render by @robinebers
- f44d4ef Use the controller popover visibility signal by @robinebers
- 1040f53 fix(claude): prefer profile-scoped login over inference-only env token for live usage by @joshuavial
- 2d4a5b4 Simplify menu bar refresh coalescing by @robinebers
- c0b190f Log unreadable usage files once by @robinebers
- f8e02b5 fix(pricing): price GPT-5.6 fast variants by @robinebers
- 27ebb0b Bound concurrent log parsing by @robinebers
- 27bd492 Keep launch-at-login errors visible by @robinebers
- 2669a7b Mark Cursor spend as estimated by @robinebers
- e881be6 Fix request-wide long-context pricing by @robinebers
- 1bcc8f9 Refresh pricing and panel documentation by @robinebers
- 4b61302 Remove unused UI plumbing by @robinebers
- 3194f3b Clear resolved update banner by @robinebers
- c9be949 Add hover affordance to usage trend by @robinebers
- 8a8ea33 Add GPT-5.6 pricing aliases and tests by @robinebers
- 6c99db7 docs: changelog for v0.7.4-beta.3 by @robinebers
- 0506f02 Always show two units at the day scale in compactDuration by @robinebers
- 417900f Collapse imminent resets to "soon" and gate the popover on real data by @robinebers
- 5f42ee9 Distinguish zero resets from unfetched expiries in the popover by @robinebers
- cbe303e Replace Codex resets tooltip with a hover popover and light its value by @robinebers
- dd53cbe Clear the value highlight on panel close by tracking hover on the coordinator by @claude
- 71a6ba0 Add hover highlight to spend-row value so the model breakdown reads as interactive by @claude
- 9cf0c62 Address review findings: real clamp coverage, private clamped, honest imports by @claude
- 84879dd Address review findings: non-optional image updater, fix stale doc reference by @claude
- 43241b4 Address review findings: fix stale dedup doc, note the snapshot delta by @claude
- 7f1af89 Address review findings: private navigation, naming, stale doc, notice tests by @claude
- 7cc1f25 Address review findings: pill shadow drift, test pins, Cursor facts adoption by @claude
- dff6786 fix: remove the legacy Tauri autostart LaunchAgent on launch by @claude
- ea51bdf fix: single-instance decisions must not trust the LaunchServices snapshot (#874) by @xuing
- f0baad2 refactor(DashboardView): extract PanelHeightCoordinator (auto-fit computation) by @robinebers
- c4c5971 refactor(StatusItemController): extract StatusItemImageUpdater by @robinebers
- 89ee82e refactor(WidgetDataStore): extract QuotaNotificationEvaluator by @robinebers
- 7597156 refactor(LayoutStore): extract PopoverNavigationStore + generic TransientNotice by @robinebers
- 667f350 refactor: DRY/dead-code/KISS cleanup from code-quality audit by @robinebers
- 4d75562 Add version query to screenshot URL in README by @robinebers
- a26a113 docs: update README screenshot by @robinebers
- ba04c54 docs(skills): fix Pages deploy recovery to use main ref by @robinebers
- 3686abc fix(ui): center the Total Spend share arrow like the provider header icons by @robinebers
- bfd6e68 docs: changelog for v0.7.4-beta.2 by @robinebers
- 141bf53 fix(share): disable hover tooltips in share-card renders by @robinebers
- e740324 docs: changelog for v0.7.4-beta.1 by @robinebers
- 1d24835 fix: derive Total Spend info tooltip from enabled spend-capable providers by @robinebers
- a00f786 fix(tooltip): pick the cursor's screen for the zero-size anchor fallback by @robinebers
- c95f7c8 fix(dashboard): scope Total Spend to real spend-tile providers, show card with empty dashboard by @robinebers
- 97dec12 fix(tooltip): anchor bubble to the hovered item and balance wrapped lines by @robinebers
- c56d8d1 feat(dashboard): morphing ring sectors, brand colors, settings toggle, capability gating by @robinebers
- 53115a8 Revert "feat(dashboard): stacked-bars variant of the Total Spend card" by @robinebers
- 684ccdc feat(dashboard): stacked-bars variant of the Total Spend card by @robinebers
- 8251ac3 feat(dashboard): cross-provider Total Spend ring card by @robinebers
- 2a225eb fix(refresh): never lose an enablement wake posted mid-pass; probe credentials concurrently by @robinebers
- Add Cost / Tokens / Cost/MTok menu to Total Spend card. (#906) by @robinebers
- Reorder Total Spend metric menu to Cost, Cost/MTok, Tokens. (#906) by @robinebers
Full Changelog: v0.7.4-beta.4...v0.7.4-beta.5
- a433934 Reorder Total Spend metric menu to Cost, Cost/MTok, Tokens. by @robinebers
- 87e3ef4 Add Cost / Tokens / Cost/MTok menu to Total Spend card. by @robinebers
- Add GPT-5.6 pricing aliases and tests (#880) by @robinebers
- Add a hover affordance to Usage Trend values (#881) by @robinebers
- Clear the update banner after the available update is resolved (#882) by @robinebers
- Fix request-wide long-context pricing and price GPT-5.6 fast variants correctly (#885, #889) by @robinebers
- Mark Cursor spend as estimated (#886) by @robinebers
- Keep launch-at-login errors visible (#887) by @robinebers
- Bound concurrent log parsing and report unreadable usage files without repeated warnings (#888, #890) by @robinebers
- Prefer profile-scoped Claude login over an inference-only environment token for live usage (#865) by @joshuavial
- Preserve the initial popover height and measure it against the correct display (#904) by @robinebers
- Show Codex usage percentages as reported while keeping near-empty pacing calm (#905) by @robinebers
- Remove unused UI plumbing (#883) by @robinebers
- Simplify refresh coalescing, popover visibility, and model-share computation (#891, #893, #894) by @robinebers
- Extract layout persistence, startup rules, dashboard sections, and panel management into focused components (#895, #896, #897, #898, #899, #900, #902) by @robinebers
- Refresh pricing and panel documentation (#884) by @robinebers
- Test the real metric-divider path (#892) by @robinebers
Full Changelog: v0.7.4-beta.3...v0.7.4-beta.4
- a1bdc28 Keep near-empty Codex pacing calm by @robinebers
- 5fbc22b Show Codex usage percentages as reported by @robinebers
- 2da68aa Capture display before measuring panel height by @robinebers
- 4c53fb1 Preserve the first panel height on open by @robinebers
- ac6a3e3 Extract panel outside-click handling by @robinebers
- 07a35bd Extract panel height handling by @robinebers
- 612d847 Extract popover footer by @robinebers
- dba66ad Extract popover top bar by @robinebers
- 0581cfc Extract dashboard scrolling content by @robinebers
- 35842a9 Extract layout startup rules by @robinebers
- 315e6b3 Extract layout persistence by @robinebers
- a8750e7 Keep unreadable log warnings quiet across batches by @robinebers
- 76247d7 Test the real metric divider path by @robinebers
- 8ddc401 Compute model shares once per render by @robinebers
- f44d4ef Use the controller popover visibility signal by @robinebers
- 1040f53 fix(claude): prefer profile-scoped login over inference-only env token for live usage by @joshuavial
- 2d4a5b4 Simplify menu bar refresh coalescing by @robinebers
- c0b190f Log unreadable usage files once by @robinebers
- f8e02b5 fix(pricing): price GPT-5.6 fast variants by @robinebers
- 27ebb0b Bound concurrent log parsing by @robinebers
- 27bd492 Keep launch-at-login errors visible by @robinebers
- 2669a7b Mark Cursor spend as estimated by @robinebers
- e881be6 Fix request-wide long-context pricing by @robinebers
- 1bcc8f9 Refresh pricing and panel documentation by @robinebers
- 4b61302 Remove unused UI plumbing by @robinebers
- 3194f3b Clear resolved update banner by @robinebers
- c9be949 Add hover affordance to usage trend by @robinebers
- 8a8ea33 Add GPT-5.6 pricing aliases and tests by @robinebers
- Replace Codex resets tooltip with a hover popover and highlight the value on hover by @robinebers
- Add hover highlight on spend-row values so the model breakdown reads as interactive by @claude
- Always show two units at the day scale in
compactDurationby @robinebers - Collapse imminent resets to “soon” and gate the popover on real data by @robinebers
- Distinguish zero resets from unfetched expiries in the Codex resets popover by @robinebers
- Clear the value highlight when the panel closes by tracking hover on the coordinator by @claude
- Remove the legacy Tauri autostart LaunchAgent on launch by @claude
- Single-instance decisions must not trust the LaunchServices snapshot (#874) by @xuing
- Center the Total Spend share arrow like the provider header icons by @robinebers
- Extract
PanelHeightCoordinatorfromDashboardView(auto-fit computation) by @robinebers - Extract
StatusItemImageUpdaterfromStatusItemControllerby @robinebers - Extract
QuotaNotificationEvaluatorfromWidgetDataStoreby @robinebers - Extract
PopoverNavigationStoreand genericTransientNoticefromLayoutStoreby @robinebers - DRY / dead-code / KISS cleanup from code-quality audit by @robinebers
- Address review findings (clamp coverage, image updater, navigation, dedup docs, pill shadow, tests) by @claude
- Update README screenshot and version query on screenshot URL by @robinebers
- Fix Pages deploy recovery in release skill to use
mainref by @robinebers
Full Changelog: v0.7.4-beta.2...v0.7.4-beta.3
- 0506f02 Always show two units at the day scale in compactDuration by @robinebers
- 417900f1 Collapse imminent resets to "soon" and gate the popover on real data by @robinebers
- 5f42ee9c Distinguish zero resets from unfetched expiries in the popover by @robinebers
- cbe303ec Replace Codex resets tooltip with a hover popover and light its value by @robinebers
- dd53cbed Clear the value highlight on panel close by tracking hover on the coordinator by @claude
- 71a6ba00 Add hover highlight to spend-row value so the model breakdown reads as interactive by @claude
- 9cf0c62d Address review findings: real clamp coverage, private clamped, honest imports by @claude
- 84879dd4 Address review findings: non-optional image updater, fix stale doc reference by @claude
- 43241b41 Address review findings: fix stale dedup doc, note the snapshot delta by @claude
- 7f1af892 Address review findings: private navigation, naming, stale doc, notice tests by @claude
- 7cc1f25e Address review findings: pill shadow drift, test pins, Cursor facts adoption by @claude
- dff6786e fix: remove the legacy Tauri autostart LaunchAgent on launch by @claude
- ea51bdf7 fix: single-instance decisions must not trust the LaunchServices snapshot (#874) by @xuing
- f0baad20 refactor(DashboardView): extract PanelHeightCoordinator (auto-fit computation) by @robinebers
- c4c59712 refactor(StatusItemController): extract StatusItemImageUpdater by @robinebers
- 89ee82ec refactor(WidgetDataStore): extract QuotaNotificationEvaluator by @robinebers
- 75971560 refactor(LayoutStore): extract PopoverNavigationStore + generic TransientNotice by @robinebers
- 667f350a refactor: DRY/dead-code/KISS cleanup from code-quality audit by @robinebers
- 4d755626 Add version query to screenshot URL in README by @robinebers
- a26a1130 docs: update README screenshot by @robinebers
- ba04c54f docs(skills): fix Pages deploy recovery to use main ref by @robinebers
- 3686abc1 fix(ui): center the Total Spend share arrow like the provider header icons by @robinebers
- Disable hover tooltips in share-card renders by @robinebers
Full Changelog: v0.7.4-beta.1...v0.7.4-beta.2
- 141bf53 fix(share): disable hover tooltips in share-card renders by @robinebers
- Cross-provider Total Spend ring card with morphing sectors, provider brand colors, a settings toggle, and capability gating (#13120) by @robinebers
- Never drop an enablement wake posted mid refresh pass; probe credentials concurrently by @robinebers
- Anchor tooltips to the hovered item, balance wrapped lines, and use the cursor’s screen for zero-size anchor fallback by @robinebers
- Scope Total Spend to providers with real spend tiles; show the card even when the dashboard is empty by @robinebers
- Derive the Total Spend info tooltip from enabled spend-capable providers by @robinebers
Full Changelog: v0.7.3...v0.7.4-beta.1
- 1d24835 fix: derive Total Spend info tooltip from enabled spend-capable providers by @robinebers
- a00f786 fix(tooltip): pick the cursor's screen for the zero-size anchor fallback by @robinebers
- c95f7c8 fix(dashboard): scope Total Spend to real spend-tile providers, show card with empty dashboard by @robinebers
- 97dec12 fix(tooltip): anchor bubble to the hovered item and balance wrapped lines by @robinebers
- c56d8d1 feat(dashboard): morphing ring sectors, brand colors, settings toggle, capability gating by @robinebers
- 53115a8 Revert "feat(dashboard): stacked-bars variant of the Total Spend card" by @robinebers
- 684ccdc feat(dashboard): stacked-bars variant of the Total Spend card by @robinebers
- 8251ac3 feat(dashboard): cross-provider Total Spend ring card by @robinebers
- 2a225eb fix(refresh): never lose an enablement wake posted mid-pass; probe credentials concurrently by @robinebers
- Native log scanners and dynamic model pricing; drop ccusage (#827) by @robinebers
- Fresh installs start with detected providers and a welcome card (#830) by @robinebers
- Credential-detect providers added by updates; unify installs on enabled-list mode (#838) by @robinebers
- Copilot org-level AI credit usage for org-managed Business/Enterprise seats (#843) by @robinebers
- In-popover update banner and Sparkle 2.9.4 focus fix (#842) by @robinebers
- Replace footer split button with a single Options menu (#841) by @robinebers
- Include Cowork session logs in Claude local spend tiles (#845) by @robinebers
- Per-model spend breakdown when hovering Today / Yesterday / Last 30 Days rows (#850) by @robinebers
- Reset All re-detects installed tools (#853) by @robinebers
- Codex status dot for reset-credit expiry (#854) by @robinebers
- Grok weekly shared-pool meter from the credits config by @validatedev
- Opus 4.7/4.8 fast-mode rates match Cursor's published pricing (#835) by @robinebers
- Claude: explain CLI login when only the desktop app is signed in (#828) by @robinebers
- Copilot: keep probing other orgs when one org's billing has an outage (#843) by @robinebers
- Copilot: don't let a placeholder Extra Usage row block the org billing lookup (#844) by @robinebers
- Open the popover when a pace notification is tapped (#840) by @robinebers
- Claude: surface rate-limited state as a header warning instead of a silent blank (#849) by @robinebers
- Exclude unpriceable usage from every displayed spend total (#853) by @robinebers
- Model breakdown opens only from the value column; breakdown percentages always sum to 100 (#850) by @robinebers
- Grok: reject protobuf varints whose 10th byte overflows 64 bits by @validatedev
- Grok: read weekly pool from the CLI JSON credits endpoint and drop the legacy monthly meter by @robinebers
- Copilot: default both org billing metrics below the expand caret (#843) by @robinebers
- Bump PostHog iOS and actions/checkout (#848, #847) by @app/dependabot
- Trigger Pages deploy from Release and pricing-supplement workflow completion by @robinebers
- Split GrokProviderTests into per-class files by @validatedev
Full Changelog: v0.7.2...v0.7.3
- 68cc5c6 feat(spend): native log scanners + dynamic model pricing, drop ccusage by @robinebers
- be66c05 fix(claude): explain CLI login when only the desktop app is signed in by @robinebers
- 5ea794a fix(claude): only show desktop-app hint when no CLI credentials are stored by @robinebers
- 7aeead1 docs: add pricing-update skill for syncing the pricing supplement by @robinebers
- 59008dd feat(onboarding): fresh installs start with detected providers + welcome card by @robinebers
- e26b1c8 fix(tests): repair desktop-app-hint test broken by ccusage removal on main by @robinebers
- 4fe8d17 fix(tests): port #828's desktop-app test off the removed CcusageRunner by @robinebers
- 3c5882a fix(pricing): override Opus 4.7/4.8 fast-mode rates with Cursor's published pricing by @robinebers
- 8904e73 docs: changelog for v0.7.3-beta.1 by @robinebers
- 1b077d1 feat(providers): credential-detect providers added by updates; unify installs on enabled-list mode by @robinebers
- 224c987 Open the popover when a pace notification is tapped. by @robinebers
- db821dd feat(ui): replace footer split button with a single Options menu by @robinebers
- 7cf5645 feat(updates): in-popover update banner + Sparkle 2.9.4 focus fix by @robinebers
- 8b567ae feat(copilot): show org-level AI credit usage for org-managed Business/Enterprise seats by @robinebers
- 1171895 refactor(copilot): default both org billing metrics below the expand caret by @robinebers
- b15a47e fix(copilot): keep probing other orgs when one org's billing has an outage by @robinebers
- 2d275d5 docs: changelog for v0.7.3-beta.2 by @robinebers
- 9709169 fix(copilot): don't let a placeholder Extra Usage row block the org billing lookup by @robinebers
- e30769d docs: changelog for v0.7.3-beta.3 by @robinebers
- 9fa1923 chore(deps): bump actions/checkout from 4 to 7 (#847) by @app/dependabot
- 0b8c39f chore(deps): bump github.com/posthog/posthog-ios from 3.62.0 to 3.64.1 (#848) by @app/dependabot
- 5936841 fix(claude): surface rate-limited state as a header warning instead of a silent blank (#849) by @robinebers
- c8f3097 docs: changelog for v0.7.3-beta.4 by @robinebers
- 2366bb3 docs(skills): update Pages stall guidance for the Actions-based deploy by @robinebers
- daccf05 feat(claude): include Cowork session logs in the local spend tiles (#845) by @robinebers
- 722e808 docs: changelog for v0.7.3-beta.5 by @robinebers
- 4566101 ci: trigger Pages deploy from Release/pricing-supplement completion by @robinebers
- c11f0d5 feat(dashboard): per-model spend breakdown on spend-row hover by @robinebers
- 5ea4ba4 style(dashboard): center the source-note footer in the breakdown and trend popovers by @robinebers
- 0d03230 fix(dashboard): breakdown percentages always total 100; share the popover footer by @robinebers
- f5f57ae style(dashboard): one source-note string per provider across both popovers by @robinebers
- 1917874 docs: research notes behind the model breakdown hover design by @robinebers
- 9bbe86f fix(dashboard): trigger the model breakdown only on the value column by @robinebers
- 45b05c6 feat(customize): Reset All re-runs installed-tool detection by @robinebers
- d3459af fix(spend): exclude unpriceable usage from every displayed total by @robinebers
- 88aa423 feat(codex): status dot for reset-credit expiry by @robinebers
- 7462c08 docs: changelog for v0.7.3-beta.6 by @robinebers
- 88efe734 test(grok): split GrokProviderTests into per-class files by @validatedev
- d94b5fb feat(grok): weekly shared-pool meter via the gRPC-web credits config by @validatedev
- 9b1357f fix(grok): reject varints whose 10th byte overflows 64 bits by @validatedev
- 5fcb431 refactor(grok): fetch weekly pool via the CLI's JSON credits endpoint, drop legacy monthly meter by @robinebers
- Per-model spend breakdown when hovering the Today / Yesterday / Last 30 Days rows (#850) by @robinebers
- Reset All re-detects installed tools (#853) by @robinebers
- Codex status dot for reset-credit expiry (#854) by @robinebers
- Exclude unpriceable usage from every displayed spend total (#853) by @robinebers
- Model breakdown opens only from the value column; breakdown percentages always sum to 100 (#850) by @robinebers
- Trigger Pages deploy from Release and pricing-supplement workflow completion by @robinebers
Full Changelog: v0.7.3-beta.5...v0.7.3-beta.6
- 88aa423 feat(codex): status dot for reset-credit expiry by @robinebers
- d3459af fix(spend): exclude unpriceable usage from every displayed total by @robinebers
- 45b05c6 feat(customize): Reset All re-runs installed-tool detection by @robinebers
- 9bbe86f fix(dashboard): trigger the model breakdown only on the value column by @robinebers
- 1917874 docs: research notes behind the model breakdown hover design by @robinebers
- f5f57ae style(dashboard): one source-note string per provider across both popovers by @robinebers
- 0d03230 fix(dashboard): breakdown percentages always total 100; share the popover footer by @robinebers
- 5ea4ba4 style(dashboard): center the source-note footer in the breakdown and trend popovers by @robinebers
- c11f0d5 feat(dashboard): per-model spend breakdown on spend-row hover by @robinebers
- 4566101 ci: trigger Pages deploy from Release/pricing-supplement completion by @robinebers
- Include Cowork session logs in the Claude local spend tiles (#845) by @robinebers
- Update skills' Pages stall guidance for the Actions-based deploy by @robinebers
Full Changelog: v0.7.3-beta.4...v0.7.3-beta.5
- daccf05 feat(claude): include Cowork session logs in the local spend tiles (#845) by @robinebers
- 2366bb3 docs(skills): update Pages stall guidance for the Actions-based deploy by @robinebers
- fix(claude): surface rate-limited state as a header warning instead of a silent blank (#849) by @robinebers
- chore(deps): bump github.com/posthog/posthog-ios from 3.62.0 to 3.64.1 (#848) by @app/dependabot
- chore(deps): bump actions/checkout from 4 to 7 (#847) by @app/dependabot
Full Changelog: v0.7.3-beta.3...v0.7.3-beta.4
- 5936841 fix(claude): surface rate-limited state as a header warning instead of a silent blank by @robinebers
- 0b8c39f chore(deps): bump github.com/posthog/posthog-ios from 3.62.0 to 3.64.1 by @app/dependabot
- 9fa1923 chore(deps): bump actions/checkout from 4 to 7 by @app/dependabot
- fix(copilot): don't let a placeholder Extra Usage row block the org billing lookup (#844) by @robinebers
Full Changelog: v0.7.3-beta.2...v0.7.3-beta.3
- 9709169 fix(copilot): don't let a placeholder Extra Usage row block the org billing lookup by @robinebers
- feat(providers): credential-detect providers added by updates; unify installs on enabled-list mode (#838) by @robinebers
- feat(copilot): show org-level AI credit usage for org-managed Business/Enterprise seats (#843) by @robinebers
- feat(updates): in-popover update banner + Sparkle 2.9.4 focus fix (#842) by @robinebers
- feat(ui): replace footer split button with a single Options menu (#841) by @robinebers
- fix(copilot): keep probing other orgs when one org's billing has an outage (#843) by @robinebers
- fix(notifications): open popover when a pace alert is tapped (#840) by @robinebers
- refactor(copilot): default both org billing metrics below the expand caret (#843) by @robinebers
Full Changelog: v0.7.3-beta.1...v0.7.3-beta.2
- b15a47e fix(copilot): keep probing other orgs when one org's billing has an outage by @robinebers
- 1171895 refactor(copilot): default both org billing metrics below the expand caret by @robinebers
- 8b567ae feat(copilot): show org-level AI credit usage for org-managed Business/Enterprise seats by @robinebers
- 7cf5645 feat(updates): in-popover update banner + Sparkle 2.9.4 focus fix by @robinebers
- db821dd feat(ui): replace footer split button with a single Options menu by @robinebers
- 224c987 Open the popover when a pace notification is tapped. by @robinebers
- 1b077d1 feat(providers): credential-detect providers added by updates; unify installs on enabled-list mode by @robinebers
- feat(onboarding): fresh installs start with detected providers + welcome card (#830) by @robinebers
- feat(spend): native log scanners + dynamic model pricing, drop ccusage (#827) by @robinebers
- fix(pricing): override Opus 4.7/4.8 fast-mode rates with Cursor's published pricing (#835) by @robinebers
- fix(claude): explain CLI login when only the desktop app is signed in (#828) by @robinebers
- fix(claude): only show desktop-app hint when no CLI credentials are stored (#828) by @robinebers
- fix(tests): port #828's desktop-app test off the removed CcusageRunner (#834) by @robinebers
- fix(tests): repair desktop-app-hint test broken by ccusage removal on main (#830) by @robinebers
- docs: add pricing-update skill for syncing the pricing supplement (#831) by @robinebers
Full Changelog: v0.7.2...v0.7.3-beta.1
- 3c5882a fix(pricing): override Opus 4.7/4.8 fast-mode rates with Cursor's published pricing by @robinebers
- 4fe8d17 fix(tests): port #828's desktop-app test off the removed CcusageRunner by @robinebers
- e26b1c8 fix(tests): repair desktop-app-hint test broken by ccusage removal on main by @robinebers
- 59008dd feat(onboarding): fresh installs start with detected providers + welcome card by @robinebers
- 7aeead1 docs: add pricing-update skill for syncing the pricing supplement by @robinebers
- 5ea794a fix(claude): only show desktop-app hint when no CLI credentials are stored by @robinebers
- be66c05 fix(claude): explain CLI login when only the desktop app is signed in by @robinebers
- 68cc5c6 feat(spend): native log scanners + dynamic model pricing, drop ccusage by @robinebers
- feat(popover): make Customize the primary footer button and cross-link the two screens by @robinebers
- feat(customize): add Reset All Customization button with confirmation (#815) by @robinebers
- feat(appearance): Increase Transparency toggle + secret-code Party/Drunk easter egg (#784) by @validatedev
- fix(dashboard): open provider Customize from context menu on metrics by @robinebers
- fix(antigravity): rename pool rows to Session/Weekly for cross-provider consistency by @validatedev
- fix(codex): tolerate fetch latency in fresh-window detection so untouched sessions stop reading 99% left by @robinebers
- fix(antigravity): merged Gemini pool + weekly limits via RetrieveUserQuotaSummary by @validatedev
- fix(notifications): ignore reset timestamp jitter (#816) by @robinebers
- chore(worktree-setup): exclude stale agent worktrees from rsync by @robinebers
- docs(release-swift): stable changelogs span last-stable to this-stable by @robinebers
Full Changelog: v0.7.1...v0.7.2
- ed7ef3c chore(worktree-setup): exclude stale agent worktrees from rsync by @robinebers
- a16ee82 fix(dashboard): open provider Customize from context menu on metrics by @robinebers
- 7ab9208 fix(antigravity): rename pool rows to Session/Weekly for cross-provider consistency by @validatedev
- a090ba6 fix(codex): tolerate fetch latency in fresh-window detection so untouched sessions stop reading 99% left by @robinebers
- 1ce97bc fix(antigravity): merged Gemini pool + weekly limits via RetrieveUserQuotaSummary by @validatedev
- d7411a8 feat(popover): make Customize the primary footer button and cross-link the two screens by @robinebers
- d152b09 fix(notifications): ignore reset timestamp jitter (#816) by @robinebers
- 21a109a feat(customize): add Reset All Customization button with confirmation (#815) by @robinebers
- 6e513ec feat(appearance): Increase Transparency toggle + secret-code Party/Drunk easter egg (#784) by @validatedev
- 6aca8aa docs(release-swift): stable changelogs span last-stable to this-stable by @robinebers
- feat(claude): track Fable model-scoped weekly limit from the limits array (#814) by @robinebers
- feat(copilot): track AI Credits + Extra Usage; fix paid quota rendering (#807) by @robinebers
- feat(codex): bring back GPT-5.3-Codex-Spark rate-limit meters (#796) by @robinebers
- feat(zai): add Z.ai provider for GLM Coding Plan usage tracking (#783) by @robinebers
- feat(openrouter): add OpenRouter usage provider (#763) by @robinebers
- feat(copilot): add GitHub Copilot usage provider (#764) by @robinebers
- feat(notifications): quota pace alerts — 3 triggers, launch-prime, per-app stacking (#633) by @robinebers
- feat(cursor): re-enable spend tracking + warn on unknown-model spend (#789) by @robinebers
- feat(cursor): price GLM 5.2 in the spend manifest (#781) by @robinebers
- feat(share): per-provider Copy as Image card (#762) by @robinebers
- feat(share): Share Screenshot footer submenu + copied-to-clipboard pill (#785) by @robinebers
- feat(providers): bring back provider quick-link buttons (#596) by @robinebers
- feat(providers): add quick-link buttons for Devin and Copilot (#799) by @robinebers
- feat(openrouter): add Activity and Credits quick-link buttons (#795) by @robinebers
- feat(customize): undo widget removal (#603) by @robinebers
- Customize: provider list → detail, on/off + API keys in Customize, stars (#797) by @robinebers
- fix(cursor): price Claude Sonnet 5 in spend imputation manifest (#813) by @robinebers
- fix: dynamic widget height for single-provider users (#800) by @robinebers
- fix(claude): surface re-login warning when login lacks user:profile scope (#782) by @robinebers
- fix(spend): no-usage period reads "No data" for every provider (#790) by @robinebers
- fix(providers): resolve env-var API keys from the login shell in packaged builds (#788) by @robinebers
- fix(codex): refresh OAuth token by JWT exp, not a hardcoded 8-day age (#516) by @robinebers
- fix(antigravity): show "Not started" for unused 5-hour quota pools (#761) by @robinebers
- fix(tests): allow OpenRouter Activity/Credits quick-link labels (#805) by @robinebers
- chore(notifications): debug-log each pace-notification decision (#811) by @robinebers
- chore: strict issue-first PR policy + faster stale + AGENTS-aligned PR template (#804) by @robinebers
- chore(codex): drop parsing of retired per-model and review rate limits by @robinebers
- chore(deps): bump github.com/sindresorhus/keyboardshortcuts (#766) by @dependabot[bot]
- chore(deps): bump actions/checkout from 6 to 7 (#765) by @dependabot[bot]
- docs: restore README hero screenshot and trailing newline by @robinebers
- docs: add Installation section with Homebrew cask and latest release DMG by @robinebers
Full Changelog: v0.7.0...v0.7.1
- cursor: price Claude Sonnet 5 in spend imputation manifest (#813) by @robinebers
- Dynamic widget height for single-provider users (#810) by @robinebers
- notifications: debug-log each pace-notification decision (#811) by @robinebers
Full Changelog: v0.7.1-beta.6...v0.7.1-beta.7
- e56c360 chore(notifications): debug-log each pace-notification decision (#811) by @robinebers
- f0aacfc fix(cursor): price Claude Sonnet 5 in spend imputation manifest (#813) by @robinebers
- 0ebd9e4 fix: dynamic widget height for single-provider users (#800) (#810) by @robinebers
- copilot: track AI Credits + Extra Usage; fix paid quota rendering (#807) by @robinebers
- codex: bring back GPT-5.3-Codex-Spark rate-limit meters (#806) by @robinebers
- openrouter: add Activity and Credits quick-link buttons (#795) by @robinebers
- providers: add quick-link buttons for Devin and Copilot (#799) by @robinebers
- Customize: provider list → detail, on/off + API keys in Customize, stars (#797) by @robinebers
- tests: allow OpenRouter Activity/Credits quick-link labels (#805) by @robinebers
- strict issue-first PR policy + faster stale + AGENTS-aligned PR template (#804) by @robinebers
Full Changelog: v0.7.1-beta.5...v0.7.1-beta.6
- c6e4cb9 feat(copilot): track AI Credits + Extra Usage; fix paid quota rendering (#807) by @robinebers
- 149dcd9 feat(codex): bring back GPT-5.3-Codex-Spark rate-limit meters (#796) (#806) by @robinebers
- 5452c3f fix(tests): allow OpenRouter Activity/Credits quick-link labels (#805) by @robinebers
- 7a5daaa chore: strict issue-first PR policy + faster stale + AGENTS-aligned PR template (#804) by @robinebers
- 807ee3f feat(openrouter): add Activity and Credits quick-link buttons (#795) by @robinebers
- 402824d feat(providers): add quick-link buttons for Devin and Copilot (#799) by @robinebers
- 2fccb51 Customize: provider list → detail, on/off + API keys in Customize, stars (#797) by @robinebers
- Add Z.ai provider for GLM Coding Plan usage tracking (#793) by @robinebers
- Surface re-login warning when Claude login lacks the user:profile scope (#794) by @robinebers
Full Changelog: v0.7.1-beta.4...v0.7.1-beta.5
- 9790407 feat(zai): add Z.ai provider for GLM Coding Plan usage tracking (#783) (#793) by @robinebers
- e040e86 fix(claude): surface re-login warning when login lacks user:profile scope (#782) (#794) by @robinebers
- Re-enable Cursor spend tracking and warn on unknown-model spend (#789) by @robinebers
- No-usage period reads "No data" for every provider (#790) by @robinebers
Full Changelog: v0.7.1-beta.3...v0.7.1-beta.4
- 9f5eb51 feat(cursor): re-enable spend tracking + warn on unknown-model spend (#789) by @robinebers
- 028c25c fix(spend): no-usage period reads "No data" for every provider (#790) by @robinebers
- Resolve env-var API keys (e.g.
OPENROUTER_API_KEY) from the login shell in packaged builds, and remove the "Stored in …" caption from the API Keys editor (#788) by @robinebers
Full Changelog: v0.7.1-beta.2...v0.7.1-beta.3
- 8d0b6c7 fix(providers): resolve env-var API keys from the login shell in packaged builds (#788) by @robinebers
- Add OpenRouter usage provider (#763) by @robinebers
- Quota pace alerts — 3 triggers, launch-prime, per-app stacking (#786) by @robinebers
- Share Screenshot footer submenu + copied-to-clipboard pill (#785) by @robinebers
- Refresh Codex OAuth token by JWT exp, not a hardcoded 8-day age (#769) by @robinebers
- Drop parsing of retired Codex per-model and review rate limits by @robinebers
- Restore README hero screenshot and trailing newline by @robinebers
- Add Installation section with Homebrew cask and latest release DMG by @robinebers
Full Changelog: v0.7.1-beta.1...v0.7.1-beta.2
- 386fcfe chore(codex): drop parsing of retired per-model and review rate limits by @robinebers
- 8360e93 feat(openrouter): add OpenRouter usage provider (#763) by @robinebers
- 1cf2eb4 feat(notifications): quota pace alerts — 3 triggers, launch-prime, per-app stacking (#633) (#786) by @robinebers
- fd0890e feat(share): Share Screenshot footer submenu + copied-to-clipboard pill (#785) by @robinebers
- b50efbb docs: restore README hero screenshot and trailing newline by @robinebers
- 2eada69 docs: add Installation section with Homebrew cask and latest release DMG by @robinebers
- 42ce1e2 fix(codex): refresh OAuth token by JWT exp, not a hardcoded 8-day age (#516) (#769) by @robinebers
- Add GitHub Copilot usage provider (#764) by @robinebers
- Undo widget removal (#603) by @robinebers
- Price GLM 5.2 in the spend manifest (#781) by @robinebers
- Bring back provider quick-link buttons (#596) by @robinebers
- Per-provider Copy as Image card (#762) by @robinebers
- Show "Not started" for unused 5-hour quota pools (Antigravity) (#761) by @robinebers
- Bump github.com/sindresorhus/keyboardshortcuts (#766) by @dependabot
- Bump actions/checkout from 6 to 7 (#765) by @dependabot
Full Changelog: v0.7.0...v0.7.1-beta.1
- c74998a feat(copilot): add GitHub Copilot usage provider (#764) by @robinebers
- 7530469 fix(antigravity): show "Not started" for unused 5-hour quota pools (#761) by @robinebers
- 6c3d034 feat(customize): undo widget removal (#603) (#771) by @robinebers
- f159788 feat(cursor): price GLM 5.2 in the spend manifest (#781) by @robinebers
- bf7fa4d feat(providers): bring back provider quick-link buttons (#596) (#779) by @robinebers
- 78ef4a7 feat(share): per-provider Copy as Image card (#762) (#778) by @robinebers
- c148a4c chore(deps): bump github.com/sindresorhus/keyboardshortcuts (#766) by @dependabot
- e62400d chore(deps): bump actions/checkout from 6 to 7 (#765) by @dependabot
A brand-new OpenUsage. The app has been rebuilt from the ground up to be faster, lighter, and feel right at home on your Mac.
Coming from an earlier version? This is a fresh start. Your usage and sign-ins are still read straight from your machine — but the app and its look are all new.
- Rebuilt for Mac — quicker to open, lighter to run, and a clean, modern look. Runs on macOS Sequoia and later, on both Apple Silicon and Intel Macs.
- More providers — Claude, Codex, Cursor, Grok, Devin, and Antigravity, all in one place.
- Usage trends — a quick sparkline of recent usage for Claude, Codex, Cursor, and Grok.
- Pacing — see whether you're ahead or behind, with a "Limit in 3h 45m" estimate and an optional always-on view.
- Clearer spend — cost and tokens shown side by side, with a clean "$0.00 · 0 tokens" when there's nothing to show yet.
- Codex limit resets — see when your limits refresh, right in the menu bar and popover.
- Make it yours — resize the panel, expand extra metrics, reorder providers, pin your favorites to the menu bar, and right-click for quick actions.
- Private by default — optional, anonymous usage and crash reporting you can turn off anytime.
- Your settings now stick — updating no longer resets your layout, pins, and preferences.
- More reliable Claude sign-in — steadier connection and clearer messages when something needs attention.
- Cursor — spend is temporarily hidden while Cursor's own usage data is delayed, so you don't see misleading numbers.
- Smaller fixes and polish throughout.
Full Changelog: v0.6.28...v0.7.0
Thanks to @robinebers, @davidarny, and @validatedev.
- Anonymous opt-out PostHog usage analytics (#735) by @robinebers
- Anonymous crash + uncaught-exception reporting (#739) by @robinebers
- Add Antigravity provider (#745) by @robinebers
- Remove discontinued Sonnet weekly limit (#744) by @robinebers
- ccusage: local-time day buckets, no fabricated $0.00 for unreported days (#746) by @robinebers
Full Changelog: v0.7.0-beta.15...v0.7.0-beta.16
- 9d732c7 fix(ccusage): local-time day buckets, no fabricated $0.00 for unreported days (#746) by @robinebers
- e5cf2f7 fix(claude): remove discontinued Sonnet weekly limit (#744) by @robinebers
- dc2a80d feat(antigravity): add Antigravity provider (#745) by @robinebers
- 67e546b feat(telemetry): anonymous crash + uncaught-exception reporting (#739) by @robinebers
- c344732 feat(telemetry): anonymous opt-out PostHog usage analytics (#735) by @robinebers
- 1765ba7 docs: simplify release-swift skill and document release channels by @robinebers
- 57d210a chore: preserve Tauri updater manifest during Swift flip by @robinebers
- 4d1158b chore: prepare Swift branch cutover by @robinebers
- a6d6050 chore: add macOS agent skills and skills-lock by @robinebers
- feat(popover): coordinated-morph auto-resize for the menu-bar panel (#730) by @robinebers
- feat(popover): System Settings grouped surface + Settings-primary footer (#726) by @robinebers
- Centered Customize/Settings header + per-provider reset menu (#734) by @robinebers
- fix(settings): rename Startup→General, Menu Style→Icon Style (#733) by @robinebers
Full Changelog: v0.7.0-beta.14...v0.7.0-beta.15
- bb8876a Centered Customize/Settings header + per-provider reset menu (#729) (#734) by @robinebers
- b41f139 fix(settings): rename Startup→General, Menu Style→Icon Style (#733) by @robinebers
- 0ad7edc feat(popover): coordinated-morph auto-resize for the menu-bar panel (#730) by @robinebers
- 098777b feat(popover): System Settings grouped surface + Settings-primary footer (#726) by @robinebers
- feat(popover): opaque body + content-aware Liquid Glass footer/header (#724) by @robinebers
- fix(build): stamp linked SDK 26 so AppKit renders modern Liquid Glass controls (#725) by @robinebers
- Fix Cursor credits and extra usage balances (#723) by @robinebers
Full Changelog: v0.7.0-beta.13...v0.7.0-beta.14
- f72e514 fix(build): stamp linked SDK 26 so AppKit renders modern Liquid Glass controls (#725) by @robinebers
- 3760233 feat(popover): opaque body + content-aware Liquid Glass footer/header (#724) by @robinebers
- f8e7ff7 Fix Cursor credits and extra usage balances (#723) by @robinebers
Heads up: while OpenUsage is in Early Access, updating to a new beta resets all settings — layout, pins, preferences, and the menu-bar shortcut — back to defaults. Betas ship no settings migrations, so each one starts from a clean slate.
- Reset all settings to defaults on every beta update (no migrations during Early Access) by @robinebers
- Liquid Glass split button in the footer (#722) by @robinebers
- Add expandable dashboard metrics by @robinebers
- Show "Not started" for unused Codex/Claude sessions; simplify pace ticks (#719) by @robinebers
- Make the menu-bar panel user-resizable (#717) by @robinebers
- Remove the Reduce Transparency setting; the popover keeps its Liquid Glass surface (#718) by @robinebers
- Render tooltips above the popover and wrap long text (#715) by @davidarny
- Fail loudly on malformed custom OAuth URL instead of crashing (#700) by @robinebers
- Try all Claude credential sources with fallback on auth failure (#694) by @robinebers
- Restrict Usage Trend hover to the mini chart, not the label (#716) by @robinebers
- Fix pace marker placement: true even-pace line in both views (#714) by @robinebers
- Refine row/provider right-click menus + footer pull-down button (#713) by @robinebers
Full Changelog: v0.7.0-beta.12...v0.7.0-beta.13
- 2d47fb4 feat(settings): reset all settings on beta version changes by @robinebers
- a234aeb fix(popover): restore translucent footer with behind-window glass by @robinebers
- 730ffa7 feat(popover): Liquid Glass split button in the footer (#722) by @robinebers
- d93a745 Add expandable dashboard metrics by @robinebers
- 1c13b7d feat(pacing): show "Not started" for unused Codex/Claude sessions; simplify pace ticks (#719) by @robinebers
- 6faaf25 feat(popover): solid opaque surface; drop Reduce Transparency toggle (#718) by @robinebers
- 4aca0ba fix(tooltip): render above popover and wrap long text (#715) by @davidarny
- 11d673a fix(claude): fail loudly on malformed custom OAuth URL instead of crashing (#700) by @robinebers
- 39ad9f3 fix(claude): try all credential sources with fallback on auth failure (#687) (#694) by @robinebers
- cf8ee7b Restrict usage trend hover to the mini chart, not the label (#716) by @robinebers
- 336821d feat(popover): make the menu-bar panel user-resizable (#717) by @robinebers
- dea1d2d Fix pace marker placement: true even-pace line in both views (#714) by @robinebers
- 7937806 Refine row/provider right-click menus + footer pull-down button (#713) by @robinebers
- Add "Always Show Pacing" setting for on-track meters (#707) by @robinebers
- Extend Usage Trend sparkline to Cursor and Grok (#698) by @robinebers
- Default Reduce Transparency on for readability (#691) by @robinebers
- Add provider-header drag handle (#677) by @robinebers
- Add Usage Trend sparkline for Claude and Codex (#669) by @davidarny
- Fix metric value tooltips (#710) by @robinebers
- Reorder default metric customization (#711) by @robinebers
- Fix Codex session usage percent (#708) by @robinebers
- Fix menu bar metric units (#709) by @robinebers
- Clamp quota percent meters to 0–100 (#706) by @robinebers
- Scope snapshot freshness to the running session (#702) by @robinebers
- Top-leading back nav on Customize/Settings; unify Customize header (#699) by @robinebers
- Unify Extra Usage number formatting via MetricFormatter (#695) by @robinebers
- Restore estimate note on spend-row ⓘ tooltip (#692) by @robinebers
- Streamline Swift codebase for release (incl. #690) (#693) by @robinebers
- Document AGENTS.md as agent instruction source by @robinebers
Full Changelog: v0.7.0-beta.11...v0.7.0-beta.12
- ab503ec fix metric value tooltips (#710) by @robinebers
- 0738d38 Reorder default metric customization (#711) by @robinebers
- a4cba27 Fix Codex session usage percent (#708) by @robinebers
- 9afa03f Document AGENTS.md as agent instruction source by @robinebers
- e40f37d Fix menu bar metric units (#709) by @robinebers
- da039fe feat(dashboard): add "Always Show Pacing" setting for on-track meters (#685) (#707) by @robinebers
- 3664118 fix(metrics): clamp quota percent meters to 0–100 (#703) (#706) by @robinebers
- 5faf25c fix(cache): scope snapshot freshness to the running session (#697) (#702) by @robinebers
- f338734 Top-leading back nav on Customize/Settings; unify Customize header (#699) by @robinebers
- b545135 feat(dashboard): extend Usage Trend sparkline to Cursor and Grok (#688) (#698) by @robinebers
- 0da519b fix(format): unify Extra Usage number formatting via MetricFormatter (#658) (#695) by @robinebers
- f9a047d refactor: streamline Swift codebase for release (incl. #690) (#693) by @robinebers
- bac1132 fix(dashboard): restore estimate note on spend-row ⓘ tooltip (#683) (#692) by @robinebers
- 260542a feat(settings): default Reduce Transparency on for readability (#691) by @robinebers
- 8836031 feat(dashboard): add provider-header drag handle (#677) by @robinebers
- be801f1 feat(dashboard): add Usage Trend sparkline for Claude and Codex (#669) by @davidarny
- feat(codex): show rate-limit reset credits with per-credit expiry (#675) by @robinebers
- feat(menubar): add right-click context menu with Settings and Quit (#671) by @davidarny
- fix(popover): clear stray focus ring on open, click-away, and close (#674) by @davidarny
- fix(dev): fall back to the prebuilt icon when actool fails in build_and_run.sh (#673) by @davidarny
- fix(dashboard): flag stale snapshots with an "Updated X ago" hint (#668) by @davidarny
- fix(refresh): stop runaway refresh storm that drops the menu-bar item (#665) by @robinebers
- hardening: fix local-API crash + MainActor freeze; replace silent fallbacks with loud failures (#667) by @robinebers
- perf(refresh): cache ccusage runner resolution and snapshot blob (#672) by @davidarny
Full Changelog: v0.7.0-beta.10...v0.7.0-beta.11
- 2082b39 feat(codex): show rate-limit reset credits with per-credit expiry (#675) by @robinebers
- bf66276 perf(refresh): cache ccusage runner resolution and snapshot blob (#672) by @davidarny
- 64e2d13 fix(popover): clear stray focus ring on open, click-away, and close (#674) by @davidarny
- b4d828a fix(dev): fall back to the prebuilt icon when actool fails in build_and_run.sh (#673) by @davidarny
- 03782a7 feat(menubar): add right-click context menu with Settings and Quit (#671) by @davidarny
- 7769bfc fix(dashboard): flag stale snapshots with an "Updated X ago" hint (#582) (#668) by @davidarny
- b05f794 fix(refresh): stop runaway refresh storm that drops the menu-bar item (#665) by @robinebers
- f1afaa8 hardening: fix local-API crash + MainActor freeze; replace silent fallbacks with loud failures (#667) by @robinebers
- feat(footer): fold Settings + Check for Updates into the More menu (#657) by @robinebers
- feat(updates): check for updates hourly instead of daily (#655) by @robinebers
- fix(tooltip): reveal hover tooltips after a short delay, not the slow native one (#660) by @validatedev
- fix(spend): show "$0.00 · 0 tokens" for zero-usage periods, add tokens unit (#656) by @robinebers
Full Changelog: v0.7.0-beta.9...v0.7.0-beta.10
- 4f02053 fix(tooltip): reveal hover tooltips after a short delay, not the slow native one (#660) by @validatedev
- 040c511 feat(footer): fold Settings + Check for Updates into the More menu (#657) by @robinebers
- c436284 fix(spend): show "$0.00 · 0 tokens" for zero-usage periods, add tokens unit (#656) by @robinebers
- 2a9cf92 feat(updates): check for updates hourly instead of daily (#655) by @robinebers
- Grok local spend tiles + unify spend tiles across providers (#650) by @robinebers
- Host the dashboard in a key-capable NSPanel (reliable Esc/Return) (#652) by @robinebers
- Unify popover max height across Customize and Settings (#651) by @robinebers
Full Changelog: v0.7.0-beta.8...v0.7.0-beta.9
- b6c6fcc fix(popover): host the dashboard in a key-capable NSPanel (reliable Esc/Return) (#652) by @robinebers
- 849862f fix: unify popover max height across Customize and Settings (#591) (#651) by @robinebers
- 210a395 feat: Grok local spend tiles + unify spend tiles across providers (#646) (#650) by @robinebers
- Split spend into cost/tokens, carry raw metric values (#641, #647) by @robinebers
- Show Codex rate limit resets in the tray and popover (#638) by @robinebers
- Collapse the footer Customize button into a More menu (#640) by @robinebers
- Label the pace run-out time as "Limit in 3h 45m" (#643) by @robinebers
- Show a numeric projection in pace meter tooltips at reset (#644) by @robinebers
- Resolve npx/npm/pnpm/yarn ccusage runners, not just bunx (#643) by @robinebers
- Follow nvm alias indirection when locating the ccusage runner (#643) by @robinebers
- Unify the Codex rate-limit-resets value across tray and popover (#638) by @robinebers
- Promote a ~0% projected-spare pace meter to red, not amber (#639) by @robinebers
- Anchor the footer More menu to a flipped view (#640) by @robinebers
- Guard against a second app instance (duplicate menu-bar icon) (#637) by @robinebers
- Use a deterministic lowest-PID tie-break in the single-instance guard (#637) by @robinebers
- Add Reduce Transparency setting for readability (#629) by @robinebers
- Drop global pin cap, keep two per provider (#630) by @robinebers
- Only draw card border/frost when Reduce Transparency is on by @robinebers
- Enlarge header provider glyph to match the menu-bar strip by @robinebers
- Align README with per-provider pin limit by @robinebers
- Build a universal binary so the app runs natively on both Apple Silicon and Intel Macs by @robinebers
- Support macOS 15 (Sequoia) and later, not only Tahoe (#623) by @robinebers
- Enlarge provider glyphs in the menu-bar Text strip (#627) by @robinebers
- Drop the unworkable macos-15 CI verify leg (#623) by @robinebers
- Show the full version, including the beta tag, in both the updater prompt and the app footer so they match by @robinebers
- Add hero screenshot to README by @robinebers
Full Changelog: v0.7.0-beta.3...v0.7.0-beta.4
- 763306b fix(version): show the full version (incl. -beta.N) in Sparkle and the app by @robinebers
- a82e8b3 docs: add hero screenshot to README by @robinebers
- Port the Tauri debug-logging system to the native app (#615) by @robinebers
- Fix white flicker on screen switches with an offset pager (#614) by @robinebers
- Fix Codex/Devin usage bugs (#612) by @robinebers
- Settings: drop Refresh Every, move Style into Appearance as Menu Style (#613) by @robinebers
- Remove dead code, fix stale comments, dedupe HTTP status guard (#619) by @robinebers
- Remove dead code, DRY duplication, hot-path allocations (#610) by @robinebers
- Add rollout guardrails, rename release skill to release-swift, show full version in app (#621) by @robinebers
- Remove dead self-referential links and screenshot placeholders (#618) by @robinebers
- Run dev build in place instead of installing a Preview app by @robinebers
Full Changelog: v0.7.0-beta.2...v0.7.0-beta.3
- c80b034 feat(logging): port the Tauri debug-logging system to the native app by @robinebers
- 9c7d95e Fix white flicker on screen switches with an offset pager (#614) by @robinebers
- 250b278 Fix Codex/Devin usage bugs; cut dead code, DRY dup, stale docs by @robinebers
- da7c69c Settings: drop Refresh Every, move Style into Appearance as Menu Style by @robinebers
- 524e07e refactor: remove dead code, fix stale comments, dedupe HTTP status guard by @robinebers
- 8bdaf61 Refactor: remove dead code, DRY duplication, hot-path allocations by @robinebers
- c44247a chore: add rollout guardrails, rename release skill, show full version by @robinebers
- 6a9645d docs: remove dead self-referential links and screenshot placeholders by @robinebers
- 0ea6b97 Run dev build in place instead of installing a Preview app by @robinebers