Repository navigation
v0.8.0
⚠️ Upgrading From 0.7.x: Read This FirstThis 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
openusagecommand: the JSON changed.providersis keyed by account id (codex@1a2b3c4d), not by provider, andschemais nowopenusage.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
- Delete CHANGELOG.md and read notes from the GitHub Release (#1668) by @robinebers
- Lower the CI job timeout from 20 to 12 minutes (#1669) by @robinebers
- Say a closed update banner stays hidden until restart (#1659) by @robinebers
- List what a crash report and every event send (#1658) by @robinebers
- Match docs and comments to the app (#1654) by @robinebers
- Clear compiler warnings and dead code (#1653) by @robinebers
- Read rendered text with fast OCR where accurate fails by @robinebers
- Prepare the repository for Amp orbs and Mac satellites by @robinebers
- Remove the shortcut recorder focus tests (#1635) by @robinebers
- Wait for test refreshes to settle before timing a tab switch (#1626) by @robinebers
- Bump github.com/posthog/posthog-ios from 3.93.1 to 3.93.4 (#1629) by @dependabot[bot]
- Bump github.com/posthog/posthog-ios from 3.92.7 to 3.93.1 (#1595) by @dependabot[bot]
- Share test fakes and drop duplicate account tests (#1587) by @robinebers
- Drop duplicate provider tests (#1584) by @robinebers
- Drop duplicate and tautological UI and store tests (#1582) by @robinebers
- Drop stale config, unused script lines and duplicated contributor docs (#1591) by @robinebers
- Make the Keychain error and Display tab tests pass in any language and on macOS 27 (#1586) by @robinebers
- Remove the General Question issue chooser link by @robinebers
- Show CHANGELOG notes in Sparkle's update window (#1573) by @robinebers
- Add a manual Test Build workflow for signed DMGs without a release (#1571) by @robinebers
- List Cursor and Ollama history rows in the summary table (#1570) by @robinebers
- Put every docs page on a prose diet (#1569) by @robinebers
- Cut the README down to a short product page (#1568) by @robinebers
- Show Priority and All Usage in light and dark (#1567) by @robinebers
- Match the Unreleased notes to the Priority rebuild (#1539) by @robinebers
- Bump github.com/posthog/posthog-ios from 3.92.0 to 3.92.7 (#1502) by @dependabot[bot]
- Bump github.com/sparkle-project/sparkle (#1503) by @dependabot[bot]
- Time out the Build and Test job after 20 minutes (#1534) by @robinebers
- Send a double-click's clicks back to back (#1533) by @robinebers
- List the removed appearance settings and correct the cache wording (#1509) by @robinebers
- Note CLIProxyAPI hub accounts by @robinebers
- Make the top bar and sign-in sheet tests pass on macOS 15 (#1489) by @robinebers
- List the removed Density setting and Reset All Customization (#1480) by @robinebers
- Say crash reports ignore the analytics opt-out (#1479) by @robinebers
- Correct the changelog's reorder, undo, and CLI breaking changes (#1477) by @robinebers
- Align the provider guide and test command with main (#1476) by @robinebers
- Expect 0.7.x's Credits star on the restored Credits meter (#1473) by @robinebers
- The changelog tells a 0.7.x script what it loses and how to read every account by @robinebers
Changelog
Full Changelog: v0.7.16...v0.8.0
- 35e88e9 fix(cliproxy): say to allow Local Network when macOS blocks the hub (#1672) by @robinebers
- 781237a fix(alerts): rename the Will Run Out alert to Burning Fast (#1671) by @robinebers
- 24a761f fix(refresh): retry a refresh that had no network path instead of flagging it (#1670) by @robinebers
- b0cd177 chore(release): delete CHANGELOG.md and read notes from the GitHub Release (#1668) by @robinebers
- 647ff12 fix(claude): read reset grants with usage and keep their kinds in the cache (#1666) by @robinebers
- f9adb8b ci: lower the CI job timeout from 20 to 12 minutes (#1669) by @robinebers
- 2d7f45c fix(priority): keep a pinned limit under Pinned unless it's used up (#1667) by @robinebers
- d899e15 fix(resets): tighten the unified resets list and drop "Use by" (#1665) by @robinebers
- 8aafda2 fix(hubs): show why removing a hub failed on its page (#1663) by @robinebers
- 3a735d6 fix(dashboard): match ⌘Z and ⌘, on the typed character (#1662) by @robinebers
- cbb3bf7 fix(claude): retry a reset-grants read that fails before the first answer (#1664) by @robinebers
- b3f6e79 fix(cursor): read Extra Usage spend from the same budget as its limit (#1661) by @robinebers
- 6586c9f feat(opencode): sign in to OpenCode Console and show the Go plan (#1650) by @robinebers
- f84068b fix(alerts): start a new alert window only once the old reset has passed (#1660) by @robinebers
- 387c222 docs(updates): say a closed update banner stays hidden until restart (#1659) by @robinebers
- 31000e8 docs(privacy): list what a crash report and every event send (#1658) by @robinebers
- 404d763 fix(settings): draw the Display tab's menu bar preview live at a fixed size (#1651) by @robinebers
- 776768c docs: match docs and comments to the app (#1654) by @robinebers
- 1f3b9fe chore: clear compiler warnings and dead code (#1653) by @robinebers
- 6b3f365 fix(openrouter): read activity dates that carry a time of day (#1655) by @robinebers
- 635e002 fix(dashboard): say 1 Account on a unified limit one account reports (#1656) by @robinebers
- b7d81db fix(grok): show the pay-as-you-go cap in dollars (#1657) by @robinebers
- ea46fc6 fix(claude): ask for user:inference so Use can spend a reset (#1652) by @robinebers
- b48d389 feat(settings): show each alert once with Priority and Notify switches (#1649) by @robinebers
- 086009a feat(settings): add info icon and provider marks to Unify Accounts (#1648) by @robinebers
- 2ee7204 feat(settings): regroup the Display, Alerts and General tabs (#1647) by @robinebers
- 213a76c feat(dashboard): unify multiple accounts of one provider (#1646) by @robinebers
- d29b508 feat(amp): add Amp provider with device-code sign-in (#1645) by @robinebers
- 38a2a7d docs: changelog for v0.8.0-beta.7 (#1644) by @robinebers
- 974f393 feat(resets): name each reset and spend the one you pick (#1642) by @validatedev
- 618f018 fix(cliproxyapi): reread hubs on Refresh and count only real unsupported logins (#1643) by @robinebers
- ee98159 fix(antigravity): show active Gemini quotas and session resets (#1641) by @validatedev
- 6dcaad7 test: read rendered text with fast OCR where accurate fails by @robinebers
- 388ee5f feat(dashboard): switch tabs on press with no slide (#1640) by @robinebers
- 0a2c2c8 Prepare the repository for Amp orbs and Mac satellites by @robinebers
- a4fd6dc docs: changelog for v0.8.0-beta.6 (#1639) by @robinebers
- b26af19 fix(menu-bar): leave Used Up out of the +N count (#1638) by @robinebers
- a86da8f feat(dashboard): hide a metric from its right-click menu by @robinebers
- f7e38d7 docs: changelog for v0.8.0-beta.5 (#1636) by @robinebers
- c06de18 test(settings): remove the shortcut recorder focus tests (#1635) by @robinebers
- 9cdbb7b fix(ui): fit clock resets beside the percentage (#1634) by @robinebers
- a9747b5 fix(dev): use Claude's current plan names in sample data (#1631) by @xevrion
- c3f830c fix(settings): open notification settings with one click (#1617) by @validatedev
- 76d75f1 test(ui): wait for test refreshes to settle before timing a tab switch (#1626) by @robinebers
- ce1ffd3 chore(deps): bump github.com/posthog/posthog-ios from 3.93.1 to 3.93.4 (#1629) by @dependabot[bot]
- 0a3813a feat(dev): seeded random sample data for dev builds (#1601) by @validatedev
- 7244255 docs: changelog for v0.8.0-beta.4 (#1625) by @robinebers
- 23bbf35 fix(settings): leave the Command Line footer empty when there is nothing to report by @robinebers
- f1bce15 feat(menu-bar): add Always Show In Menu Bar to mirror Priority's order (#1616) by @robinebers
- 5879ce4 fix(settings): show the Terminal Helper link note as a warning by @robinebers
- 959072a fix(settings): move every explainer note into its row's info tooltip by @robinebers
- 94aedf8 fix(panel): keep the system footer edge on macOS 27 and frost it on 26 by @robinebers
- 5cfcad4 fix(panel): frost content under the footer on macOS 26 and later by @robinebers
- 04ee766 fix(settings): name the setting Privacy Mode by @robinebers
- 3d50beb fix(settings): explain Hide From Screenshots and Recordings in an info tooltip by @robinebers
- d6fa8c2 fix(privacy): blur copied cards only with Hide From Screenshots and Recordings on by @robinebers
- 5104077 feat(privacy): blur account names while Hide From Screen Share sees a capture (#1599) by @validatedev
- 01fc4aa fix(ui): show minutes in reset times a few days out (#1618) by @Quejicus
- c35420a fix(ui): move screens, pages, and tabs at the Mac's native pace (#1615) by @robinebers
- d0f36ab docs: changelog for v0.8.0-beta.3 (#1612) by @robinebers
- fdf7a23 feat(ui): explain settings in info tooltips and list Used Up last (#1609) by @robinebers
- 214ba77 feat(dashboard): show a provider's copy button beside its logo on card hover (#1610) by @robinebers
- 852b1bd feat(dashboard): mark the even pace on bars and Priority rings (#1606) by @robinebers
- 6178964 feat(copilot): sign in on GitHub Enterprise domains on GHE.com (#1607) by @robinebers
- fad9164 feat(settings): group Display's Priority settings under one heading (#1604) by @robinebers
- ecae332 feat(priority): list limits to use before they reset by @robinebers
- 629f174 docs: changelog for v0.8.0-beta.2 (#1600) by @robinebers
- 7198074 chore(deps): bump github.com/posthog/posthog-ios from 3.92.7 to 3.93.1 (#1595) by @dependabot[bot]
- 8c51921 refactor(ui): use the stock shortcut recorder and a single pulsing waiting mark (#1596) by @robinebers
- fd83e2c feat(notifications): add Use It or Lose It alert (#1598) by @robinebers
- 6ccbd55 feat(priority): list limits burning fast (#1594) by @robinebers
- 4beb01a refactor(providers): reuse the login HTTP helpers and Foundation APIs (#1590) by @robinebers
- 844f902 test: share test fakes and drop duplicate account tests (#1587) by @robinebers
- 876108b refactor: drop dead code and one-caller wrappers (#1585) by @robinebers
- 0524455 test: drop duplicate provider tests (#1584) by @robinebers
- 4d4a05d test: drop duplicate and tautological UI and store tests (#1582) by @robinebers
- def713c chore: drop stale config, unused script lines and duplicated contributor docs (#1591) by @robinebers
- 3879241 fix(priority): move a used-up pin to Used Up (#1589) by @robinebers
- e44d9d7 fix(claude): title an Enterprise plan's Extra Usage row Spend (#1592) by @robinebers
- df0713a feat(settings): add Priority Limits for warning and critical levels (#1588) by @robinebers
- 4118be4 test: make the Keychain error and Display tab tests pass in any language and on macOS 27 (#1586) by @robinebers
- 481f1ed feat(telemetry): replace refresh rollups with daily provider account counts (#1581) by @robinebers
- d40c588 fix(login): require a host on the prefilled verification link by @robinebers
- c17aec9 fix(cursor): title a team-pool Extra Usage row Team Spend by @robinebers
- 5971747 chore: remove the General Question issue chooser link by @robinebers
- 5532d2b fix(login): fall back to the plain verification link when the prefilled one is unusable by @robinebers
- 701753a fix(muse): show Session and Weekly at 0% before first use and prefill the device code by @robinebers
- 8a88321 fix(claude): show Extra Usage in the account's billing currency by @robinebers
- afe383e refactor(muse): keep last values only when Muse leaves out all usage by @robinebers
- 996d427 feat(muse): add Muse Code provider with device-code sign-in by @robinebers
- d4fcdee feat(zai): show and use banked Session and Weekly resets (#1576) by @robinebers
- 596ca10 docs: changelog for v0.8.0-beta.1 (#1575) by @robinebers
- 87ef48f ci(release): show CHANGELOG notes in Sparkle's update window (#1573) by @robinebers
- fcb5085 ci(release): add a manual Test Build workflow for signed DMGs without a release (#1571) by @robinebers
- d6835e8 docs(providers): list Cursor and Ollama history rows in the summary table (#1570) by @robinebers
- e33b32f docs: put every docs page on a prose diet (#1569) by @robinebers
- b192a36 docs(readme): cut the README down to a short product page (#1568) by @robinebers
- 111b414 docs(readme): show Priority and All Usage in light and dark (#1567) by @robinebers
- 7b232e9 feat(accounts): nest CLIProxyAPI hub accounts under a hub page (#1565) by @robinebers
- 66d706c feat(dashboard): show skeleton rows until an account's first reading, and flag Needs Attention only after a failed refresh (#1564) by @robinebers
- 0c4ef6d fix(cliproxyapi): allow http to Tailscale hubs and show one message on Connect (#1563) by @robinebers
- 61f39c2 fix(accounts): keep a provider turned off in 0.7.x off on upgrade, and correct the notes (#1562) by @robinebers
- 1ae841d fix(cliproxyapi): harden hub keys and the login mirror, then turn the hub on (#1545) by @robinebers
- 4381761 feat(share): sign share images with a tinted OpenUsage footer band (#1561) by @robinebers
- 5fe11a9 feat(priority): drop the big All Clear and always show the Running Out row (#1560) by @robinebers
- debd37a feat(priority): put Priority Icons first in Display and list running-out pins only under Running Out (#1559) by @robinebers
- 759e6f1 feat(priority): keep the Running Out header above All Clear and pin from the row menu (#1558) by @robinebers
- cd3ba30 fix(updates): restore Check for Updates… in the Options menu (#1556) by @robinebers
- 88e4261 fix(dashboard): always show balances at $0 and hide disabled Extra Usage (#1557) by @robinebers
- 16d35bc fix(dashboard): always show time-range rows at 0 and disabled Extra Usage as no data (#1555) by @robinebers
- 313213a feat(priority): pin metrics to a Pinned section at the top of Priority (#1553) by @robinebers
- 161f19b feat(menu-bar): show the app icon with a dot when an update is available (#1554) by @robinebers
- 8b21637 fix(openrouter): drop BYOK from saved rows, share one popup empty state, name every account (#1552) by @robinebers
- 31f7109 fix(panel): soft edge under the footer only, clean edge under the headers (#1549) by @robinebers
- 1acc905 fix(openrouter): show dollars in history rows and tokens and BYOK in a Cursor-style popup (#1550) by @robinebers
- c5a2f41 fix(panel): fade content under the bars instead of the system glass edge (#1548) by @robinebers
- 587ed16 fix(openrouter): drop the Credits bar, which has no limit behind it (#1547) by @robinebers
- a375380 feat(dashboard): welcome 0.7.x upgraders back on the empty dashboard (#1546) by @robinebers
- 03fa48b feat(dashboard): tell 0.7.x upgraders why their accounts are gone (#1544) by @robinebers
- a67a783 fix(zai): read a 401 inside an OK response as a rejected key (#1543) by @robinebers
- 0231165 feat(settings): bring back Log Level under Advanced → Debug (#1542) by @robinebers
- 6b5452c fix(grok): stop asking for profile and api:access at sign-in (#1541) by @robinebers
- a69d4da feat(accounts): hide and reorder an account's metrics from its page (#1540) by @robinebers
- 75e1ab1 fix(accounts): show Sign In Again only when the account needs attention (#1538) by @robinebers
- 673842d docs(changelog): match the Unreleased notes to the Priority rebuild (#1539) by @robinebers
- 92140f0 feat(accounts): open the Default Tab after a successful Sign In Again (#1537) by @robinebers
- f39ac7a fix(claude): make a new sign-in prove itself with its own request (#1536) by @robinebers
- 4f1b92f feat(dashboard): rebuild the panel around Priority and All Usage (#1535) by @robinebers
- 0a761af chore(deps): bump github.com/posthog/posthog-ios from 3.92.0 to 3.92.7 (#1502) by @dependabot[bot]
- cde20d3 chore(deps): bump github.com/sparkle-project/sparkle (#1503) by @dependabot[bot]
- 0118a32 ci: time out the Build and Test job after 20 minutes (#1534) by @robinebers
- daa3ff0 fix(refresh): keep one Keychain read in flight per account and check Claude's due reads first (#1517) by @robinebers
- 42fd173 fix(settings): re-read notification permission (#1532) by @robinebers
- 2114be5 fix(providers): read 403 rate limits and dual 429s as rate limits (#1529) by @robinebers
- 5144e17 test(dashboard): send a double-click's clicks back to back (#1533) by @robinebers
- 0455ae9 fix(dashboard): show a hidden-metrics state, not onboarding, when accounts exist (#1528) by @robinebers
- a98a3ab fix(accounts): order accounts the same way on every screen and keep it after a removal (#1522) by @robinebers
- 53d0414 feat(codex): show daily credits, tokens, turns and the credit limit (#1524) by @robinebers
- 8a0c696 fix(claude): re-read reset grants once a grant is spent (#1531) by @robinebers
- b1ed495 feat(openrouter): show BYOK, budget, free requests and activity on the shared usage history (#1523) by @robinebers
- bfed8f8 fix(sign-in): mask the pasted Devin token (#1530) by @robinebers
- 1adeac3 fix(claude): fail a sign-in whose profile read failed instead of adding a duplicate (#1525) by @robinebers
- 638affc fix(refresh): a waiting manual refresh respects a fresh 429 (#1521) by @robinebers
- 502867a fix(auth): wait out Retry-After before renewing a sign-in early again (#1526) by @robinebers
- 10ac77a fix(claude): a late success keeps a newer 429 window (#1527) by @robinebers
- f619b4a fix(accounts): a replaced key clears the old key's 429 hold (#1511) by @robinebers
- d72e810 feat(ollama): show usage value, tokens and requests from /api/usage (#1520) by @robinebers
- dc3bf01 fix(cursor): count an event without token usage as zero tokens (#1519) by @robinebers
- c170e3d fix: keep card ids unique, undo across a rename, and device sign-in through a network error (#1516) by @robinebers
- b91d417 fix(providers): reject provider numbers too large for an Int (#1518) by @robinebers
- e504a1c fix(auth): keep renewed tokens when the Keychain write fails (#1515) by @robinebers
- 66f7c9c fix(sign-in): keep the loopback callback listening through stray requests (#1513) by @robinebers
- 0208a4d fix(openrouter): accept a workspace-scoped management key (#1512) by @robinebers
- fd48f14 fix(layout): carry over the enabled 0.7.x account's layout (#1514) by @robinebers
- fada9bc fix(cli): name the account-keyed limits JSON openusage.limits.v2 (#1504) by @robinebers
- 7268b48 fix(settings): title notification rows after the alerts they send (#1481) by @robinebers
- a050846 feat(cursor): show tokens, usage events and per-range breakdowns on a shared usage history (#1501) by @robinebers
- 5505e59 fix(refresh): keep a stuck hourly read from stalling every refresh (#1506) by @robinebers
- df3901d docs: list the removed appearance settings and correct the cache wording (#1509) by @robinebers
- 6133346 fix(antigravity): renew a refused token once and retry a failed project lookup (#1510) by @robinebers
- 498677a fix(accounts): retry the 0.7.x key import until the key is saved (#1507) by @robinebers
- 9d704d4 fix(refresh): cap Retry-After waits at an hour (#1505) by @robinebers
- 05baba8 fix(cliproxyapi): keep stored hubs inert while the hub is off (#1508) by @robinebers
- dd94b65 fix(claude): show Max and Ultra plan names (#1499) by @robinebers
- a936e1e fix(cliproxyapi): keep a late rejection of a replaced key from stopping the new one by @robinebers
- 461e77c refactor(cliproxyapi): gate only the Add Account choice and drop the hub doc while it is off by @robinebers
- d83e0a6 feat(cliproxyapi): turn the hub off behind CLIProxyHub.isEnabled until it is finished by @robinebers
- 6cd3cac feat(cliproxyapi): mirror Antigravity, Devin, and Grok hub logins (#1491) by @robinebers
- 3bfb106 feat(cliproxyapi): move the hub mark from the plan to after the account name by @robinebers
- a5c3a6e feat(cliproxyapi): mark a hub account's card with the CLIProxyAPI glyph after its plan by @robinebers
- e1c959c fix(cliproxyapi): show a hub Claude plan on its first refresh and skip disabled logins by @robinebers
- c025046 revert(cliproxyapi): show a login on a hub and signed in directly twice by @robinebers
- 7e3982e refactor(cliproxyapi): drop the resync mailbox and unused conformances by @robinebers
- cdd786c feat(cliproxyapi): show a login once when it is on a hub and signed in directly by @robinebers
- 8f3398b docs(changelog): note CLIProxyAPI hub accounts by @robinebers
- d965a74 feat(accounts): mirror CLIProxyAPI hub logins as Claude and ChatGPT accounts by @robinebers
- 3b615db fix(menu-bar): stop dimming the strip when an account is stale (#1493) by @robinebers
- 91ea4a0 feat(cursor): show what Cursor charged today, yesterday, and in the last 30 days (#1483) by @robinebers
- 0f2da90 feat(ollama): name Ollama accounts by their ollama.com email (#1482) by @robinebers
- e4cd530 fix(resets): refresh the account as soon as a reset claim lands (#1488) by @robinebers
- 520caec fix(http): stop caching provider responses (#1486) by @robinebers
- 36f5d96 fix(popover): grow the panel with the slide on macOS 15 (#1490) by @robinebers
- 7950aa5 test(macos15): make the top bar and sign-in sheet tests pass on macOS 15 (#1489) by @robinebers
- c926ffb fix(script): read the front app's display name in test_quiet.sh (#1487) by @robinebers
- 75bbaa7 feat(accounts): import 0.7.x's OpenRouter and Z.ai keys once (#1484) by @robinebers
- aa2e748 docs(changelog): list the removed Density setting and Reset All Customization (#1480) by @robinebers
- 06636b6 docs: say crash reports ignore the analytics opt-out (#1479) by @robinebers
- 26bf253 feat(accounts): add API Keys back to Ollama's and Z.ai's quick links (#1478) by @robinebers
- 815d8d3 docs: correct the changelog's reorder, undo, and CLI breaking changes (#1477) by @robinebers
- 17ad52a docs: align the provider guide and test command with main (#1476) by @robinebers
- 8ed39cf feat(devin): star Daily and Weekly by default (#1475) by @robinebers
- 61944da fix(release): close the nine P3 follow-ups from the release review (#1471) by @robinebers
- 8093f14 feat(accounts): name Cursor accounts by email and show a repeated provider name once (#1472) by @robinebers
- f34d5b8 test(layout): expect 0.7.x's Credits star on the restored Credits meter (#1473) by @robinebers
- 2114114 feat(layout): carry over 0.7.x stars and order, and leave 0.7.x's keys untouched (#1469) by @robinebers
- d0ca505 feat(devin): restore Devin with a Windsurf token sign-in (#1468) by @robinebers
- 44637bb feat(cursor): take Enterprise and Team membership from usage-summary (#1465) by @robinebers
- e20a473 fix(accounts): keep stored accounts this build cannot read (#1462) by @robinebers
- 7058825 fix(openrouter): read usage by key kind and restore Credits and Key Limit (#1467) by @robinebers
- 9d58bb2 Host the dashboard below the panel's content view so SwiftUI never sizes the panel (#1470) by @robinebers
- c354c8a feat(proxy): restore the config-file proxy for provider requests (#1464) by @robinebers
- ee3bf06 fix(cli): use the app's account names and staleness rule (#1466) by @robinebers
- f9bb8bb fix(oauth): treat only a refused token renewal as an expired sign-in (#1461) by @robinebers
- 886b3c4 fix(providers): restore the Grok team plan and Claude's "spent" word (#1463) by @robinebers
- 28ffb97 fix(oauth): send a random state, never the PKCE verifier (#1460) by @robinebers
- 8f9720b The panel is exactly as tall as its screen's content, with no minimum height (#1458) by @robinebers
- e872965 Open a Copilot organization's billing page from its account menu by @robinebers
- 81e13c3 Show Copilot Org Credits and Org Spend as an Organization Billing account (#1456) by @robinebers
- d72b83b ChatGPT's Extra Usage row shows the credits' dollar value again (#1452) by @robinebers
- 38d29fc Name a Z.ai key that has no GLM Coding Plan (#1451) by @robinebers
- 428d142 Hide usage from the menu bar while the screen is shared or recorded (#1454) by @robinebers
- d9ca8ef Replace an API-key account's key from its page (#1455) by @robinebers
- bb5644e The changelog tells a 0.7.x script what it loses and how to read every account by @robinebers
- cdea8a1 The openusage JSON drops its always-empty errors key by @robinebers
- 5d5b73a Add Credits back to OpenRouter's quick links by @robinebers
- 7129ab2 Bring the new OpenUsage into main: accounts sign in, API-reported usage only (#1444) by @robinebers