Skip to content

v2026.10.10

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:23
· 34 commits to main since this release

@code-yeongyu/senpi

Breaking Changes

Added

  • A single-session --mode rpc process accepts set_retry_fallback before its first turn is asked for (capability retry_fallback_command): the open_session.retryFallback profile for a caller that spawns one process per session, applied in memory only and kept by the process's later sessions. omo's task children that run as their own process (every Windows child, and task.process_runner: "child-process") can now carry their category's fallback chain past a tool call without touching the user's settings file (omo#9582).

Changed

  • A terminal that registers a control endpoint becomes reachable sooner and admits a message sooner after it is reachable. The endpoint binds its socket while the session header is written and looks up the process start time in parallel. It no longer reaps other terminals' dead records or prunes generations before it binds, and it no longer waits for its inbox watch to arm before registration returns. That wait added 200 ms to admission whenever the watch's first sentinel event was missed. A message that reaches the inbox before the watch is armed is still picked up by one more pass once arming settles (#2756).

Fixed

  • An explicitly requested thinking level that the model cannot use is no longer dropped silently. When --thinking, /thinking, RPC, or an extension asks for a level the model does not offer (every level except off on a model not marked reasoning: true), the session records the requested level and the reason beside the applied one (thinkingSelection.requested and thinkingSelection.clampReason), and shows one warning: on stderr for print, JSON, and RPC runs, and in the TUI. A level that only comes from the global defaultThinkingLevel setting is not treated as a request and does not warn. (#2395) Thanks to @MoerAI (#2435).
  • Project rule discovery no longer escapes the project root on Windows. A read/edit/write target on a different drive, or one whose drive-letter case differs from the project root, made the rules finder walk the unrelated location and inject any AGENTS.md, CLAUDE.md, .claude/rules, .cursor/rules, or .github/instructions it found there as project rules (#568 by @MoerAI). POSIX behavior is unchanged.
  • With a compaction.model override on anthropic-subscription, senpi no longer rewrites older messages before each turn, so the resident Claude session keeps receiving only the new messages instead of re-sending the whole history every turn (#2746). Thanks to @trac3r00 (#2748).

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

  • Isolated eval cells: with sandbox.enabled, isolate: true runs a JavaScript cell in a fresh QuickJS VM with no persistence and no ambient host (only tools.*, print, display), streaming output under a credit window. Off by default; the eval schema is unchanged until the setting is on (#2694, #2705).
  • A JavaScript cell that is only %bun add <package ...> or %npm add <package ...> installs packages into a per-session managed environment without restarting the kernel; the next cell imports them by bare name, the project's package.json and node_modules are untouched, lifecycle scripts never run, and a failed or cancelled install leaves the previous packages active, from registry names, local directories, .tgz/.tar archives or URLs; each install is published as a new revision (#2452; #2692, #2761).

Changed

Fixed

  • An isolated (isolate: true) cell whose QuickJS runtime is missing now fails with eval_isolate_unavailable before any of its code runs, instead of a module-resolution error that named a host path (#2452).

  • %bun add over a package first installed from a local directory now works when the new archive's top directory is not package/ (a GitHub-style <repo>-<sha>.tgz, or a plain .tar): its name is read from the archive's own top-level directory, so the old directory's links are removed before bun installs (#2452).

  • A nested tool call that is denied inside an eval cell (a permission denial or another hook's block) now reaches the cell as the plain denial, without the Expected parameters: schema hint that made it read like an argument error; argument failures still get the hint (#2700). Thanks to @MoerAI (#2755).

  • An eval run with an invalid language value (for example "python", "" or null) now gets its own error listing the enabled languages, instead of the "run requires language" message meant for an omitted one; peek and stop still need no language (#1395). Thanks to @MoerAI.

Removed

@code-yeongyu/senpi-tui

Breaking Changes

Added

Changed

Fixed

Removed