Skip to content

Sync upstream v0.32.1 and Claude OAuth ownership fix#17

Open
RajvardhanPatil07 wants to merge 125 commits into
o1xhack:mobile-devfrom
RajvardhanPatil07:sync/upstream-v0.32.1-auth
Open

Sync upstream v0.32.1 and Claude OAuth ownership fix#17
RajvardhanPatil07 wants to merge 125 commits into
o1xhack:mobile-devfrom
RajvardhanPatil07:sync/upstream-v0.32.1-auth

Conversation

@RajvardhanPatil07
Copy link
Copy Markdown

@RajvardhanPatil07 RajvardhanPatil07 commented May 31, 2026

Summary

  • Merge upstream v0.32.1 into the mobile fork, covering upstream v0.29.1 through v0.32.1.
  • Include the Claude OAuth ownership fix from upstream PR 1239 so CLI-owned refresh tokens stay delegated when CLI storage exists.
  • Preserve fork release behavior: MARKETING_VERSION=0.32.1.1, BUILD_NUMBER=76.1, MOBILE_VERSION=1.9.0, and leave appcast.xml unchanged until signed release artifacts are generated.
  • Keep fork-specific release signing/staging while adopting upstream private notarization temp-dir handling and widget extension packaging.
  • Drop the upstream-added agent release skill from the merge result; this branch contains no generated/co-author signature strings.

Refs #11, #12, #13, #14, #15, #16.

Verification

  • Shell syntax check for release/build scripts
  • Diff whitespace check for the merge commit
  • Localization audit
  • Parser-version audit
  • Parser-hash regeneration and audit
  • SwiftFormat portion of lint: 0/1038 files require formatting

Not completed locally

  • Focused Swift tests did not reach the test runner because this machine only has Command Line Tools active. The keyboard-shortcut dependency failed to compile SwiftUI #Preview macros with PreviewsMacros missing.
  • xcodebuild -version is unavailable for the same reason: active developer directory is /Library/Developer/CommandLineTools.
  • SwiftLint crashed loading sourcekitdInProc.framework, also consistent with the missing full Xcode/SourceKit environment.

steipete and others added 30 commits May 22, 2026 18:40
* Display extra-usage spend in menu bar

* docs: update changelog for menu bar extra usage spend

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
…1078)

* perf: background credits and dashboard fetch for regular refreshes

Move refreshCreditsIfNeeded() and refreshOpenAIDashboardIfNeeded() into background tasks for non-forced refreshes. Add Task?-based coalescing guard for credits refresh to prevent unbounded stacking.

Forced refreshes (manual) still await inline.

Split from #1073.

* fix: persist widget snapshots after background refreshes

* fix: scope background codex refresh coalescing

* fix: cancel scheduled codex credits before force refresh

* test: split codex background refresh coalescing coverage

* fix: stop cancelled dashboard refresh side effects

* test: await background codex credits refresh

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Display: add workday segmentation for weekly progress bars

Fixes #1096 — Weekly Progress Bar configurable to segment in number of work days.

- Add a Display preference for weekly progress work-day segmentation:
  Off / 4 days / 5 days / 7 days
- Draw display-only day-boundary tick marks on weekly usage bars
- Keep the default Off / nil so existing users see no UI change
- Merge work-day markers with existing quota warning markers
- No warning/alert behavior added; future warnings remain out of scope for this PR

Validation:
- swift test --filter MenuCardQuotaWarningMarkerTests
- swift test --filter SettingsStoreCoverageTests
- swift test --filter MenuCardModelTests
- make check

* Fix weekly workday marker observation and codex lanes

* Linux: import FoundationNetworking for HTTPCookie

* docs: update changelog for workday markers

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Fix OpenCode Go local usage

* Fix OpenCode Go monthly anchor

* fix: keep OpenCode Go web usage authoritative

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Fix Claude OAuth extra usage spend normalization

* docs: update changelog for Claude spend normalization

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Provider switcher: compact multi-row layout

Fixes/follows up #1082.

Summary:
- Reduces vertical crowding in the merged provider switcher when many providers are enabled.
- Adds compact row heights only for stacked multi-row layouts:
  - 3 rows: 40pt → 36pt
  - 4+ rows: 40pt → 34pt
