Skip to content

Commit c255e14

Browse files
committed
chore(release): bump version to v2.3.0-beta.3
1 parent 3fc8fd5 commit c255e14

8 files changed

Lines changed: 80 additions & 8 deletions

File tree

.codex-plugin/plugin.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"name": "codex-multi-auth",
3-
"version": "2.3.0-beta.2",
3+
"version": "2.3.0-beta.3",
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"
77
},
88
"skills": "./skills/"
99
}
10+

AGENTS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Generated: 2026-04-25
44
Commit: a87e005
55
Validated: 2026-06-10 against commit 98d9819 (repo audit; claims re-checked against the tree, content not regenerated)
66
Branch: main
7-
Package version: 2.3.0-beta.2
7+
Package version: 2.3.0-beta.3
88

99
## OVERVIEW
1010

@@ -128,3 +128,4 @@ npm run vendor:verify # vendored dependency provenance check
128128
- App bind state/logs: `~/.codex/multi-auth/app-bind/`.
129129
- Prompt templates sync from Codex CLI GitHub releases with ETag caching.
130130
- Historical audit evidence under `docs/audits/evidence/` is snapshot evidence, not current architecture guidance.
131+

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@ This repository's current stable release line is `2.x`.
77
Current stable release notes live in `docs/releases/`.
88
This top-level changelog preserves the foundational `0.x` milestones and points older iteration history to `docs/releases/legacy-pre-0.1-history.md`.
99

