-
Notifications
You must be signed in to change notification settings - Fork 56
chore(release): 2.8.1 #651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| # v2.8.1 | ||
|
|
||
| A corrective release. No new features and no configuration changes. | ||
|
|
||
| The headline is `mcodex resume` hanging on a blank screen whenever runtime rotation was enabled — the command opened, printed the multi-auth status line, and then never became usable, while the official `codex resume` worked fine. The same release also makes the wrapper always give you your shell prompt back, and clears four high-severity dependency advisories. | ||
|
|
||
| Closes [#647](https://github.com/ndycode/codex-multi-auth/issues/647). Landed as [#648](https://github.com/ndycode/codex-multi-auth/pull/648), [#649](https://github.com/ndycode/codex-multi-auth/pull/649), and [#650](https://github.com/ndycode/codex-multi-auth/pull/650). | ||
|
|
||
| ## Interactive sessions | ||
|
|
||
| ### `resume` and `fork` hung on a blank screen | ||
|
|
||
| With runtime rotation enabled, `mcodex resume <session-id>` printed its status line and then sat on an empty TUI forever. `codex resume` worked, and so did `CODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY=0 mcodex resume` — but that second workaround buys a working resume by turning off account rotation, which is not a trade anyone should have to make. | ||
|
|
||
| v2.8.0 moved interactive sessions onto the canonical `CODEX_HOME`, but it recognised "interactive" as *an invocation with no subcommand at all*. `resume` and `fork` are interactive TUI entry points that happen to carry a subcommand, so they missed that classification and kept using the ephemeral shadow home. | ||
|
|
||
| That is fatal specifically for resuming, because the shadow home deliberately omits the runtime SQLite state. A shadow home only ever holds a partial thread index rebuilt from the linked `sessions` directory — so the thread you asked for was frequently just absent, and the TUI waited on a session that, as far as it could tell, did not exist. The reporter's numbers show it exactly: the canonical `state_5.sqlite` held 257 threads including the requested one, while the two shadow databases created by the failed launches held 126 and 128 and contained neither. | ||
|
|
||
| Both commands now take the same canonical-home transport the bare interactive TUI already uses, so they see the real thread index. Account rotation stays on: it travels as `-c` overrides exactly as it does for a normal interactive session. | ||
|
|
||
| As with the bare TUI, this means a resumed session shares the canonical home rather than a private copy — the same as running the official CLI twice. That was already true for interactive sessions since v2.8.0; this release widens it to two more commands ([#648](https://github.com/ndycode/codex-multi-auth/pull/648)). | ||
|
|
||
| ### The shell prompt did not always come back | ||
|
|
||
| After an interrupted or non-zero Codex exit, the wrapper could print Codex's final "To continue this session..." message and then simply never return. `Ctrl+Z` showed it parked as a stopped job. | ||
|
|
||
| The rotation helper runs detached with piped stdio. Shutdown sent `SIGTERM` and stopped waiting after two seconds, but if the helper had not actually exited by then it was left referenced — and because the wrapper finishes by setting an exit code and letting the event loop drain, those still-open pipes kept the process alive indefinitely. | ||
|
|
||
| Shutdown is now bounded. It escalates to `SIGKILL` once the graceful window elapses, and then unconditionally destroys the helper's streams and unrefs the child. The stream teardown is the part that actually frees the wrapper on Windows, where both signals are emulated as an unconditional terminate. A helper that has already exited short-circuits instead of waiting out the full window ([#648](https://github.com/ndycode/codex-multi-auth/pull/648)). | ||
|
|
||
| ### `--help` no longer starts a proxy | ||
|
|
||
| `resume --help` and friends print help and make no model requests, but they were still paying for the rotation transport — and once `resume` became interactive, its helper detached on the clean exit that help always produces, leaving a process idling in the background after you had already got your output. | ||
|
|
||
| The help form of every request command — `exec`, `review`, `resume`, `fork`, `app` — now forwards straight to the official CLI with no proxy, no shadow home, and no helper. This matches how `app-server --help` has always behaved. It keys off the help flag rather than the command, so a real `resume <session-id>` is unaffected ([#648](https://github.com/ndycode/codex-multi-auth/pull/648)). | ||
|
|
||
| ## Dependencies | ||
|
|
||
| Four high-severity advisories are cleared. Two reach the published runtime: | ||
|
|
||
| | Package | From | To | Cleared | | ||
| | --- | --- | --- | --- | | ||
| | `hono` | 4.12.21 | 4.12.33 | JSX context not isolated per request; XSS via the `cx()` escaping bypass | | ||
| | `undici` | 6.25.0 | 6.28.0 | Set-Cookie header injection; WebSocket fragment DoS; keep-alive response-queue poisoning; SameSite downgrade | | ||
|
|
||
| `undici` stays on the `6.x` line deliberately. It is the only runtime HTTP dependency and it drives the published `engines.node >=18.17.0` floor; `7.x` would raise that floor to Node 20. `6.28.0` is the first `6.x` release clear of all four of its advisories. | ||
|
|
||
| Two dev-only advisories (`brace-expansion`, `postcss`) are pinned through `overrides`, the mechanism this project already uses for transitive dev pins. `SECURITY.md` records the rationale for each pin ([#650](https://github.com/ndycode/codex-multi-auth/pull/650)). | ||
|
|
||
| ## Upgrade notes | ||
|
|
||
| No migration is required — but you do need to install the release to get the fixes: | ||
|
|
||
| ```bash | ||
| npm i -g codex-multi-auth | ||
| codex-multi-auth --version | ||
| ``` | ||
|
|
||
| That should report `2.8.1`. Then confirm the fix on a real session: | ||
|
|
||
| ```bash | ||
| mcodex resume <session-id> | ||
| ``` | ||
|
|
||
| It should open the resumed TUI instead of a blank screen, and `/exit` should return you to your shell prompt. | ||
|
|
||
| If you had been running `CODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY=0` to make `resume` work, drop it — that was the workaround for this bug, and keeping it set leaves account rotation switched off: | ||
|
|
||
| ```bash | ||
| unset CODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY | ||
| codex-multi-auth rotation status | ||
| ``` | ||
|
|
||
| That should report the runtime rotation proxy as enabled. | ||
|
|
||
| Everything else is unchanged: no settings were added, renamed, or repurposed, and nothing new is written to disk. | ||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.