Repository navigation
Conversation
Google Antigravity, xAI, Kiro, Cursor and the other generic OAuth pools had no dashboard pool controls. The Anthropic pool card now serves them too and is mounted for every non-Codex, non-Anthropic OAuth provider with an account. It offers reset-first, hides the Anthropic-only quota window and notice, and shows the strategy as "Saved, not live" with the select disabled while pool.kernel is off, read from a new generic-only inert field on /api/pool/settings. A strategy the dashboard does not model (Kiro's CLI-only least-loaded) is shown verbatim and left out of writes that do not change it, so toggling the pool no longer overwrites it with the normalized default. The generic status line no longer claims a threshold switch the quota path never makes. Carried from #5408 (source head 2db9838). Co-authored-by: agentHits <140916359+agentHits@users.noreply.github.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review: 2
Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f701a7cb4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const nextSticky = normalizeAccountPoolStickyLimit(json.stickyLimit); | ||
| setState({ | ||
| enabled: json.enabled === true, | ||
| enabled: json.enabled === true || json.enabledEffective === true, |
There was a problem hiding this comment.
Preserve inherited enablement when saving another field
When a generic provider has no per-provider enabled override but inherits global oauthAccountFailover.enabled: true, this collapses enabled: null and enabledEffective: true into a single true. Any subsequent strategy, threshold, or sticky-limit edit sends that value as enabled: true in the PUT, unintentionally creating a permanent provider override; turning the global setting off later will therefore leave this provider enabled. Keep the nullable stored value separately and omit enabled from non-toggle saves so edits preserve inheritance.
AGENTS.md reference: gui/AGENTS.md:L10-L10
Useful? React with 👍 / 👎.
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Its title has been prefixed with |
Summary
The second of three slices carried from #5408 by @agentHits (source head
2db983800a02785250cc3ebed86f399bc772303e). It is stacked on #7167 (generic reset-first) and targets that branch.Generic OAuth pools (Google Antigravity, xAI, Kiro, Cursor and the rest) had no pool controls in the dashboard. Only Codex and Anthropic did. The Anthropic pool card (
AnthropicAccountPoolSettings) now also serves generic pools, andProviderAuthPanelmounts it for every OAuth provider with an account that is neither the Codex pool nor an Anthropic row. #5408 generalized this card but only ever mounted it for Anthropic. Its generic pool controls lived in the new toolbar, which ships in slice 3, so here they are reachable from today's account list. Slice 3 keeps this card and drops the duplicate toolbar switch.For a generic pool the card:
reset-firstand hides the Anthropic-only quota window, notice and disclosure;pool.kernelis off. It reads this from a new generic-onlyinertfield on/api/pool/settings(the legacy route already had it, and the CLI schema already allowed it);Changes from the source PR:
least-loadedis no longer overwritten. The card's toggle wrote the whole state back with the strategy normalized toquota. feat(gui): unified provider workspace with pool controls and reset-first rotation #5408 guarded this only in its toolbar. The card now shows a stored strategy it does not model by name and leavesstrategyout of writes that do not change it. A test covers this and fails without the guard (10 pass / 1 fail).genericPool.*strings are the author's.AccountPoolStrategyPreview) is left out. It rendered only on the Anthropic card, and its quota caption ("the threshold does not switch earlier") contradicted the chart beside it, which switched at the threshold. It can come back with copy written per kind.Independent review round 1 fixed explicit
least-loaded → quotaselection. Incidental saves still preserve an unmodeled strategy, but choosing a strategy now explicitly writes it instead of comparing against its normalized fallback. The new case failed before the fix (11 pass / 1 fail) and passes after it. The refreshed #7167 head is merged into this layer without rewriting history.Screenshots
Real GUI builds served by sandboxed proxies, three synthetic Antigravity accounts without quota readings. Google Chrome/Playwright startup timed out on this machine (even
Google Chrome --versionhung at process startup); these replacement captures use GOAT's shared Chromium browser. No screenshot files are committed to a PR branch.origin/dev7640a94)Co-authored-by: agentHits 140916359+agentHits@users.noreply.github.com
Verification
Fresh review runs with temporary homes:
cd gui && bun ../scripts/test-with-pinned-bun.ts --isolate tests/generic-oauth-pool-settings.test.tsx tests/account-pool-strategy.test.tsx tests/anthropic-pool-card-layout.test.ts tests/anthropic-pool-conditions.test.tsx tests/anthropic-pool-quota-window.test.tsx tests/anthropic2-provider-surfaces.test.tsx: 72 pass / 0 fail.bun run typecheckandbun run build:gui: pass on this layer.Checklist