feat: responsive refresh, multi-limit menu bar, graphical settings and privacy mode - #7
Merged
Merged
Conversation
Xcode 27 builds packages with Swift Build, whose link step gives clang only --sysroot, so LC_BUILD_VERSION recorded the deployment target as the SDK. macOS then ran the app in legacy compatibility mode and SwiftUI opened an empty Settings window at launch. Pass -isysroot to the linker and fail packaging when an executable's SDK does not match the toolchain SDK.
Show usage within seconds after install, sign-in or account switch by watching the Claude and Codex account files and publishing Claude quota before the local activity scan finishes. Budget the Claude usage endpoint with backoff after HTTP 429, keep a recent reading instead of dropping to --, and raise it from newer status-line captures between reads. Queue manual refreshes that arrive during a running refresh and refresh after wake. Let the menu bar show several Claude limits together as labelled numbers, concentric rings or stacked bars, add a right-click quick menu, add privacy mode for the account email, and animate percentage changes while honoring Reduce Motion.
- Settings is wider and two-column, led by a live menu bar preview that renders the real indicator. Provider and limit chips, style previews and a size slider replace the option lists, and a short demo shows the right-click menu. - Codex limits can be chosen for the menu bar, and either provider can be hidden; the right-click menu gains a section per provider. - The panel's settings menu no longer closes itself on the first click: the app activates when the panel opens and returns focus to the previous app when it closes. A status item click while that menu is open only dismisses the menu, and stray outside clicks during menu tracking no longer close the panel.
… background Defer status item updates while the popover is shown: on macOS 27 the item is hosted by MenuBarAgent and changing it closes the transient popover mid-click, leaving the menu bar item unresponsive for seconds. Paint an opaque panel background that also covers the arrow, and widen the single-provider rings panel so three rings fit in one row.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
~/.claude.json,$CODEX_HOME/auth.jsonand the status-line capture, so sign-in and account switches refresh within seconds. Claude quota is published before the local activity scan finishes, and the app refreshes after wake.--from rate limits. The Claude usage endpoint is called on a budget (270 s, or 60 s when forced) with backoff after HTTP 429. A ready reading up to 15 minutes old stays visible. Between reads, newer status-line captures for the same account can raise a window's usage.-isysrootto the linker and fails if any executable's SDK differs from the toolchain SDK.Testing
make ci-check: 248 tests, 0 failures, lint cleanResponsiveRefreshTests,FileChangeMonitorTests,MenuBarMultiWindowTests, plus the privacy header render