Skip to content

v0.39.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 00:51
5f6bd7e

Two features: a session can branch from an earlier response, and Roder joins as an opt-in harness.

Upgrading

  • Nothing reinstalls on upgrade from 0.38.7. Roder installs only where you add it to HR_BACKENDS, about 100 MB.

What's new

  • Branch a session from an earlier response (#639, #477, thanks @leninworld). Send branch: true with previous_response_id. A new session starts from that response's own committed files and the conversation up to it. The original session is unchanged.
    • The branch holds exactly the files that response's turn ended with, never the session's latest files.
    • The new session says which response it came from (branched_from), and its history is the turns up to that point.
    • It works on every harness that keeps a workspace. A response that is still running, or has no committed files, is refused with branch_unavailable.
    • A branch is held to the same reach as reading the source. It carries the files and the conversation, never a credential of the source's turns.
    • In UHP this is the new capability session_branching, reported by discovery. A client asks for it only where the server reports it, and the conformance checks for it skip on servers that don't.
    • Limits, each set by an environment variable: a branch is prepared within 5 minutes (HR_BRANCH_PREPARE_TIMEOUT_S). It copies at most 100 files and 256 MiB of earlier outputs (HR_BRANCH_COPY_MAX_FILES, HR_BRANCH_COPY_MAX_BYTES); past that, a citation points to the file's path in the branch.
  • Roder, through its native app-server (#588, thanks @PandelisZ). Opt-in: add roder to HR_BACKENDS.
    • Release 0.4.8, checked against a digest committed in the image on both architectures.
    • It starts with one model, gpt-6.1-sol.
    • It takes MCP servers (stdio, SSE and streamable HTTP) and skills. Each console tool switch covers every equivalent Roder tool, and tools that can't work in the container are not offered.
  • A harness that isn't installed isn't offered. If a harness this instance doesn't have is in the catalog, the console shows it as not installed, says why, and refuses its tasks, instead of listing it as ready.

Checked

On 0.39.0-rc.2, on an existing volume upgraded from 0.38.7, with Roder added to HR_BACKENDS:

  • Branching, on Claude Code, Codex, Pi and Hermes: three turns that each wrote a file, then a branch from the first response.
    • The branch held only the first turn's file, and its first answer recalled the first turn.
    • The source kept all three files.
    • The new session named its origin, and its history was the first turn plus its own.
    • A branch from a running response was refused.
  • No regression: a first turn, a follow-up, a model switch and back, a produced file, and a sandbox recycle passed on Claude Code, Codex, OpenCode, Gemini CLI, Pi and Qwen Code.
  • Roder:
    • The same scenarios passed, except the model switch: it offers one model.
    • Its skill and its MCP tools over stdio, SSE and streamable HTTP were each used.
    • The credential canary checks every place a session could read a credential. It came back clean on a volume where Roder is installed.
  • Fresh volume: the release gate installed all 30 default harnesses on amd64 and arm64, and the canary was clean on all 29 it runs.
  • The release's tree is identical to the candidate's.

Full Changelog: v0.38.7...v0.39.0