New Features
- Extensions can intercept and modify provider request payloads via
before_provider_request. See docs/extensions.md#before_provider_request. - Extension UIs can use non-capturing overlays with explicit focus control via
OverlayOptions.nonCapturingandOverlayHandle.focus()/unfocus()/isFocused(). See docs/extensions.md and ../tui/README.md. - RPC mode now uses strict LF-only JSONL framing for robust payload handling. See docs/rpc.md.
Breaking Changes
- RPC mode now uses strict LF-delimited JSONL framing. Clients must split records on
\nonly instead of using generic line readers such as Nodereadline, which also split on Unicode separators inside JSON payloads (#1911)
Added
- Added
before_provider_requestextension hook so extensions can inspect or replace provider payloads before requests are sent, with an example inexamples/extensions/provider-payload.ts - Added non-capturing overlay focus control for extension UIs via
OverlayOptions.nonCapturingandOverlayHandle.focus()/unfocus()/isFocused()(#1916 by @nicobailon)
Changed
- Overlay compositing in extension UIs now uses focus order so focused overlays render on top while preserving stack semantics for show/hide behavior (#1916 by @nicobailon)
Fixed
- Fixed RPC mode stdin/stdout framing to use strict LF-delimited JSONL instead of
readline, so payloads containingU+2028orU+2029no longer corrupt command or event streams (#1911) - Fixed automatic overlay focus restoration in extension UIs to skip non-capturing overlays, and fixed overlay hide behavior to only reassign focus when the hidden overlay had focus (#1916 by @nicobailon)
- Fixed
pi configmisclassifying~/.agents/skillsas project-scoped in non-git directories under$HOME, so toggling those skills no longer writes project overrides to.pi/settings.json(#1915)