Skip to content

v2026.10.10-4

Choose a tag to compare

@github-actions github-actions released this 06 Oct 18:40
· 573 commits to main since this release

@code-yeongyu/senpi

Breaking Changes

Added

  • A terminal session's control endpoint accepts get_available_models, get_available_thinking_levels, set_model, set_thinking_level and interrupt. It applies each one exactly as the pane's own /model, thinking-level selector or Esc would, with the same validation, footer update and persistence, and get_protocol_info lists the accepted commands. A multi-session host also answers interrupt { turnId? } with { interrupted, turnId } once the turn has stopped (oh-my-openagent#9660).
  • pi.session.admitExternalMessage takes an optional sender (another session's id and name, the command line, or an external chat) and display_text. The terminal then shows a delivered message under one label line, Sent by another agent · <name> or Sent from the command line, with the message as it was written, instead of the raw provenance header. The model still reads the header (oh-my-openagent#9660).

Changed

Fixed

  • Two processes rebinding the same session at once both end at the moved session. The one that finds the move already done returns the new path instead of failing with ENOENT while reading the old file (#2828).

  • A global default extension shim left behind by an earlier install (for example after switching from npm to bun or to the standalone binary) no longer fails every start with Cannot find module. On start, a generated shim whose target is gone is rewritten to the current install's builtin when there is one, and removed when the engine has none; the loader skips any such shim without an error. A file you wrote yourself (no generated banner) is never touched (#2765).

  • The input box is no longer pushed off-screen when something writes to the terminal behind the TUI (a child that inherits stdout, a raw fd 1 write, or console.log from an extension or a Worker). While the TUI owns the screen, those writes go to the debug log, which is now capped at 32 MiB. Windows keeps the existing JS-level guard (#2815).

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

Changed

Fixed

  • A detached eval cell that waits for its kernel to start now says so (waiting for the js kernel to be ready) instead of queued behind in the js kernel with an empty predecessor (#2790).

  • A stopped (or failed) detached cell's result and notification show its buffered output instead of the live 1/1 cells running frame, so a cancelled cell no longer reads as still running. The kernel-state note now says plainly whether the kernel was restarted: The JavaScript worker was not restarted; variables from earlier cells are kept. instead of ... remains running; its existing variables are preserved., or The JavaScript worker was restarted; variables from earlier cells are lost. instead of ... was unresponsive to interrupt and was restarted ... (the worker may have answered the interrupt and still needed a restart) (#2791).

  • An isolated (isolate: true) eval cell's result names QuickJS as its runtime (quickjs <version>, sandbox) instead of the persistent kernel's Bun or Node runtime (#2811).

Removed

@code-yeongyu/senpi-tui

Breaking Changes

Added

Changed

Fixed

Removed