Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9ee0530c99
ℹ️ 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".
Sources/CodexBar/Providers/Codex/CodexProviderImplementation.swift
Outdated
Show resolved
Hide resolved
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c99e55a00b
ℹ️ 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".
Sources/CodexBar/Providers/Codex/CodexProviderImplementation.swift
Outdated
Show resolved
Hide resolved
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ec149a8ca4
ℹ️ 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".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9f1c28541c
ℹ️ 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".
Token-account and other provider config updates bump configRevision; rebuilding every NSStatusItem via removeStatusItem reflows the system menu bar and makes other apps' extras flicker. Rebuild only when provider order changes. Made-with: Cursor
Resolve menu/icon/widget credits from codexActiveMenuCredits using allAccountCredits for add-on accounts; primary keeps RPC/dashboard store. Remove primary-only notice; show unlimited and loading states; add tests. Made-with: Cursor
…rimary missing - Use TokenAccountSupportCatalog envOverride for per-account credit refresh; load OPENAI_API_KEY-only env as API-key creds - isDefaultTokenAccountActive + display index for fetches/UI when ~/.codex primary is gone - Tests for env load and Claude token-account selection Made-with: Cursor
…ment - Introduced a new setting to allow CodexBar to ignore ~/.codex as an implicit account, requiring users to manage accounts explicitly through the UI. - Updated various components to reflect this change, including adjustments to account selection logic and UI elements. - Enhanced the handling of account-related actions and settings to improve user experience and clarity. Made-with: Cursor
Move Multi-Account toggles above the Accounts section so toggling never shifts scroll position. Rename Use → Default/Make Default, add drag-and-drop reordering, gate multi-account UI behind a toggle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add per-account WKWebView login windows for chatgpt.com dashboard, replacing the failed synthetic OAuth cookie approach. Each account gets isolated cookie storage. Dashboard login auto-opens after OAuth account creation when web extras is enabled. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add per-account WKWebsiteDataStore keyed by CODEX_HOME path (not email) so accounts with the same email but different workspaces get separate dashboard sessions - Add "OpenAI Web Dashboard" toggle in Multi-Account settings section - Show "Dashboard" / "Login to Dashboard" button per account row based on individual login state, with logout option in edit mode - Add "Usage Dashboard" / "Login to OpenAI Dashboard" in menu dropdown (below Buy Credits) reflecting active account's dashboard state - Fix WKWebView and rename TextField keyboard input by switching to NSApp.activationPolicy(.regular) temporarily - Fix dashboard window not closing Settings when dismissed - View-only mode for already-logged-in accounts (no auto-close polling) - Track dashboard login state via observable set on UsageStore for reactive SwiftUI updates - Suppress cost data when "CodexBar accounts only" is on with no accounts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each account uses its own WKWebView cookie store via the dashboard login window, making browser cookie import redundant and error-prone. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@ratulsarna added features and streamlined codex experience more: // Multi-account support: add, reorder, and switch between multiple Codex accounts with drag-and-drop |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d04b7cbe87
ℹ️ 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".
…ation history Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…le dashboard key P1: Clear all cached credits/dashboard/cost data when codexExplicitAccountsOnly has no accounts, not just snapshots/errors/sourceLabel. P1: Reset selected token account to primary when multi-account toggle is turned off, so Codex stops fetching against a hidden CODEX_HOME override. P2: Use stable ~/.codex path as the default account dashboard key instead of the editable display label, so renaming doesn't break dashboard session persistence. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
CodexBar/Sources/CodexBar/UsageStore.swift
Lines 655 to 656 in 3747c2c
In multi-account mode, the dashboard login window stores cookies in a WKWebsiteDataStore keyed by the per-account identifier (CODEX_HOME path / token), but refreshOpenAIDashboardIfNeeded() still derives the fetch key from codexAccountEmailForOpenAIDashboard(). For any added Codex account, that means the post-login refresh reads a different cookie store than the one the user just signed into, so "Login to Dashboard" can immediately fall back to a login-required state; accounts that share the same email also collapse onto one dashboard session.
ℹ️ 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".
| if let dashboardLogin = self.descriptor.dashboardLogin { | ||
| let loggedIn = self.descriptor.isDashboardLoggedIn?(account.token) ?? false | ||
| Button(loggedIn ? "Dashboard" : "Login to Dashboard") { | ||
| dashboardLogin(account.token) |
There was a problem hiding this comment.
Stop passing raw API keys as dashboard identifiers
For Codex API-key accounts, account.token is the literal apikey:<secret> payload (see the add flow in PreferencesProviderSettingsRows.swift:705-710). Forwarding that value into the dashboard login/logout path here means OpenAIDashboardWebsiteDataStore.markDashboardLoggedIn will persist the raw API key in OpenAIDashboardLoggedInEmails under UserDefaults, and the same secret also rides around in menu payloads. Any user who clicks Dashboard/Login on an API-key row ends up copying the key outside the token-account store.
Useful? React with 👍 / 👎.
| func loginMenuAction(context _: ProviderMenuLoginContext) | ||
| -> (label: String, action: MenuDescriptor.MenuAction)? | ||
| { | ||
| ("Add Account...", .addTokenAccount(.codex)) |
There was a problem hiding this comment.
Hide Add Account until Multiple Accounts is enabled
When codexMultipleAccountsEnabled is off, both the menu switcher (StatusItemController+Menu.swift:719-726) and the Accounts section (PreferencesProvidersPane.swift:198-202) are hidden, but loginMenuAction() still exposes Add Account… here. Because SettingsStore.addTokenAccount() makes the newly added row active immediately, clicking that menu item can silently switch CodexBar onto a hidden account that the user cannot select, rename, or remove until they discover the toggle in Options.
Useful? React with 👍 / 👎.
Multi-Account Codex Support with Per-Account Dashboard
What it does
Adds full multi-account support for Codex — add, manage, and monitor multiple OpenAI accounts from a single CodexBar instance. Accounts with the same email but different workspaces are fully isolated.
Account Management
Add accounts via OAuth (codex auth) or API key, each with its own CODEX_HOME
Drag-to-reorder, rename (pencil icon), delete (edit mode), set default
"CodexBar accounts only" mode — ignore ~/.codex, use only explicitly added accounts
Per-account Session/Weekly/Code Review usage bars in the menu dropdown with account switcher tabs
Per-Account OpenAI Dashboard
OpenAI Web Dashboard" toggle controls dashboard button visibility
Each account row shows "Dashboard" or "Login to Dashboard" based on login state
Per-account cookie isolation keyed by CODEX_HOME path — same-email accounts on different workspaces get separate sessions
"Usage Dashboard" / "Login to OpenAI Dashboard" in menu dropdown reflects active account state
Logout option available in account edit mode