Skip to content

Commit 2887c27

Browse files
authored
chore: release v2.3.0-beta.0 (#509 sequential drain-first) (#511)
Prerelease that ships the opt-in sequential / drain-first account scheduling mode from issue #509 to npm under the beta dist-tag. Set schedulingStrategy=sequential (or CODEX_AUTH_SCHEDULING_STRATEGY=sequential) to drain one account fully before advancing to the next, staggering quota-window recovery across the pool for longer uninterrupted sessions. Default hybrid behavior is unchanged; the mode is fully opt-in. Manual pin still wins and per-session affinity is bypassed in sequential mode.
1 parent d072244 commit 2887c27

6 files changed

Lines changed: 49 additions & 5 deletions

File tree

.codex-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codex-multi-auth",
3-
"version": "2.2.2",
3+
"version": "2.3.0-beta.0",
44
"description": "Install and operate codex-multi-auth for the official @openai/codex CLI with multi-account OAuth rotation, switching, health checks, and recovery tools.",
55
"interface": {
66
"composerIcon": "./assets/codex-multi-auth-icon.svg"

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ codex-multi-auth doctor --json
383383

384384
## Release Notes
385385

386+
- Current prerelease: [docs/releases/v2.3.0-beta.0.md](docs/releases/v2.3.0-beta.0.md) — install via `npm i -g codex-multi-auth@beta`
386387
- Current stable: [docs/releases/v2.2.2.md](docs/releases/v2.2.2.md) — install via `npm i -g codex-multi-auth`
387388
- Previous stable: [docs/releases/v2.2.1.md](docs/releases/v2.2.1.md)
388389
- Previous stable: [docs/releases/v2.2.0.md](docs/releases/v2.2.0.md)

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Public documentation for the `codex-multi-auth` Codex CLI multi-account OAuth ma
3232

3333
| Document | Focus |
3434
| --- | --- |
35+
| [releases/v2.3.0-beta.0.md](releases/v2.3.0-beta.0.md) | Current prerelease notes (install via `npm i -g codex-multi-auth@beta`) |
3536
| [releases/v2.2.2.md](releases/v2.2.2.md) | Current stable release notes (install via `npm i -g codex-multi-auth`) |
3637
| [releases/v2.2.1.md](releases/v2.2.1.md) | Prior stable release notes |
3738
| [releases/v2.2.0.md](releases/v2.2.0.md) | Prior stable release notes |

docs/releases/v2.3.0-beta.0.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## Runtime Rotation
2+
3+
### Features
4+
5+
- **Sequential / drain-first account scheduling (opt-in).** A new
6+
`schedulingStrategy` setting (`CODEX_AUTH_SCHEDULING_STRATEGY` /
7+
`schedulingStrategy`, default `hybrid`) adds a `sequential` mode that drains one
8+
account fully before moving to the next, instead of spreading load across the
9+
pool. Set it to `sequential` to keep every new request on the current active
10+
account until that account is exhausted (rate-limited, cooling down, circuit-open,
11+
or disabled), then advance to the next usable account. When an earlier account's
12+
quota window recovers it reclaims the active slot on the next forward scan, so the
13+
pool's quota windows stagger over time rather than resetting together — longer
14+
uninterrupted sessions across a multi-account pool (issue #509).
15+
- **Default behavior is unchanged.** `hybrid` remains the default and keeps the
16+
existing weighted health/token/freshness selection plus per-session affinity.
17+
`sequential` is fully opt-in; pools that do not set it behave exactly as before.
18+
- **Manual pin still wins.** A `switch <n>` pin overrides scheduling in both modes.
19+
In `sequential` mode per-session affinity is intentionally bypassed — every
20+
request follows the single active account, not a per-chat sticky account.
21+
22+
## Release Hygiene
23+
24+
### Tests
25+
26+
- Selector coverage for the drain-first path: sticky-while-usable, advance-on-
27+
exhaustion, wrap-to-recovered-earlier-account, returns-null when the whole pool is
28+
exhausted, cooldown/circuit-open/disabled failover, per-family cursor isolation,
29+
and the policy-blocked-anchor guard.
30+
- Proxy-level coverage: affinity is ignored, manual pin takes precedence, the active
31+
pointer advances only on true exhaustion (not on a transient attempted-this-request
32+
skip), and the mode survives the routing-mutex select+commit path without double-
33+
advancing the cursor.
34+
- Config coverage for `schedulingStrategy`: default, explicit value, env override in
35+
both directions, and invalid env/persisted values falling back safely.
36+
37+
### Notes
38+
39+
- Prerelease published under the `beta` dist-tag
40+
(`npm i -g codex-multi-auth@beta`). Whether drain-first delivers longer
41+
uninterrupted sessions depends on each pool's real quota-window timing, which is
42+
why this ships as a beta for validation on real accounts before a stable cut.

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codex-multi-auth",
3-
"version": "2.2.2",
3+
"version": "2.3.0-beta.0",
44
"description": "Codex CLI multi-account OAuth manager with account switching, health checks, runtime rotation, diagnostics, and recovery tools for @openai/codex",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",

0 commit comments

Comments
 (0)