- Keeps single-row and two-row behavior unchanged.
- Does not add NSScrollView.
- Does not change hitTest, acceptsFirstMouse, mouseDown, or mouseUp.
- Preserves provider ordering and click behavior.
- UI-only: no provider fetching, billing, quota, parsing, ProviderCostSnapshot, or usage snapshot changes.

Validation:
- swift test --filter StatusMenuSwitcher
- swift test --filter MenuCard
- make check
- git diff --check

* Provider switcher: use safer compact row height

* fix: cover compact provider switcher rows

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix: use Groq logo for Groq provider icon

The Groq provider icon was a duplicate of the Grok (xAI) logo. Replace
with the actual Groq 'Q' wordmark so the Settings page shows the
correct brand.

* test: cover distinct Groq provider icon

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix: retry transient OpenAI usage failures

* docs: add OpenAI retry PR reference
Preserve status item identity during display-change recovery and refresh displaced live items in place, including same-count display remaps.

Co-authored-by: Magicien <162632566+lederniermagicien@users.noreply.github.com>
Fix Claude CLI subscription-only /usage handling.

Claude CLI 2.1 can return only the subscription notice without quota data. Classify that as a precise no-quota parse failure, stop PTY collection on the notice, and fall back to direct CLI usage when the PTY panel times out or fails to load.

Proof:
- claude --version => 2.1.148 (Claude Code)
- direct claude /usage returns the subscription-only notice
- CodexBarCLI usage --provider claude --source cli reports the subscription-specific error
- swift test --filter 'StatusProbeTests.*subscription|TTYIntegrationTests.*subscription|ClaudeDirectUsageFallbackTests|SubprocessRunnerTests'
- make check
- autoreview --mode local clean

Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com>
Add zh-Hant localization resources, wire Traditional Chinese into the language picker, and credit the contributor in the changelog.

Co-authored-by: IlyaL <ilyaliao324@gmail.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Allow the valid Codex CLI Gatekeeper diagnostic where spctl reports a signed command-line binary as "rejected (the code is valid but does not seem to be an app)" while keeping higher-risk blocked signals denied.

Validated with focused PathBuilderTests, make check, local spctl reproduction against Codex CLI, and green GitHub checks.

Co-authored-by: hhh2210 <hzy2210@gmail.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Avoid overcounting forked Codex sessions when parent logs are unavailable. Includes maintainer changelog credit for @jskoiz.
Preserve legacy credentials when migrated config changes fail to persist, so a later retry can recover and clean up safely. Includes maintainer changelog credit for @RajvardhanPatil07.
Label Grok usage bars from the actual billing/reset window, including the maintainer fix for late-cycle windows. Includes maintainer changelog credit for @kiankyars.
* Improve Simplified Chinese localization for visible UI

* Fix cost labels and localization lookup

* Fix dynamic cost window labels and missing localization keys

* Fix UsageFormatter localization resources and locale

* Fix formatter locale fallback and pace resource keys

* Polish remaining zh-Hans visible labels

* Fix one-day and token KPI labels

* docs: update changelog for zh-Hans localization

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix(localization): improve Traditional Chinese wording

- Refine zh-Hant strings for more natural Taiwan usage and terminology.

- Replace provider terminology with 提供者 across Traditional Chinese copy.

- Validate localized resources, placeholder parity, diff cleanliness, and high-risk term usage.

* fix(localization): localize notification copy

- Route quota warning, session depleted/restored, and login success notifications through localized strings.

- Add English and Traditional Chinese notification keys with focused notification copy tests.

- Validate with make check and focused notification/localization tests.

* test(localization): stabilize English text assertions

- Pin English-only assertions to the English localization override so local app language settings do not affect tests.

- Adjust the OpenAI web refresh test wait order to avoid a full-suite scheduling timeout.

- Verification: make check, swift test.

* docs: update changelog for zh-Hant localization

---------

Co-authored-by: Alan.Chang <alan.chang@everbot.com.tw>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Harden Release CLI manual dispatch [skip ci]

* Harden release tag handling [skip ci]

* Preserve manual artifact dispatches [skip ci]

* docs: update changelog for release CLI hardening

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Deduplicate OpenAI and Mistral API spend rendering through the shared cost-history dashboard and menu path.

Co-authored-by: Zhongyue Lin <101193087+LeoLin990405@users.noreply.github.com>
Fix provider switcher keyboard shortcuts while the merged status menu is open.

