v4.2.0
Added
- multi-review: true cross-runner opencode session resume via v2 cache bundles. Each persona's session is serialized with
opencode export, restored on the next runner viaopencode import, then resumed withclient.session.prompt(existingSessionID, newDiff)so the LLM can hit prompt-cache / KV-cache paths that v1's flat text-blob replay couldn't (#274). - review-context-server: new
/context/o/r/p/v2route stores.v2.jsonso v1 and v2 bundles coexist for the same PR during the rollout window. 16 MiB body cap (returns 413). StricterprNumbervalidation andAbortSignal.timeout(5_000)on every HTTP call. - multi-review:
existingSessions/skipSessionCleanuporchestrator options and per-runXDG_DATA_HOMEisolation for the v2 export → import → resume pipeline.
Fixed
- multi-review: v2 session-resume bugs found via dogfood e2e (#276):
skipSessionCleanupwas gated on!!tempDataHome(only set when resuming), so on a first run every reviewer/coordinator session was deleted in the orchestratorfinallybefore step 7b could export it — no v2 bundles were saved and resume never kicked in. Now gated onBoolean(prNumber)via the explicitwillExportSessionsflag.opencode exporttruncated its stdout when it was a Node pipe (~180 KB emitted for a multi-MB session, exit 0), so every persona export failed withUnterminated string in JSON. Redirected stdout to a regular file via a temp fd (same code path asopencode export > file), plus asettledstate lock, 60sEXPORT_TIMEOUT_MSwith SIGKILL, and0o600temp-file permissions.runOpencodeerror messages now surface stdout (truncated toMAX_ERROR_DUMP=1000) alongside stderr.
- multi-review:
orchestrator.tsfinally block no longer removes sessionIDs from theactiveSessionsset whenskipSessionCleanup: true(#274).
Requires opencode ≥ 1.17 for opencode export / opencode import.
Full diff: v4.1.0...v4.2.0