Repository navigation
v2026.10.13
@code-yeongyu/senpi
Breaking Changes
Added
- RPC clients now see scheduled goal continuations, their due time, and their resumption through the
goal_continuation_scheduled,goal_continuation_timer_state, andgoal_continuation_resumedextension events. Thegoal_continuation_fire_nowextension request runs an armed continuation immediately through its normal eligibility checks; a timer held while the user types stays held (#3208).
Changed
-
The bundled Claude Agent SDK is updated to 0.3.296 (from 0.3.292), so the Anthropic subscription lane runs Claude Code 2.1.296 and the models it knows (#3258).
-
Tip history, changelog acknowledgments, and per-model reasoning/fast-mode memories now live in
state.json, keeping automatically written bookkeeping out of version-controlled global settings./reasoning,/efforts, and thinking cycles remember the model's level without changing the startup default; Ctrl+S in/thinkingand the/settingsthinking option still save it explicitly. Existing global keys migrate without overwriting saved state or changing project settings. Corrupt state no longer disables config, and no-value-change saves preserve config bytes. Restart older sessions during upgrades: their legacy bookkeeping writes can still trigger config reloads (#3213, requested by @devxoul).
Fixed
-
Busy multi-session RPC hosts now reclaim freed heap pages when their session count drops and their footprint is at least 2 GB, even while other children keep running. Drops during the trim interval stay pending until it expires, including when a new session replaces the closed one between checks. Busy-host collections wait at least a minute and at least 100 times the previous collection pause;
host_trimmedreportssessionsandpauseMs. This prevents long sessions with many concurrent children from retaining their peak memory footprint (#3240, #3221). -
Per-run TPS/cache-hit notices now appear only in the TUI, preventing an extra info row after every agent run in RPC clients (#3237).
-
Open todo work now shows a quiet
waiting: <sources>footer when a background child, monitor, eval cell, open question, running goal, pending continuation, or queued message will resume it. Thetodo_owed_reminderevent and debug log name those sources. A stopped goal is no longer counted as waiting and keeps its own stop notice (#3232). -
Help, version, model/tip listings, session export, and one-shot package/host/schedule commands no longer enable the startup compile cache, avoiding Bun 1.4.3's slower cold-cache write at exit. Interactive, RPC and prompt-processing sessions, schedule watchers, and multi-session RPC hosts retain caching. An externally supplied
NODE_COMPILE_CACHEremains untouched (#3169). -
Closing a todo task resets the two-continuation limit, so unattended work that makes progress can continue after its next early stop. After two automatic continuations close no task, the stop notice explains the limit and how to resume: reply, or close the work with
/todo doneor/todo drop(#3220).
Removed
@code-yeongyu/senpi-ai
Breaking Changes
Added
Changed
- The advertised Claude Code fingerprint floor that Anthropic OAuth requests declare follows the bundled Claude Agent SDK to Claude Code 2.1.296 (#3258).
- The bundled model catalog is refreshed from models.dev and the providers' model listings (
cloudflare-ai-gateway,meta,opengateway,openrouter,vercel-ai-gateway) (#3248).
Fixed
- Tool parameter schemas sent to OpenAI Chat Completions providers now always declare a root
type: "object", including when a rootanyOf/oneOfunion cannot be merged into a single object schema. DeepSeek's official API (and gateways that forward to it, such as OpenGateway's DeepSeek route) rejected such requests with400 Invalid schema ... got 'type: null'(#3245).
Removed
@code-yeongyu/senpi-agent-core
Breaking Changes
Added
Changed
Fixed
Removed
@code-yeongyu/senpi-codemode
Breaking Changes
Added
Changed
Fixed
- Large JavaScript
evaldata cells no longer stall the shared RPC host on unnecessary import parsing. Cells without possible import syntax skip Babel, and the whole-AST walk runs only when a dynamic import is possible. The dynamic-import check stays linear on comment-heavy data; imports with comments or non-ASCII bindings still rewrite correctly (#3206).