Skip to content

ClaudeNotchBar v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:10
· 45 commits to main since this release

Added

  • Settings window — paste a manual auth token override (auto-saved as you type, useful when the Claude Code token expires or to avoid repeated Keychain prompts), configurable refresh interval (30s–30min), and a "launch at login" toggle (SMAppService).
  • Menu bar icon as a progress pill — shows the consumed amount centered on a color-coded bar (green / orange / red) instead of plain text.
  • Gradient credit bar — the popover's consumption bar now blends green → orange → red across the 50%/80% thresholds instead of jumping between flat colors.
  • 5h / 7-day rate-limit windows displayed in the popover (previously fetched but unused).
  • Host Grotesk typeface and a 3-section popover layout (title / consumption / settings-quit), each following light/dark mode.
  • CI: test.yml (build + swift test on a macOS runner, every push/PR) and release.yml (tag vX.Y.Z → signed .app, .dmg, GitHub Release, Homebrew cask bump).

Fixed

  • Keychain token parsing — the access token is nested under claudeAiOauth.accessToken in Claude Code's stored credentials, not at the top level; the app never authenticated before this fix.
  • Menu bar icon showing no color — MenuBarExtra's label: is hosted by NSStatusItem.button, which silently ignores custom Shape fills and font modifiers (confirmed via Apple Developer Forums). The pill is now pre-rendered to an NSImage via ImageRenderer instead of passed as a live SwiftUI view.
  • "Unable to update Font Descriptor's weight" console warning — chaining .fontWeight() on a custom static font is unreliable; each weight now references its own .ttf by exact PostScript name.
  • Settings window not appearing — .accessory apps (no Dock icon) never become frontmost automatically; openWindow() now pairs with NSApp.activate(ignoringOtherApps:).
  • Illegible buttons in dark mode — the title/bottom section backgrounds used a fixed Color.gray that didn't darken; switched to adaptive Color.primary.opacity().
  • Progress bar losing its color — ProgressView().tint() wasn't reliably applied in this context; replaced by a custom Shape-based bar (also the fix that enabled the gradient above).

Known limitations

  • Not notarized (no Apple Developer Program account) — first launch needs a right-click → Open, or xattr -cr.
  • No reset date shown for the monthly credit limit: Anthropic's /api/oauth/usage doesn't expose one for extra_usage (confirmed) — only the Admin API (different credential entirely) has billing-cycle data.
  • No OAuth refresh-token flow: when the Claude Code token expires, re-run claude login or paste a fresh token in Settings.