Skip to content

OpenUsage 0.8.0

Latest

Choose a tag to compare

@robinebers robinebers released this 12 Nov 15:32
35e88e9

v0.8.0

⚠️ Upgrading From 0.7.x: Read This First

This is a new OpenUsage. You have to add your accounts again. Open the Accounts screen and sign in to each one. OpenUsage no longer picks up the sign-ins of the coding tools on your Mac, so most accounts don't carry over.

What carries over

  • The OpenRouter and Z.ai keys you saved in 0.7.x are added for you, unless you had turned that provider off.
  • Your hidden metrics, metric order, and provider order apply to the first account you add for each provider.

What is gone

  • Spend and token estimates from local logs and model pricing. The app shows only what each provider's API reports for the accounts you sign in to.
  • Account discovery. OpenUsage no longer reads other tools' credentials, config files, Keychain items, databases, or logs.
  • iCloud sync of usage history, the local HTTP API, the log file, the Pi provider, and menu-bar stars.

If you script the openusage command: the JSON changed. providers is keyed by account id (codex@1a2b3c4d), not by provider, and schema is now openusage.limits.v2.

Background and discussion: #1441

New Features

  • OpenCode: sign in to OpenCode Console and show the Go plan (#1650) by @robinebers
  • Show each alert once with Priority and Notify switches (#1649) by @robinebers
  • Add info icon and provider marks to Unify Accounts (#1648) by @robinebers
  • Regroup the Display, Alerts and General tabs (#1647) by @robinebers
  • Unify multiple accounts of one provider (#1646) by @robinebers
  • Amp: add Amp provider with device-code sign-in (#1645) by @robinebers
  • Name each reset and spend the one you pick (#1642) by @validatedev
  • Switch tabs on press with no slide (#1640) by @robinebers
  • Hide a metric from its right-click menu by @robinebers
  • Seeded random sample data for dev builds (#1601) by @validatedev
  • Add Always Show In Menu Bar to mirror Priority's order (#1616) by @robinebers
  • Blur account names while Hide From Screen Share sees a capture (#1599) by @validatedev
  • Explain settings in info tooltips and list Used Up last (#1609) by @robinebers
  • Show a provider's copy button beside its logo on card hover (#1610) by @robinebers
  • Mark the even pace on bars and Priority rings (#1606) by @robinebers
  • Copilot: sign in on GitHub Enterprise domains on GHE.com (#1607) by @robinebers
  • Group Display's Priority settings under one heading (#1604) by @robinebers
  • List limits to use before they reset by @robinebers
  • Add Use It or Lose It alert (#1598) by @robinebers
  • List limits burning fast (#1594) by @robinebers
  • Add Priority Limits for warning and critical levels (#1588) by @robinebers
  • Replace refresh rollups with daily provider account counts (#1581) by @robinebers
  • Muse Code: add Muse Code provider with device-code sign-in by @robinebers
  • Z.ai: show and use banked Session and Weekly resets (#1576) by @robinebers
  • Nest CLIProxyAPI hub accounts under a hub page (#1565) by @robinebers
  • Show skeleton rows until an account's first reading, and flag Needs Attention only after a failed refresh (#1564) by @robinebers
  • Sign share images with a tinted OpenUsage footer band (#1561) by @robinebers
  • Drop the big All Clear and always show the Running Out row (#1560) by @robinebers
  • Put Priority Icons first in Display and list running-out pins only under Running Out (#1559) by @robinebers
  • Keep the Running Out header above All Clear and pin from the row menu (#1558) by @robinebers
  • Pin metrics to a Pinned section at the top of Priority (#1553) by @robinebers
  • Show the app icon with a dot when an update is available (#1554) by @robinebers
  • Welcome 0.7.x upgraders back on the empty dashboard (#1546) by @robinebers
  • Tell 0.7.x upgraders why their accounts are gone (#1544) by @robinebers
  • Bring back Log Level under Advanced → Debug (#1542) by @robinebers
  • Hide and reorder an account's metrics from its page (#1540) by @robinebers
  • Open the Default Tab after a successful Sign In Again (#1537) by @robinebers
  • Rebuild the panel around Priority and All Usage (#1535) by @robinebers
  • ChatGPT: show daily credits, tokens, turns and the credit limit (#1524) by @robinebers
  • OpenRouter: show BYOK, budget, free requests and activity on the shared usage history (#1523) by @robinebers
  • Ollama: show usage value, tokens and requests from /api/usage (#1520) by @robinebers
  • Cursor: show tokens, usage events and per-range breakdowns on a shared usage history (#1501) by @robinebers
  • CLIProxyAPI hub: turn the hub off behind CLIProxyHub.isEnabled until it is finished by @robinebers
  • CLIProxyAPI hub: mirror Antigravity, Devin, and Grok hub logins (#1491) by @robinebers
  • CLIProxyAPI hub: move the hub mark from the plan to after the account name by @robinebers
  • CLIProxyAPI hub: mark a hub account's card with the CLIProxyAPI glyph after its plan by @robinebers
  • CLIProxyAPI hub: show a login once when it is on a hub and signed in directly by @robinebers
  • Mirror CLIProxyAPI hub logins as Claude and ChatGPT accounts by @robinebers
  • Cursor: show what Cursor charged today, yesterday, and in the last 30 days (#1483) by @robinebers
  • Ollama: name Ollama accounts by their ollama.com email (#1482) by @robinebers
  • Import 0.7.x's OpenRouter and Z.ai keys once (#1484) by @robinebers
  • Add API Keys back to Ollama's and Z.ai's quick links (#1478) by @robinebers
  • Devin: star Daily and Weekly by default (#1475) by @robinebers
  • Name Cursor accounts by email and show a repeated provider name once (#1472) by @robinebers
  • Carry over 0.7.x stars and order, and leave 0.7.x's keys untouched (#1469) by @robinebers
  • Devin: restore Devin with a Windsurf token sign-in (#1468) by @robinebers
  • Cursor: take Enterprise and Team membership from usage-summary (#1465) by @robinebers
  • Restore the config-file proxy for provider requests (#1464) by @robinebers
  • Open a Copilot organization's billing page from its account menu by @robinebers
  • Show Copilot Org Credits and Org Spend as an Organization Billing account (#1456) by @robinebers
  • Name a Z.ai key that has no GLM Coding Plan (#1451) by @robinebers
  • Hide usage from the menu bar while the screen is shared or recorded (#1454) by @robinebers
  • Replace an API-key account's key from its page (#1455) by @robinebers
  • Add Credits back to OpenRouter's quick links by @robinebers
  • Bring the new OpenUsage into main: accounts sign in, API-reported usage only (#1444) by @robinebers

Bug Fixes

  • CLIProxyAPI hub: say to allow Local Network when macOS blocks the hub (#1672) by @robinebers
  • Rename the Will Run Out alert to Burning Fast (#1671) by @robinebers
  • Retry a refresh that had no network path instead of flagging it (#1670) by @robinebers
  • Claude: read reset grants with usage and keep their kinds in the cache (#1666) by @robinebers
  • Keep a pinned limit under Pinned unless it's used up (#1667) by @robinebers
  • Tighten the unified resets list and drop "Use by" (#1665) by @robinebers
  • CLIProxyAPI hub: show why removing a hub failed on its page (#1663) by @robinebers
  • Match ⌘Z and ⌘, on the typed character (#1662) by @robinebers
  • Claude: retry a reset-grants read that fails before the first answer (#1664) by @robinebers
  • Cursor: read Extra Usage spend from the same budget as its limit (#1661) by @robinebers
  • Start a new alert window only once the old reset has passed (#1660) by @robinebers
  • Draw the Display tab's menu bar preview live at a fixed size (#1651) by @robinebers
  • OpenRouter: read activity dates that carry a time of day (#1655) by @robinebers
  • Say 1 Account on a unified limit one account reports (#1656) by @robinebers
  • Grok: show the pay-as-you-go cap in dollars (#1657) by @robinebers
  • Claude: ask for user:inference so Use can spend a reset (#1652) by @robinebers
  • CLIProxyAPI hub: reread hubs on Refresh and count only real unsupported logins (#1643) by @robinebers
  • Antigravity: show active Gemini quotas and session resets (#1641) by @validatedev
  • Leave Used Up out of the +N count (#1638) by @robinebers
  • Fit clock resets beside the percentage (#1634) by @robinebers
  • Use Claude's current plan names in sample data (#1631) by @xevrion
  • Open notification settings with one click (#1617) by @validatedev
  • Leave the Command Line footer empty when there is nothing to report by @robinebers
  • Show the Terminal Helper link note as a warning by @robinebers
  • Move every explainer note into its row's info tooltip by @robinebers
  • Keep the system footer edge on macOS 27 and frost it on 26 by @robinebers
  • Frost content under the footer on macOS 26 and later by @robinebers
  • Name the setting Privacy Mode by @robinebers
  • Explain Hide From Screenshots and Recordings in an info tooltip by @robinebers
  • Blur copied cards only with Hide From Screenshots and Recordings on by @robinebers
  • Show minutes in reset times a few days out (#1618) by @Quejicus
  • Move screens, pages, and tabs at the Mac's native pace (#1615) by @robinebers
  • Move a used-up pin to Used Up (#1589) by @robinebers
  • Claude: title an Enterprise plan's Extra Usage row Spend (#1592) by @robinebers
  • Require a host on the prefilled verification link by @robinebers
  • Cursor: title a team-pool Extra Usage row Team Spend by @robinebers
  • Fall back to the plain verification link when the prefilled one is unusable by @robinebers
  • Muse Code: show Session and Weekly at 0% before first use and prefill the device code by @robinebers
  • Claude: show Extra Usage in the account's billing currency by @robinebers
  • CLIProxyAPI hub: allow http to Tailscale hubs and show one message on Connect (#1563) by @robinebers
  • Keep a provider turned off in 0.7.x off on upgrade, and correct the notes (#1562) by @robinebers
  • CLIProxyAPI hub: harden hub keys and the login mirror, then turn the hub on (#1545) by @robinebers
  • Restore Check for Updates… in the Options menu (#1556) by @robinebers
  • Always show balances at $0 and hide disabled Extra Usage (#1557) by @robinebers
  • Always show time-range rows at 0 and disabled Extra Usage as no data (#1555) by @robinebers
  • OpenRouter: drop BYOK from saved rows, share one popup empty state, name every account (#1552) by @robinebers
  • Soft edge under the footer only, clean edge under the headers (#1549) by @robinebers
  • OpenRouter: show dollars in history rows and tokens and BYOK in a Cursor-style popup (#1550) by @robinebers
  • Fade content under the bars instead of the system glass edge (#1548) by @robinebers
  • OpenRouter: drop the Credits bar, which has no limit behind it (#1547) by @robinebers
  • Z.ai: read a 401 inside an OK response as a rejected key (#1543) by @robinebers
  • Grok: stop asking for profile and api:access at sign-in (#1541) by @robinebers
  • Show Sign In Again only when the account needs attention (#1538) by @robinebers
  • Claude: make a new sign-in prove itself with its own request (#1536) by @robinebers
  • Keep one Keychain read in flight per account and check Claude's due reads first (#1517) by @robinebers
  • Re-read notification permission (#1532) by @robinebers
  • Read 403 rate limits and dual 429s as rate limits (#1529) by @robinebers
  • Show a hidden-metrics state, not onboarding, when accounts exist (#1528) by @robinebers
  • Order accounts the same way on every screen and keep it after a removal (#1522) by @robinebers
  • Claude: re-read reset grants once a grant is spent (#1531) by @robinebers
  • Mask the pasted Devin token (#1530) by @robinebers
  • Claude: fail a sign-in whose profile read failed instead of adding a duplicate (#1525) by @robinebers
  • A waiting manual refresh respects a fresh 429 (#1521) by @robinebers
  • Wait out Retry-After before renewing a sign-in early again (#1526) by @robinebers
  • Claude: a late success keeps a newer 429 window (#1527) by @robinebers
  • A replaced key clears the old key's 429 hold (#1511) by @robinebers
  • Cursor: count an event without token usage as zero tokens (#1519) by @robinebers
  • Keep card ids unique, undo across a rename, and device sign-in through a network error (#1516) by @robinebers
  • Reject provider numbers too large for an Int (#1518) by @robinebers
  • Keep renewed tokens when the Keychain write fails (#1515) by @robinebers
  • Keep the loopback callback listening through stray requests (#1513) by @robinebers
  • OpenRouter: accept a workspace-scoped management key (#1512) by @robinebers
  • Carry over the enabled 0.7.x account's layout (#1514) by @robinebers
  • Name the account-keyed limits JSON openusage.limits.v2 (#1504) by @robinebers
  • Title notification rows after the alerts they send (#1481) by @robinebers
  • Keep a stuck hourly read from stalling every refresh (#1506) by @robinebers
  • Antigravity: renew a refused token once and retry a failed project lookup (#1510) by @robinebers
  • Retry the 0.7.x key import until the key is saved (#1507) by @robinebers
  • Cap Retry-After waits at an hour (#1505) by @robinebers
  • CLIProxyAPI hub: keep stored hubs inert while the hub is off (#1508) by @robinebers
  • Claude: show Max and Ultra plan names (#1499) by @robinebers
  • CLIProxyAPI hub: keep a late rejection of a replaced key from stopping the new one by @robinebers
  • CLIProxyAPI hub: show a hub Claude plan on its first refresh and skip disabled logins by @robinebers
  • Stop dimming the strip when an account is stale (#1493) by @robinebers
  • Refresh the account as soon as a reset claim lands (#1488) by @robinebers
  • Stop caching provider responses (#1486) by @robinebers
  • Grow the panel with the slide on macOS 15 (#1490) by @robinebers
  • Read the front app's display name in test_quiet.sh (#1487) by @robinebers
  • Close the nine P3 follow-ups from the release review (#1471) by @robinebers
  • Keep stored accounts this build cannot read (#1462) by @robinebers
  • OpenRouter: read usage by key kind and restore Credits and Key Limit (#1467) by @robinebers
  • Host the dashboard below the panel's content view so SwiftUI never sizes the panel (#1470) by @robinebers
  • Use the app's account names and staleness rule (#1466) by @robinebers
  • Treat only a refused token renewal as an expired sign-in (#1461) by @robinebers
  • Restore the Grok team plan and Claude's "spent" word (#1463) by @robinebers
  • Send a random state, never the PKCE verifier (#1460) by @robinebers
  • The panel is exactly as tall as its screen's content, with no minimum height (#1458) by @robinebers
  • ChatGPT's Extra Usage row shows the credits' dollar value again (#1452) by @robinebers
  • The openusage JSON drops its always-empty errors key by @robinebers

Refactor

  • Use the stock shortcut recorder and a single pulsing waiting mark (#1596) by @robinebers
  • Reuse the login HTTP helpers and Foundation APIs (#1590) by @robinebers
  • Drop dead code and one-caller wrappers (#1585) by @robinebers
  • Muse Code: keep last values only when Muse leaves out all usage by @robinebers
  • CLIProxyAPI hub: gate only the Add Account choice and drop the hub doc while it is off by @robinebers
  • CLIProxyAPI hub: show a login on a hub and signed in directly twice by @robinebers
  • CLIProxyAPI hub: drop the resync mailbox and unused conformances by @robinebers

Chores


Changelog

Full Changelog: v0.7.16...v0.8.0