codeburn/mac/Sources/CodeBurnMenubar/Data
iamtoruk 0f7bfb3eb2 fix(menubar): make a failed disconnect leave a consistent state
disconnect() cleared the usage block before anyone knew whether the delete
had worked, and AppStore then returned early on failure — so a failed
disconnect cleared some state, left the rest, and still posted
subscriptionDisconnected. It also carried a second !isSuccess branch that the
early return had already made unreachable.

Both services now return the delete result and only clear the usage block on
success, so a failure changes nothing at all: the provider stays connected,
Disconnect stays available, and the banner asks for a retry. That matches the
success path's ordering instead of half-applying it.

Errors reaching the generic catches now render localizedDescription rather
than String(describing:), so a Keychain failure shows its message instead of
an enum dump with the raw item name in it.
2026-08-19 11:43:44 -07:00
..
CapacityEstimator.swift feat(mac): native Swift menubar app + one-command install 2026-04-17 16:55:56 -07:00
ClaudeCredentialStore.swift fix(menubar): keep the newer credential copy and drop the sticky retry flag 2026-08-19 11:43:32 -07:00
ClaudeSubscriptionService.swift fix(menubar): make a failed disconnect leave a consistent state 2026-08-19 11:43:44 -07:00
CLIClaudeConfig.swift feat(menubar): configure CLAUDE_CONFIG_DIRS via Settings (#434) (#436) 2026-06-06 02:30:46 +02:00
CodeBurnCacheDirectory.swift perf(desktop): share cache state and eliminate duplicate cold hydration 2026-08-12 17:16:41 +03:00
CodexCredentialStore.swift fix(menubar): keep the newer credential copy and drop the sticky retry flag 2026-08-19 11:43:32 -07:00
CodexSubscriptionService.swift fix(menubar): make a failed disconnect leave a consistent state 2026-08-19 11:43:44 -07:00
CodexUsage.swift feat(codex): show the credit limit on credit-metered ChatGPT workspaces 2026-07-27 08:19:59 -04:00
DataClient.swift fix(desktop): close cache and lifecycle review gaps 2026-08-12 20:31:17 +03:00
KimiQuotaPresentation.swift fix(menubar): keep showing Kimi quota when the login is idle, stamp stale data 2026-07-26 06:35:13 -07:00
KimiSubscriptionService.swift menubar: add Kimi Code subscription quota tracking 2026-07-23 21:31:55 +02:00
MenubarPayload.swift feat(app,menubar): surface parity — Spend punchcard in the app, Pull requests strip in the menubar 2026-08-10 14:29:26 -07:00
MenubarStatusCache.swift perf(desktop): share cache state and eliminate duplicate cold hydration 2026-08-12 17:16:41 +03:00
QuotaPace.swift menubar: linear pace on Codex quota windows — deficit/reserve, projection, run-out ETA (#726) (#728) 2026-07-20 05:21:43 -07:00
QuotaSummary.swift Live quota bar inside AgentTab + Claude OAuth refresh gate (#255) 2026-05-06 19:57:17 -07:00
ServeConnection.swift fix(desktop): close cache and lifecycle review gaps 2026-08-12 20:31:17 +03:00
SubscriptionRefreshCadence.swift Live quota bar inside AgentTab + Claude OAuth refresh gate (#255) 2026-05-06 19:57:17 -07:00
SubscriptionSnapshotStore.swift perf(desktop): share cache state and eliminate duplicate cold hydration 2026-08-12 17:16:41 +03:00
SubscriptionUsage.swift fix(menubar): provider-correct plan tab copy; surface model-scoped weekly limits 2026-07-02 19:37:51 +02:00
UpdateChecker.swift fix(menubar): clarify update failure status 2026-07-26 15:20:13 +08:00
UsageDataChangeGuard.swift docs(dsh): finish the provider registration checklist 2026-08-17 10:59:58 -07:00
UsageRefreshCadence.swift menubar: skip unchanged background refreshes, 120s AC idle cadence, utility QoS for tick spawns (#703) (#704) 2026-07-16 15:11:25 -07:00