Skip to content

v2026.10.11

Choose a tag to compare

@github-actions github-actions released this 11 Oct 11:14
· 225 commits to main since this release

@code-yeongyu/senpi

Breaking Changes

Added

  • Host adapters can render Native prompt content through the public @code-yeongyu/senpi/prompt-presets subpath using resolvePreset, buildPreset, and buildDynamicSystemPrompt, with BuildDynamicSystemPromptOptions, ResolvedPromptPreset, PromptPresetSettings, PromptPresetName, ModelWithPromptPresetMetadata, and PromptSurface types. The builders accept an explicit application name while preserving Native's existing default branding; preset selection and content remain single-source (#3104).

  • senpi host session open|close|model|prompt|steer|abort|read|state|list|wait drives a session over the shared host from the command line: one JSON line of output per call and typed exit codes, so an orchestrating agent no longer has to write its own RPC client or scrape a terminal pane (#3073).

  • RPC refusals of prompt while a turn runs, set_model with an unknown model, and get_entries with an unknown since cursor now carry errorCode (streaming, model_not_found, not_found), so clients no longer match message text (#3073).

  • The footer shows a reasoning model's level as effort <level> with the key bound to app.thinking.cycle beside it (shift+tab by default, your own key when rebound, nothing when unbound) whenever the whole footer fits; on a narrower terminal the key drops first, then the label falls back to the compact model:<level> the footer always showed, so no stat or path character is lost to the hint. A one-time tip, Shift+Tab changes the reasoning level, is shown once per agent directory for reasoning models (#3090, requested by @devxoul).

  • Exported a shared prompt-preset resolution contract on the public @code-yeongyu/senpi/prompt-presets subpath: a pure, settings-free resolvePresetName({ providerID, modelID, name? }) plus PROMPT_PRESET_MODEL_CASES and AUTO_RESOLVED_PRESET_NAMES, so downstream harnesses can pin model-id-to-preset parity against a single source of truth. The model-id matchers moved into an exported matchers.ts that presets.ts re-imports; gpt-5 is a manual-only preset and is intentionally excluded from the auto-resolvable set (#3074).

Changed

  • The runtime snapshot a first launch builds copies the package as npm ships it (the files entries of package.json, plus package.json, README and LICENSE) instead of the whole package directory. Running from a repository checkout no longer copies its sources, tests and scripts: about 1,800 files instead of 11,000 for this package (#3083).

  • Runtime snapshots omit dependency development trees, root documentation notes and redundant TypeScript sources while retaining manifest entrypoints, source-only extensions, skills, native binaries and the complete dependency graph needed after an install update. A real Node/Bun CLI inventory covers help, external extension loading, a faux turn and codemode bootstrap (#3083).

Fixed

  • Context reduction no longer rewrites the prompt cache every turn on long sessions. Reduction stays engaged and holds a stable prefix between large frontier steps, survives restarts, and advances early near the context limit (#900, building on #901 by @codeg-dev; thanks to @daehwanahn and @ddotz for the reports and measurements).

  • Reloading a session releases the previous extension runner and reuses unchanged module graphs instead of retaining another generation. Edited lazy dependencies now invalidate the graph using the bytes actually compiled, including equal-size edits with preserved timestamps (#3066 by @jc01rho, #3068).

  • Boundary handlers no longer run after their extension runner retires during awaited context previews or handlers, and retired boundary drafts and continuation are discarded. A handler or boundary rebuild that was already in flight and then fails on the retired runner stands down instead of reporting an extension error (#3071 by @MoerAI).

Removed

@code-yeongyu/senpi-ai

Breaking Changes

Added

Changed

  • The bundled model catalog is refreshed from models.dev and the providers' model listings (openrouter).

Fixed

  • OpenAI models served through a Responses-compatible gateway (an openai provider whose baseUrl is not api.openai.com) no longer fail every turn with Invalid value: 'allowed_tools'. tool_choice: allowed_tools is sent only to the native endpoint; elsewhere requests carry only the active tools. If an endpoint still rejects the choice, the request is retried once with only the active tools and later requests to that model use that shape directly (#3080).

Removed

@code-yeongyu/senpi-agent-core

Breaking Changes

Added

Changed

Fixed

Removed

@code-yeongyu/senpi-codemode

Breaking Changes

Added

Changed

Fixed

  • Julia loads handle helpers at first use and installs globals sizing declarations only when a globals diagnostic is requested, reducing fresh-kernel CPU work. This is a partial fix; the remaining startup regression is tracked separately (Refs #3048).

Removed

@code-yeongyu/senpi-tui

Breaking Changes

Added

Changed

Fixed

Removed