Before you update:
- Codex turn counts jump from zero to thousands, and the first launch rescans Codex transcripts once. Codex used to announce a human turn one way and around version 0.145 changed to another; TokenBar recognised only the old shape, so the Daily and Monthly cards read 0 turns for Codex on essentially every day. Nothing was recounted: on every day with Codex activity every other figure is byte-identical before and after - tokens, cost, messages, models - and only the turn column moves. Reading turns out of the old cache is not possible, so the Codex parser version moves 5 to 6 and every Codex shard is rebuilt once on first launch. No other client's cache is touched, and the launch after it is normal speed.

Features:
- The paid OpenCode Go plan now has a quota card. OpenCode stores the Go plan under a separate api key, and TokenBar read only the Copilot quota that lives in the same file. Its rolling, weekly and monthly windows now appear under the existing opencode client rather than as a new tab.
- Kiro's monthly allowance now appears as a quota card. Kiro was already recognised as a subscription for attribution, but no quota was ever fetched for it, so the plan had no usage bar.
- Grok Bot's weekly allowance now appears alongside Grok Build's. The two are separate allowances and only Grok Build's was read. Both now appear together under a Grok Build & Bot tab in Overview and Quota, including on machines with no local Grok usage records.
- Reading that allowance needs your permission once. Grok Bot keeps its login in your Keychain and the weekly limit cannot be read without decrypting it, so the card says what it needs and waits rather than letting macOS ask out of nowhere. Allow proceeds and the system dialog follows a second or two later; Not now leaves the card as a single grey line, with Allow still there whenever you change your mind. If macOS itself refuses or never answers, the card says so and TokenBar stops asking rather than raising the dialog again every cycle - Allow tries once more when you want it to. The login is used for one thing: asking Grok Bot's usage endpoint what your weekly limit is. TokenBar does not store it, does not log it, and sends it nowhere else. Declining affects that card and nothing else, and once macOS holds the grant only macOS can withdraw it. Having Grok Bot signed in already does not change this: the card still asks, and macOS may still want to confirm - this release is the first time TokenBar reads that item, so there is no prior grant to rely on.
- Window history grows past twelve rows. The card still opens at twelve, and a link under the list adds twelve more per press until every cycle is on screen. Pressing to exhaustion reaches 32, which is where the engine's fold stops.

Fixes:
- A quota poll could open a browser tab you never asked for. The quota CLI is documented as non-interactive and is not: with an expired token and no DNS it treats the network failure as an authentication failure and starts an interactive sign-in. TokenBar now resolves the endpoint first and gives up without invoking the CLI when that fails.
- A window-history card said usage was never recorded, about usage sitting in the same scan. Two different statements were collapsed into one flag - the machine recorded nothing, and the machine recorded it and you have not said which subscription it belongs to - so a client you had not classified was reported as having no records at all. The flag is now decided per subscription.
- One long model name stretched a whole usage card past the edge of the popover. The layout measured every legend item at its ideal width and took the widest row as the card's own width, so a single entry wider than the popover stretched everything around it. Locally-served model names reach that length easily. Items are now measured against the row they sit on, which lets the label's single-line truncation do the job it was already there to do.
- An OpenCode Go window could be dated to a cycle that had already reset. The clock was read before the request and held across it, so a reset that expired while the request was in flight still compared as being in the future. It is now read after the response arrives.
- A cancelled quota poller kept running for the rest of its minute. Closing the popover cancels it, but the sleep it was parked in observed only its own timeout, so the task stayed alive for up to a minute after the window it served had gone.
