Skip to content

v2026.10.7

Choose a tag to compare

@github-actions github-actions released this 04 Oct 06:39
· 313 commits to main since this release

@code-yeongyu/senpi

Breaking Changes

Added

  • Extensions can provide and read a session-scoped EvalHandleHost (pi.provideEvalHandleHost(host) / ctx.evalHandleHost): the capability behind codemode's in-cell wait() and handle() helpers, fenced by owner session, id and run epoch. It is absent until a task owner provides it and is cleared when the session runtime is replaced (#2687).

Changed

Fixed

  • After an upgrade, an old host that was still serving the client's own socket with no session open can now be replaced: host handoff (which the desktop runs when the engine changed) starts the new engine there instead of refusing unknown_owner, so the first turn no longer fails with "No provider available" until the old host is drained by hand. A host from before layout 2 is sent a drain only while a recount still finds no session, a host nothing proves is never signalled (it drains itself once it loses the socket), and a host that holds a session is still refused, with the command that retires it (#2701).
  • host status now reports the right engine version for a host generation started by a handoff to a different build: the generation's record names the build the new host reported, not the build of the process that ran the handoff (#2698).

Removed

@code-yeongyu/senpi-ai

Breaking Changes

Added

Changed

Fixed

Removed

@code-yeongyu/senpi-agent-core

Breaking Changes

Added

Changed

Fixed

Removed

@code-yeongyu/senpi-codemode

Breaking Changes

Added

  • JavaScript kernel tools: tool.defined() lists the defined kernel tools and tool.undefine(name) removes one; tool(fn, { name }) registers a tool under an explicit name while keeping the function's argument order (#2452).
  • In-cell wait(handles, {timeout, mode}) barrier and handle(node | ref | {pool_id}) rich views in all four kernels: wait returns values in input order (all), the first success (any) or every outcome (settled), times out with eval_wait_timeout without cancelling work, and pauses the run budget while parked; handle(node).control offers status(), output(), send(), cancel() and wait() fenced by owner, id and run_epoch through the host's EvalHandleHost capability (agent and workpool handles fail with eval_wait_unavailable on a host without it); completion(prompt, {handle: true}) returns an opt-in completion handle bounded by its cell's hard deadline; tool_schema("eval:helpers") and tool_schema("eval:wait") document the surface and the removed-tool hint for wait points at them. The legacy agent(..., {handle: true}) record, the eval description and the eval input schema are unchanged; the Python runner's dispatcher was renamed _handle_message so handle() is the helper (#2687).

Changed

Fixed

  • The Ruby kernel's memory notice names the largest globals again on Ruby 2.6 (the sizer used a Ruby 2.7 method) (#2696).
  • Eval no longer fails with "codemode session manager is disposed" for the rest of a session after a session switch or fork that another extension cancelled: codemode only tears its kernels down when the session actually ends (#1706).
  • A session whose codemode runtime failed to start is recovered by the next eval call (once, with one stderr line naming the failed start); if re-creation also fails, the call says "codemode runtime could not be re-created: " and how to bring eval back (#1706).

Removed

@code-yeongyu/senpi-tui

Breaking Changes

Added

Changed

Fixed

Removed