Conversation
Respect supportsAccountSwitching=false in schema-v1 account lists while preserving usage, account details, and active markers. Keep the existing switching default when the field is absent and reject nonboolean values. Cover parsing, projection, and suppression of credential commands. Reuse quota parsing and remove single-use projection wrappers to keep the production diff at zero net lines. Adopts #3658. Co-authored-by: benedictfrancis <benedict@techniciti.eu>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. Reviewed September 22, 2026, 1:33 AM ET / 05:33 UTC. ClawSweeper reviewWhat this changesAdds a read-only capability for Claude account adapters that preserves usage display while suppressing account switching and credential repair, with strict parsing, regression tests, and documentation. Merge readiness✅ Ready for maintainer review Keep open: this is a useful, bounded addition absent from current main and v0.64.0. No actionable correctness or security defect was found, and the numeric-Boolean defect identified in the adopted proposal is addressed. Priority: P2 Review scores
Verification
How this fits togetherCodexBar reads account usage from a configured Claude adapter executable and projects it into menu cards. Account eligibility controls whether user interaction inspects usage or launches an explicit credential-switch command. flowchart TD
A[Configured Claude adapter] --> B[Account list JSON]
B --> C[Validate optional capability]
C --> D[Account usage snapshots]
D --> E[Usage cards and account details]
D --> F{Switching supported and account eligible}
F -->|No| E
F -->|Yes and explicitly clicked| G[Credential switch command]
Before mergeNone. Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep the capability optional and enforce it through the existing account eligibility path while preserving legacy switching and usage display. Do we have a high-confidence way to reproduce the issue? Not applicable as a new adapter capability; source inspection confirms main ignores the proposed field. The author reports red-to-green regression tests, which were inspected but not rerun. Is this the best way to solve the issue? Yes. An optional boolean feeding the existing activation gate is a narrow solution, and the adjacent parsing and projection refactors preserve their prior behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against b99a91694d78. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
Respect supportsAccountSwitching=false in schema-v1 account lists while preserving usage, account details, and active markers. Keep the existing switching default when the field is absent and reject nonboolean values. Cover parsing, projection, and suppression of credential commands. Reuse quota parsing and remove single-use projection wrappers to keep the production diff at zero net lines. Adopts #3658. Co-authored-by: benedictfrancis <benedict@techniciti.eu> (cherry picked from commit 86c1bd0)
Respect supportsAccountSwitching=false in schema-v1 account lists while preserving usage, account details, and active markers. Keep the existing switching default when the field is absent and reject nonboolean values. Cover parsing, projection, and suppression of credential commands. Reuse quota parsing and remove single-use projection wrappers to keep the production diff at zero net lines. Adopts #3658. Co-authored-by: benedictfrancis <benedict@techniciti.eu> (cherry picked from commit 86c1bd0)
Claude account adapters can now declare
supportsAccountSwitching: falsein their schema-v1 list response. CodexBar keeps usage, account details, and active markers while suppressing inactive-account switching and active-account credential repair. Missing capabilities retain the existingtruedefault; present values must be JSON booleans.Adopts @benedictfrancis's #3658 with strict boolean validation and additional regression coverage. Adjacent quota parsing is shared and two single-use projection wrappers are removed without changing behavior. Production scope is two files with 38 insertions and 38 deletions (net zero). The schema guide, Claude documentation, and 0.64.1 changelog are updated with contributor credit.
Validation:
CODEXBAR_SUPPRESS_TEST_KEYCHAIN_ACCESS=1 swift test --jobs 2 --filter ClaudeSwapListParserTests— 16 tests, two failing tests with seven issues: read-only accounts remained activatable and six nonboolean capability values were accepted.Test run with 187 tests in 16 suites passed; the separate Linux test target also reported14 tests in 1 suite passed. This includes the red-to-green parser regressions and a synthetic executable check proving a read-only adapter starts no credential command.make check— passed; SwiftFormat clean and SwiftLint reported0 violations, 0 serious in 2547 files. An initial pre-change run hit the existing packaged-launch fixture's receipt timing failure; it passed unchanged on retry, and the final complete check passed.The CloudKit device-removal proposal was reviewed but is not adopted here. It lacks synthetic proof of the destructive fetch/send/retry lifecycle and permits removing the current device; #3234 remains open for a bounded implementation. No app relaunch, live provider probe, merge, or thread comment was performed.
Closes #3658
Refs #3350
Refs #3234