Skip to content

Comments

Sync fork with upstream steipete/CodexBar (OAuth-first auth)#12

Merged
johnlarkin1 merged 156 commits intomainfrom
upstream-sync/feb-2026
Feb 22, 2026
Merged

Sync fork with upstream steipete/CodexBar (OAuth-first auth)#12
johnlarkin1 merged 156 commits intomainfrom
upstream-sync/feb-2026

Conversation

@johnlarkin1
Copy link
Owner

Summary

  • Merges ~80+ upstream commits from steipete/CodexBar, including PR Experimental Claude OAuth security CLI reader and prompt-policy hardening steipete/CodexBar#388 (Claude OAuth security CLI reader) which fixes the SecKeychainSearchCopyNext: The specified item could not be found in the keychain error
  • Adds OAuth (keychain CLI) strategy as first priority in both .app and .cli auto modes, matching the auth flow used by the claude CLI tool
  • Pulls in new upstream providers: OpenRouter, Ollama, Warp
  • Preserves all fork-specific features: color-coded icons, time window selection, weekly projection, pace display, separator styles
  • Version bumped to 0.18.0-beta.3-jl.3

Key upstream changes

Fork customization

OAuth (ClaudeOAuthFetchStrategy) is now first in .cli auto mode strategy resolution, not just .app auto mode. This ensures the keychain-based auth (same as claude CLI) is always tried first.

Test plan

  • swift build — compiles clean
  • swift test — 782 tests pass, 0 failures
  • ./Scripts/lint.sh format — 0/457 files needed formatting
  • ./Scripts/compile_and_run.sh — manual verification of keychain auth flow

🤖 Generated with Claude Code

kilhyeonjun and others added 30 commits February 2, 2026 09:42
- Add parsing for new 'Plan: X' format from kiro-cli 1.24+
- Handle 'managed by admin' cases for enterprise plans
- Add isUsageOutputComplete checks for new format
- Add 3 test cases for Q Developer plan formats

Fixes steipete#287
Address review feedback: only bypass parse error for managed plans
that don't expose usage data. Non-managed plans with Plan: header
but no usage data will now correctly throw parse error instead of
falling back to default 50 credits.
Fix provider switcher progress to update immediately when “Show usage as used” changes by treating the setting as a switcher rebuild trigger. Split cached state between “last observed” and “switcher built with” to keep smart menu updates safe and avoid stale tab indicators.
Global region users with API keys (sk-cp-...) were getting "credentials
invalid" errors because the fetcher used a hardcoded China endpoint.

- Add apiBaseURLString and apiRemainsURL to MiniMaxAPIRegion for
  region-specific API hosts (api.minimax.io vs api.minimaxi.com)
- Update fetchUsage(apiToken:) to accept region parameter
- Pass region from settings through MiniMaxAPIFetchStrategy
- Make API region picker always visible in settings UI
- Default to global when settings are absent (CLI/library contexts)

Fixes steipete#276
When fetching with an API token and region defaults to .global, retry the China mainland API host if the global host rejects the token. This preserves upgrade behavior for users who previously depended on the China endpoint by default.

Credit: @apoorvdarshan (PR steipete#277, issue steipete#276 investigation).
If global host rejects the API token and the China host is unreachable, keep returning invalidCredentials so the pipeline can fall back to web.
…llowup

MiniMax: make region picker visible + retry China API host
The z.ai API has changed the TOKENS_LIMIT response schema. The usage,
currentValue, and remaining fields are now omitted from the response.
This caused JSON decoding to fail with "The data couldn't be read because it is missing."

Changes:
- Make usage, currentValue, remaining optional in ZaiLimitEntry struct
- Make usage, currentValue, remaining optional in ZaiLimitRaw struct
- Update computedUsedPercent to handle nil values by using percentage directly
- Update toLimitEntry() to handle optional values with nil defaults
- Update zaiLimitDetailText() to handle optional fields gracefully
- Add tests for new API schema with missing token limit fields
- Fix test expectation for correct window minutes calculation (300 not 15)

Fixes parsing errors for z.ai provider with updated API schema while
maintaining backward compatibility with old responses.
Avoid inventing zeros when quota fields are missing; fix SwiftFormat and add tests.
Add explicit empty-body guards for z.ai quota fetch/parse to avoid opaque JSON decoding errors.

thanks @halilertekin
Avoid logging full quota URL when response body is empty; log only host/port/path to prevent leaking credentials or query params.
…s-4.6-pricing

fix: add claude opus 4.6 pricing
When Claude Code reports model names without date suffixes (e.g.,
'claude-opus-4-6' instead of 'claude-opus-4-6-20260205'), the cost
tracking lookup fails because only the full dated versions existed
in the pricing dictionary.

This adds short aliases matching other models like 'claude-sonnet-4-5'
and 'claude-opus-4-1' which already had short versions.

Fixes steipete#349
Add short aliases for opus-4-5, opus-4-6, haiku-4-5 models
Co-Authored-By: Craft Agent <agents-noreply@craft.do>
ratulsarna and others added 29 commits February 18, 2026 00:27
Consider usageBarsShowUsed in smart menu updates
Show Codex credits in menu bar when session/weekly are exhausted
…-subscription-273

fix(opencode): handle null subscription responses without POST retry
fix(kimi): prioritize 5-hour window in automatic mode
Syncs fork with upstream main, pulling in ~80+ commits including:
- PR steipete#388: Claude OAuth security CLI reader (fixes keychain error)
- OpenRouter, Ollama, Warp providers
- Codex credits display
- Various bug fixes (Kimi, OpenCode, WebKit navigation)

Fork customization: OAuth (keychain CLI) strategy is now first in
both .app and .cli auto modes, matching the auth flow used by the
`claude` CLI tool. Fork-specific features preserved: color-coded
icons, time window selection, weekly projection, pace display.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@johnlarkin1 johnlarkin1 merged commit 15923e0 into main Feb 22, 2026
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.