- handle Cmd-number and left/right provider switcher shortcuts without closing the menu
- clean up the shortcut monitor through the shared menu close path
- keep the monitor polling nonblocking in event-tracking mode

Local proof:
- swift test --filter 'StatusMenuSwitcherClickTests|StatusMenuSwitcherRefreshTests|StatusMenuPersistentRefreshTests|SubprocessRunnerTests'
- swift test --filter StatusMenuSwitcherClickTests
- make check
- autoreview --mode branch --base origin/main

Fixes #1156.
Fixes #1144.

Co-authored-by: Anirudh Venkatachalam <50367124+anirudhvee@users.noreply.github.com>
Add characterization coverage for provider metadata label invariants without changing runtime behavior.

Local proof:
- swift test --filter 'ProviderLabelMetadataCharacterizationTests|ProviderRegistryTests'
- make check
- autoreview --mode branch --base origin/main

Refs #804.

Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com>
steipete and others added 30 commits May 30, 2026 19:43
Require HTTPS before manually reattaching imported browser cookies on Amp and Ollama redirects.

Local proof:
- swift test --filter 'AmpUsageFetcherTests|OllamaUsageFetcherTests'
- make check
- git diff --check origin/main...HEAD
- autoreview --mode branch --base origin/main

CI: all required checks green.

Co-authored-by: hinotoi-agent <paperlantern.agent@gmail.com>
Preserve the last good Claude Web usage snapshot across the first gated Unauthorized refresh failure, while still surfacing repeated Unauthorized errors and preserving first-run failure behavior.

Maintainer proof:
- swift test --filter ClaudeWebRefreshResilienceTests
- make check
- git diff --check origin/main...HEAD
- autoreview --mode branch --base origin/main

CI: all required checks green.

Live Claude auth proof was intentionally not run: repo policy forbids routine validation that can touch real provider auth or trigger Keychain/browser-cookie prompts. Source-level stub coverage exercises the failure gate and prior/no-prior snapshot behavior.

Co-authored-by: Zhongyue Lin <101193087+LeoLin990405@users.noreply.github.com>
Filter Antigravity remote OAuth per-model quota output to the intended visible projection while preserving complete local IDE quota lists.

Remote quota rows now hide unconsumed lite/autocomplete/image/internal/unknown models, keep consumed noisy rows as detail-only extras, and order visible model families consistently. Summary bars use only selectable text-family models for remote snapshots so image/lite/autocomplete/internal rows cannot drive primary/secondary/tertiary summaries.

Proof:
- swift test --filter AntigravityStatusProbeTests
- swift test --filter MenuCardAntigravityTests
- make check
- autoreview clean after maintainer fixups
- CI 26693620400 green
Remove the same-user mutable temporary script from the macOS CLI installer privilege boundary.

The installer now passes the bundled helper path to AppleScript as an argument, quotes it inside AppleScript, and builds the privileged symlink command in memory before invoking `bash -c` with administrator privileges. Existing symlink targets are preserved: `/usr/local/bin/codexbar` and `/opt/homebrew/bin/codexbar`.

Proof:
- bash -n bin/install-codexbar-cli.sh
- extracted AppleScript heredoc compiles with osacompile
- static checks confirmed mktemp/install_script/bash temp-file handoff removed
- git diff --check
- make check
- autoreview clean
- CI green on PR head 6b329567
Security hardening for the release notarization path.

Keeps notarization API key material and upload ZIPs inside a per-run private temporary directory, sets restrictive permissions, and cleans it up on exit. Final release artifact paths remain unchanged.

Proof:
- bash -n Scripts/sign-and-notarize.sh
- static grep for removed predictable /tmp paths
- stubbed release harness covering 0700 temp dir, 0600 API key, private notarization ZIP, cleanup, unchanged final artifacts
- make check
- autoreview clean
- CI green
* fix: defer tracked menu background rebuilds

* fix: preserve explicit hosted menu refreshes
Preserve Claude CLI OAuth refresh token ownership so CodexBar delegates refresh when Claude Code storage is present.

Adds regression coverage for mixed cache/file/keychain ownership and the CodexBar-only fallback path.

Co-authored-by: Rajvardhan Patil <243567420+RajvardhanPatil07@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.