Skip to content

v2026.10.9

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:25
· 450 commits to main since this release

@code-yeongyu/senpi

Breaking Changes

Added

  • A permission prompt sent to RPC clients now names the tool call it approves (toolCallId, plus parentToolCallId for a call another tool issued), and so does the feedback input after "Deny with feedback". The engine raises the prompts for every call of a message before any of them runs, so a client could not tell which of several calls of the same tool a prompt was for; an app can now show each prompt with its own call's input (#2710).

Changed

Fixed

  • A reply that only answers a question is now the answer itself: the prompt no longer requires every final message to open with the Ask / For you / Now / Next block, which put one-line answers inside a status block ending Now: none. Next: none. The block stays for turns that did work (#2723).
  • Replies no longer arrive wrapped in a blockquote: the handoff template and the routing line in the system prompt were written as markdown quote lines, the model copied the >, and the desktop and the TUI drew the whole answer as a grey quoted aside that read as if the turn had paused (#2714).

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

  • Python agent(prompt, tools=[...]) grants the child the cell's @tool functions by name, like JavaScript's agent(prompt, { tools }); anything other than a list of names is refused with invalid_tools (#2731).
  • workpool(agent, name, {mode, tools}) forwards tools, a list of kernel-tool names the cell defined, to the host workpool unchanged in all four languages, so pool workers can call them; anything other than a list of names is refused with invalid_tools before reaching the host. Which kernels' tools a host accepts is the host's call: JavaScript tool(fn) tools work on omo today, while Python @tool tools need omo#9529 (#2452).
  • A Python or JavaScript cell that is only %load <path> runs that local file as the cell: its definitions persist, Python tracebacks name the file and its sibling modules import, and JavaScript resolves the file's relative imports from its directory; remote URLs are refused (#2452).
  • A Python cell that is only %pip install <requirements> installs packages without restarting the kernel; the next cell imports them. Packages go into the session's own environment (or <cwd>/.senpi/python-packages after %environment project), never the interpreter's site-packages or the user site, and a failed or cancelled install leaves the previous packages active (#2452).

Changed

Fixed

  • A Python cell can now grant its @tool functions to a child (#2731). Host calls from Python cells (tool.task(..., tools=[...]), agent(..., tools=[...]), workpool(..., tools=[...])) reached the host with no kernel-tools capability, so every such grant was refused as unavailable. Each call now carries its cell, and the host gives it that cell's capability while the cell runs; a call from another, unknown or finished cell gets none.
  • %pip parsing follow-ups (#2689): a %pip or %environment line after code now says to put it on its own cell instead of "Unsupported line magic"; a comment line ending in a backslash no longer swallows the %pip line after it; inside double quotes a backslash is kept unless it escapes a quote, backslash, $ or a backtick, as a POSIX shell does.

Removed

@code-yeongyu/senpi-tui

Breaking Changes

Added

Changed

Fixed

  • Accepting an @ path suggestion with Tab or Enter while the picker still showed a list computed for earlier text no longer splices the stale item into the prompt (@~/Dev became @~/De@go/); the editor re-queries for the current token and accepts its best match (#2735; #2736 by @trac3r00).

Removed