10+
## [2.3.0-beta.3] - 2026-06-11
11+
12+
Stream backpressure fix, deduplication fixpoint, retry-loop consolidation, typed errors, 20 new test suites, dead code pruned.
13+
See [docs/releases/v2.3.0-beta.3.md](docs/releases/v2.3.0-beta.3.md) for full details.
14+
15+
### Fixed
16+
17+
- Stream forwarding stalling for slow clients (backpressure not respected)
18+
- Multi-tier account deduplication requiring more than one pass
19+
- Storage spy cascades in test suite from leaked `fs` mocks
20+
21+
### Improved
22+
23+
- `CodexValidationError` on rotation-proxy startup guards (#586)
24+
- `StorageError` on unreadable config save aborts (#588)
25+
- Last two hand-rolled retry loops migrated to shared `withRetry`
26+
- 20 new direct test suites; property-based dedup coverage
27+
28+
---
29+
1030
## [2.3.0-beta.2] - 2026-06-11
1131

1232
Repository audit (34 PRs), 4 correctness bug fixes, security hardening, and major

README.md

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

384384
## Release Notes
385385

386-
- Current prerelease: [docs/releases/v2.3.0-beta.2.md](docs/releases/v2.3.0-beta.2.md) — install via `npm i -g codex-multi-auth@beta`
386+
- Current prerelease: [docs/releases/v2.3.0-beta.3.md](docs/releases/v2.3.0-beta.3.md) — install via `npm i -g codex-multi-auth@beta`
387387
- Current stable: [docs/releases/v2.2.2.md](docs/releases/v2.2.2.md) — install via `npm i -g codex-multi-auth`
388388
- Previous stable: [docs/releases/v2.2.1.md](docs/releases/v2.2.1.md)
389389
- Previous stable: [docs/releases/v2.2.0.md](docs/releases/v2.2.0.md)

docs/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ Public documentation for the `codex-multi-auth` Codex CLI multi-account OAuth ma
3232

3333
| Document | Focus |
3434
| --- | --- |
35-
| [releases/v2.3.0-beta.2.md](releases/v2.3.0-beta.2.md) | Current prerelease notes (install via `npm i -g codex-multi-auth@beta`) |
36-
| [releases/v2.3.0-beta.1.md](releases/v2.3.0-beta.1.md) | Prior prerelease notes |
35+
| [releases/v2.3.0-beta.3.md](releases/v2.3.0-beta.3.md) | Current prerelease notes (install via `npm i -g codex-multi-auth@beta`) |
36+
| [releases/v2.3.0-beta.2.md](releases/v2.3.0-beta.2.md) | Prior prerelease notes |
3737
| [releases/v2.2.2.md](releases/v2.2.2.md) | Current stable release notes (install via `npm i -g codex-multi-auth`) |
3838
| [releases/v2.2.1.md](releases/v2.2.1.md) | Prior stable release notes |
3939
| [releases/v2.2.0.md](releases/v2.2.0.md) | Prior stable release notes |
@@ -133,3 +133,4 @@ Public documentation for the `codex-multi-auth` Codex CLI multi-account OAuth ma
133133
- Contribution policy: [../CONTRIBUTING.md](../CONTRIBUTING.md)
134134
- Code of conduct: [../CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md)
135135
- Security policy: [../SECURITY.md](../SECURITY.md)
136+

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

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## Runtime Rotation
2+
3+
### Bugfixes
4+
5+
- Fixed stream forwarding stalling indefinitely for slow clients. `forwardStreamingResponse` now checks the return value of `res.write()` and awaits `drain` before reading the next upstream chunk, preventing unbounded in-process buffering when the client socket falls behind.
6+
7+
### Improvements
8+
9+
- Converted the two startup guards in `startRuntimeRotationProxy` from bare `Error` throws to `CodexValidationError` with machine-readable `field`/`expected`/`context` metadata. Error messages are byte-identical; callers can now branch on `instanceof CodexValidationError` and stable field names instead of message text (audit §4.3, #586).
10+
11+
## Storage
12+
13+
### Bugfixes
14+
15+
- Fixed multi-tier account deduplication. `deduplicateAccountsByIdentity` now runs fixpoint iteration: a single pass was not enough when a newest-wins merge could install an account that itself duplicated an earlier survivor through a different identity tier (e.g. an email-tier merge installs an account whose `accountId + refreshToken` already matches an earlier entry). The wrapper now loops until the array is stable; every pass strictly shrinks it by at least one entry, so it terminates in at most `accounts.length` passes.
16+
- Added `vi.restoreAllMocks()` to `storage.test.ts` `afterEach` to prevent a failing test's leaked `fs` spy from cascading into every subsequent storage test in the same worker.
17+
18+
### Improvements
19+
20+
- Migrated the last two hand-rolled retry loops to the shared `withRetry` helper in `lib/fs-retry.ts`: the temp→final account-save rename (`storage.ts`) and the config env-path CAS loop (`config.ts`). Inter-attempt delay schedules are unchanged; only the wasted trailing sleep after a final failure is removed.
21+
- Converted `savePluginConfig`'s "unreadable config file" abort from a bare `Error` to a typed `StorageError` with `code: "UNREADABLE"` and the file path. Callers can now branch on `instanceof StorageError` instead of message text (#588, audit §4.3).
22+
23+
## Security
24+
25+
### Improvements
26+
27+
- All atomic write helpers now use `crypto.randomBytes` instead of `Math.random()` for staging-path nonces, preventing a local attacker from predicting the next staging path (#517).
28+
29+
## Code Quality
30+
31+
### Improvements
32+
33+
- Removed 852 lines of dead code: seven orphaned modules with no live importers deleted (#554, #558).
34+
- Pruned unused exports and types flagged by knip; added `knip.jsonc` config for ongoing dead-code analysis (#555, #556, #557).
35+
- `isRetryableStorageWriteError`, `copyDashboardSettingValue`, `mergeDashboardSettingsForKeys`, and `DEFAULT_STATUSLINE_FIELDS` exported from their respective modules for direct test access.
36+
- Synced plugin manifest and `AGENTS.md` package-version claim to `v2.3.0-beta.3`.
37+
38+
## Testing
39+
40+
### Improvements
41+
42+
- 20 new direct test suites covering: login-oauth, login-menu actions/flow/data, persist-selected, health-check, forecast-report-shared, settings write-queue, rotation selection/state/token-refresh, auth-menu builder, model-fallback property, write-queue property, rate-limit helpers, usage-ledger redaction, settings preview builders, and settings-hub shared helpers.
43+
- Property-based test suite for `deduplicateAccountsByIdentity`: covers order-independence and convergence across all permutations using fast-check.
44+
- `shouldRetryFileOperation`, `fs-retry`, and `temp-path` covered with new unit suites.
45+
46+
## Notes
47+
48+
- Prerelease published under the `beta` dist-tag (`npm i -g codex-multi-auth@beta`).
49+
- The #509 sequential drain-first feature and all fixes from `2.3.0-beta.2` are included.

package-lock.json

Lines changed: 2 additions & 2 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.3.0-beta.2",
3+
"version": "2.3.0-beta.3",
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)