Preserve Claude usage source after login#8
Closed
Yuxin-Qiao wants to merge 122 commits into
Closed
Conversation
The Poe logo used a garbled SVG path (a self-intersecting scribble
inside a circle) instead of the actual Poe speech-bubble mark, and the
brand color was green (#26AD61) rather than Poe's official purple.
- Replace docs/logos/poe.svg with the correct Poe mark in #5D5CDE
- Apply the same path fix to the app resource ProviderIcon-poe.svg
- Update the Poe card --brand color in docs/index.html to #5D5CDE
#5D5CDE is Poe's official primary brand color ("Poe purple").
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address PR feedback: the descriptor color drives progress bars, the dashboard, charts, and switcher tabs, and the widget has its own Poe color case — both still used the old green (#26AD61 normalized). - PoeProviderDescriptor.branding.color -> 93/92/222 (#5D5CDE) - CodexBarWidgetViews poe case -> same, matching sibling style Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…inite-cost Reject nonfinite OpenAI cost values
Co-authored-by: Alberto Xosé Méndez Taboada <contacto@albertomendez.gal>
…-guard Guard repository size and document history cleanup
fix: correct Poe provider logo and brand color
Add Galician localization
…e-reset Prevent OpenCode reset timestamp overflow
* Add Russian localization * feat: complete Russian localization * test: account for Russian language label --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix: make Gemini helper deadlines reliable * ci: allow macOS shards to finish * test: tighten Gemini helper timeout fix * ci: preserve macOS test headroom * fix: make Gemini helper waits deterministic * fix: harden Gemini helper completion * docs: clarify Gemini helper fix * fix: make Gemini helper waits deterministic
feat: add ClawRouter usage provider
* Cap Codex session display when weekly quota is exhausted. When the weekly lane is the binding cap, show 0% session remaining and the weekly reset time so the menu card and menu bar do not imply usable 5-hour quota. Co-authored-by: Cursor <cursoragent@cursor.com> * Address weekly-cap review feedback for Codex session display. Retarget the session reset whenever the weekly cap is active, omit the 5h reset when weekly reset metadata is missing, and evaluate cap expiry against render time. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: cap Codex session by weekly quota Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: refresh Codex fallbacks after resets Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: ignore expired Codex limits in menu bar Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: hide expired Codex quota lanes Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: observe merged Codex reset transitions Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: exclude weekly-capped Codex from ranking Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: preserve later Codex quota reset Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * fix: project legacy Codex widget quotas Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> * test: split legacy Codex widget regression Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Reject nonfinite Kimi K2 usage * fix: harden Kimi K2 numeric parsing --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
Reject non-finite, non-positive, and out-of-range numeric timestamps while preserving valid Unix seconds and milliseconds, including the exact cutoff. Make fallback-time coverage deterministic and retain contributor changelog credit. Co-authored-by: JoeVenner <ylafrimi@gmail.com>
Point Amp's Usage Dashboard action at the current usage route while leaving fetch, sign-in, and cookie URLs unchanged. Add exact metadata regression coverage and contributor changelog credit. Co-authored-by: Echo <github@3kh0.net>
Show every positive usage value below one percent as `<1%` before integer rounding, and lock both prefix-first and suffix-first localized formatting with focused regression coverage. Co-authored-by: Yash Raj Pandey <yashpn62@gmail.com>
Roll yearless Claude quota reset dates into the next year when their current-year interpretation is already past, covering both minute-bearing and hour-only formats. Co-authored-by: Yash Raj Pandey <yashpn62@gmail.com>
Preserve fractional Claude web session and weekly utilization by routing both fields through the established numeric parser, with regression coverage through the downstream session window. Co-authored-by: Yash Raj Pandey <yashpn62@gmail.com>
Keep Gemini's Pro lane absent when no Pro quota is reported so menu-bar metric selection falls back to the real Flash usage, with direct resolver regression coverage. Co-authored-by: Yash Raj Pandey <yashpn62@gmail.com>
Correct Devin's mixed-scale top-level percentage boundary so exact one means 1% while preserving fractional fallback quota-object semantics. Co-authored-by: Lex <summarit2.5@gmail.com> Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Update Kimi membership quota enrichment to the current endpoint, add the Code 7-day quota, harden ratio validation, and preserve compact widget fit. Co-authored-by: skyzer <skyzer@gmail.com>
…teipete#1934) * Fix Alibaba Token Plan for Model Studio region The Token Plan provider was hardcoded to bailian.console.aliyun.com (China mainland). International users are now on modelstudio.console. alibabacloud.com, so their cookies never matched and usage never loaded. Add AlibabaTokenPlanAPIRegion following the same pattern as the Coding Plan provider, defaulting to International (modelstudio). Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix: harden Alibaba Token Plan regions --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
…#1931) * Guide Gemini users to Antigravity on consumer-tier shutdown. Detect Google's unsupported-client migration responses during quota, loadCodeAssist, and token refresh so individual accounts see actionable Antigravity setup guidance instead of generic auth failures. Fixes steipete#1929 Co-authored-by: Cursor <cursoragent@cursor.com> * Complete Gemini-to-Antigravity migration UX for consumer tiers. Surface migration guidance at login, in not-logged-in and Antigravity setup errors, and via a Settings action to enable Antigravity when Google returns the unsupported-client shutdown signal. Co-authored-by: Cursor <cursoragent@cursor.com> * Clarify gemini migration docs for signal-gated vs proactive copy. Co-authored-by: Cursor <cursoragent@cursor.com> * Key Settings Antigravity action off typed deprecation state. Replace user-facing error string matching with a Gemini refresh sentinel set only when consumerTierDeprecated is observed. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: gate Gemini migration guidance * test: clarify fake Gemini refresh token --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Add Antigravity pace * Limit Antigravity session pace * fix: preserve Antigravity icon semantics --------- Co-authored-by: Zihaoqi <Zihao-Qi@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
Adds responsive codexbar cards and brief views with bounded terminal rendering, correct reset semantics, partial-success handling, and focused regression coverage. Co-authored-by: Donnie Fiander <44792682+DonnieFi@users.noreply.github.com>
…ete#1932) * feat(claude): show Max usage multiplier (5x/20x) in plan label Anthropic encodes the Max tier in the rate-limit tier string (default_claude_max_5x / default_claude_max_20x), but the plan resolver matched on "max" and dropped the multiplier, so every Max subscription showed as plain "Max". Surface it as "Claude Max 5x" / "Claude Max 20x". The multiplier is only appended when the tier string names the resolved plan, so a mismatched subscription type never inherits a stray multiplier and Pro/Team/Enterprise labels are unchanged. * fix: tighten Claude multiplier labels --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Describe revoked Ollama API keys accurately * Test Ollama revoked key guidance * Document Ollama API key lifecycle * Add screenshot proof * chore: drop placeholder proof image The committed proof image was a 1x1 placeholder, not real evidence. Executable test output in the PR description replaces it. * test: cover rejected Ollama key guidance --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Point Ollama login recovery to sign-in page * Test Ollama sign-in recovery links * Document current Ollama sign-in recovery * fix: align Ollama session recovery guidance --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
…ipete#1968) * feat: track live Codex and Claude agent sessions across Macs Adds an Agent Sessions section to the menu: local sessions discovered via process scan correlated with Codex rollout and Claude project JSONL metadata, remote Macs discovered via Tailscale (plus manual SSH hosts) and fetched over ssh with the bundled CLI. Click a session to focus its terminal window via Accessibility. New 'codexbar sessions' CLI (table/JSON) and 'sessions focus'. Design notes in docs/agent-sessions-design.md, user docs in docs/sessions.md. * refactor: collapse sessions settings to a single toggle Tailscale discovery now runs automatically whenever Agent Sessions is enabled; drops the separate auto-discover toggle and its setting.
* Recognize Ollama WorkOS session cookies * Test Ollama WorkOS cookie selection * Document Ollama WorkOS cookie support * Add screenshot proof * chore: drop placeholder proof image The committed proof image was a 1x1 placeholder, not real evidence. Executable test output in the PR description replaces it. * docs: note Ollama WorkOS sessions --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Detect Ollama WorkOS sign-in redirects * Test Ollama WorkOS redirect detection * Document Ollama WorkOS redirect handling * Add screenshot proof * chore: drop placeholder proof image The committed proof image was a 1x1 placeholder, not real evidence. Executable test output in the PR description replaces it. * fix: detect WorkOS sign-in redirects across all WorkOS hosts WorkOS AuthKit serves the hosted authorize flow from auth.workos.com (and historically api.workos.com). Matching only api.workos.com misses the canonical auth.workos.com redirect, so an expired session would fall through to a parse failure instead of sign-in recovery. Match any *.workos.com host carrying the /user_management/authorize path, and cover auth.workos.com plus a non-WorkOS negative case in the test. * fix(ollama): treat the WorkOS-hosted signin.ollama.com landing as expired The real unauthenticated Ollama/WorkOS redirect chain (verified live) terminates on a hosted sign-in page at signin.ollama.com with HTTP 200, so the final-URL sign-in check previously fell through to a parseFailed error. Classify any landing on signin.ollama.com as a sign-in redirect so the fetcher surfaces invalidCredentials and CodexBar can advance to the next cookie candidate / show sign-in guidance. Add a test case for the signin.ollama.com terminal landing. * fix: harden Ollama sign-in classification --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
Stop pinning claudeUsageDataSource to OAuth after a successful Claude login flow. Keeping the selected source (especially default Auto) preserves OAuth-to-CLI-to-Web fallback when OAuth credentials are not readable after setup. Fixes steipete#1970 Co-authored-by: Yuxin Qiao <Yuxin-Qiao@users.noreply.github.com>
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.
Fixes steipete#1970.
Summary
oauthafter a successful Claude login flow.ClaudeLoginFlowPolicyTests) and updatedocs/claude.md.Root cause
runClaudeLoginFlow()unconditionally setclaudeUsageDataSource = .oauthon success. Explicit OAuth mode has no fallback inClaudeSourcePlanner, so users who completed login but could not read OAuth credentials from Keychain were stuck in a credential prompt loop. Switching config back toautowas the reported workaround.Approach
Introduce
ClaudeLoginFlowPolicy.usageDataSourceAfterSuccessfulLogin(previous:)so successful login preserves the prior source (default Auto stays Auto; explicit CLI/Web/OAuth choices stay explicit). Auto still prefers OAuth when readable.Related
Upstream PR
This branch is intended for a PR to
steipete/CodexBarmain. Cloud agent token cannot open cross-repo PRs on the upstream repo; please open from fork branchcursor/claude-login-preserve-auto-4adcif needed.Commands run
steipete/CodexBarmain(aa401f1d).swift test --filter ClaudeLoginFlowPolicyTestsswift test --filter ClaudeSourcePlannerTestsmake checkLive proof
Not run —
AGENTS.mdforbids live Claude/OAuth/Keychain probes without explicit request. The linked issue includes reporter proof that restoringautostopped the prompt loop.