v0.7.4
New Features
- 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
Bug Fixes
- 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
Refactor
- 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
Chores
- 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]
Changelog
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