Prepare v0.1.13 release candidate - #6
Conversation
Convert file URL references in the command and E2E tests with fileURLToPath instead of reading URL.pathname directly. URL.pathname percent-encodes spaces, which makes child process invocations look for paths such as CLAUDE%20CODE... and fail with MODULE_NOT_FOUND. fileURLToPath preserves the correct filesystem path on local platforms. Verified with the full test suite from the fork path and from a copied checkout under /private/tmp/claude plugin codex final space test.
Use path.dirname(fileURLToPath(import.meta.url)) for the E2E repo root instead of converting the parent directory URL directly. This keeps the path-with-spaces fix while avoiding a trailing slash in the path passed as cwd and to codex exec --cd.
Use claude agents --json when monitoring background jobs so non-TTY Codex sessions can read lifecycle state and mark completed sessions done. Also tolerate Claude JSON envelopes whose result string begins with Claude tool-call markup before the review JSON. Direct review payload validation remains strict so arbitrary leading prose is still rejected. Tests cover agents JSON completion and tool-call-prefixed review output.
Handle Claude JSON envelopes whose result begins with status prose before the requested review JSON. The direct review payload validator remains strict; this recovery is limited to Claude CLI envelope results. Adds a regression test for a result beginning with 'Now I have enough context to review.'
Add README guidance for CLAUDE_COMPANION_STATE_ROOT so sandboxed Codex environments can point companion state at a writable private directory. Also note that the state root can contain prompts, Claude output, workspace paths, and review results, so it should stay local and out of version control.
Consolidate the path portability, review parser, monitor and state-root work from upstream PRs 2-4. Harden review diff collection, ambiguous JSON rejection, background cancellation and private state permissions. Make timeout tests deterministic, exercise the companion lifecycle in smoke tests, and update CI to current actions across Node 20, 22 and 24.
Run the nested Codex E2E with an explicit temporary companion state root so job state remains writable inside the sandbox. Keep manifest default prompts within Codex limits and validate those limits locally.
Allow the routing smoke to retain current Codex CLI diagnostics without terminating the nested session at Node's default one-megabyte spawn buffer.
Create the temporary companion state root within the checkout so nested Codex workspace-write policy permits lifecycle state, then remove it before asserting the worktree is unchanged.
Give the nested noninteractive Codex session only workspace-write access, keep companion state in a temporary checkout directory, and validate that the E2E harness retains this bounded sandbox.
|
The maintained fork has now published v0.1.13: https://github.com/BoldNewMedia/claude-plugin-codex/releases/tag/v0.1.13. This draft PR remains available as a courtesy upstream contribution, but BoldNewMedia releases will no longer be blocked on upstream review. |
|
Maintenance update: v0.1.13 is now published from the maintained fork at https://github.com/BoldNewMedia/claude-plugin-codex. The fork preserves the MIT licence and Yanchuk attribution, and its release branch includes the hardened review parsing, background lifecycle, MCP isolation, state-permission and Codex-routing work described in this PR. To avoid splitting users, search position and issue reporting across two repositories, would you be willing to choose one of these paths?
A transfer is the preferred outcome, but a clear redirect is sufficient. No attribution would be removed under either path. |
Summary
This consolidates and supersedes #2, #3 and #4 as a v0.1.13 release candidate.
agents --json --allVerification
claude-companion.mjs advise --model sonnetcommandgit diff --check origin/main...HEAD: cleanRemaining external checks
action_requiredbecause this is a forked PR; a maintainer must approve the workflow before the Node matrix can run.workspace-writeE2E flag. The previous noninteractive traces stopped at state-directory sandbox denial before Claude; the direct live companion setup and lifecycle smokes are green.