v1.2.90
Changelog (Current Version)
This file contains the changes for the current version only. The full history of all versions lives in docs/en/changelog.md.
v1.2.90
✨ New Features
-
ACP Session Config Options
- ACP now supports
session/set_config_optionandsession/set_modeRPC methods, enabling clients to change model, mode, and thinking level per session without rebuilding the agent or provider. - Each session carries a consistent
configOptionscatalog insession/new,session/load, andsession/resumeresults, andsession/set_config_optionnotifies all connected clients of the updated options. - Configuration is persisted to the session history (
model_change,mode_change,thinking_level_changeentries) and replayed on session load, so bindings survive restarts and survive across multiple adapters sharing the same session. - Stable streamed message IDs (
messageIdonagent_message_chunk,agent_thought_chunk, anduser_message_chunkupdates) group chunks into logical messages per prompt turn.
- ACP now supports
-
ACP Additional Directories
session/new,session/load, andsession/resumeaccept anadditionalDirectoriesarray of absolute workspace roots. The tool registry resolves paths within these roots, and the sandbox mounts them as read-only (strict mode) or writable paths.- Directory sets are persisted as
additional_directoriessession entries and restored on reload. - The session list endpoint (
session/list) exposesadditionalDirectoriesper session.
-
ACP Standard Elicitation Form Protocol
- When the client advertises
elicitation.formin client capabilities, question requests use the standard ACPelicitation/createmethod instead of the legacy_mothx/request_questionextension, with a typedrequestedSchemaenvelope. - Replay gracefully falls back to the legacy extension shape when a reconnecting client does not advertise form support.
- When the client advertises
-
ACP FileDiff Protocol Projection
- Tool call updates now include a
diffcontent type withpath,oldText, andnewTextfields for semantic diff representation, alongside the existing text content.oldTextisnullfor newly created files. - Tool call updates carry
locationswith the affected file path when a diff is present.
- Tool call updates now include a
🔧 Improvements
-
Session Mode and Thinking Level Persistence
- New
EntryModeChangeandEntryAdditionalDirectoriessession entry types record mode switches and directory bindings to the session history, enabling full replay and cross-session consistency. - The
SessionRuntimeownsModel,Mode,ThinkingLevel, andAdditionalDirectoriesas session-scoped bindings, withConfigureSession,ConfigSnapshot,SetConfigOption, andSetAdditionalDirectoriesmethods for atomic read/write. BuildAgentinherits session-level model, mode, and thinking level when the adapter omits overrides, ensuring consistent agent construction across ACP, TUI, and WebUI.
- New
-
ACP Strict JSON-RPC 2.0 Validation
- The ACP server now enforces:
initializemust be called before any other method,initializemay only be called once, empty messages are silently skipped, responses to notifications (empty ID) are suppressed, and request IDs are validated as JSON-RPC scalar types. cancelrequires asessionIdparameter and returns an error for unknown sessions.
- The ACP server now enforces:
-
ACP Unique Run IDs Across Connections
- Prompt run IDs now include a random suffix, preventing run ID collisions when ACP SDK request IDs repeat across connections.
-
CI Release Notes from Changelog
- GitHub release workflows now use
docs/changelog_online_en.mdas the release body instead of auto-generated release notes, ensuring releases carry the curated changelog.
- GitHub release workflows now use
-
FileDiff Enriched with OldText/NewText
FileDiffnow retains the complete file contents (OldTextandNewText) for protocol projections that require a semantic diff rather than a display patch.OldTextisnilwhen the write created a previously absent file.
-
ContentBlock File Fields Extended
FileContentnow carriesTitle,Description, andSizefields, and the ACPresource_linkprompt type maps these fields into the provider-neutral file representation.
🐛 Fixes
-
ACP Missing Prompt Body Rejection
- Prompts with only empty text are now rejected with an
empty prompterror instead of proceeding to the agent loop.
- Prompts with only empty text are now rejected with an
-
ACP Flaky Test and CI Stability
- Fixed wrapped thinking text assertion and flaky Go tests in CI.