Changed
- Add optional strict model-scope enforcement that rejects inherited and fallback models outside the configured allowlist. Thanks to @antonioc-cl for #995.
- Trim legacy chain-control schema fields and guidance by default, saving 1,319
o200k_basetokens from the serialized default tool schema plus description versuslegacyChainControls: true. Thanks to @tajquitgenius for #977. - Move project-scoped pi-subagents storage from
.pi-subagents/to.pi/subagents/for cleaner project roots. Thanks to @yceachan for #971. - Clarify the accepted mission launch object contract for tool callers.
- Reduce repeated async status parsing, workflow trace projection, and constrained widget rendering work.
- Keep parsed async statuses cached beyond 50 runs while preserving per-read freshness checks. Thanks to @bcanvural for #982.
Fixed
- Omit missing configured read files from child task instructions.
- Stabilize steering recovery budget coverage around the confirmed paused handoff.
- Keep timeout-sensitive async acceptance verification coverage off Windows CI where signal delivery is intermittent.
- Retry transient Windows mission state lock creation failures and stabilize no-session steering recovery coverage.
- Keep async widget running glyphs moving while children are quiet but active. Thanks to @bcanvural for #983.
- Let active-session workflows live-steer their workflow-owned foreground children by child or unique workflow identity. Thanks to @youlikemodernart for #988.
- Accept persisted async recovery descriptors that include internal turn-budget state fields (#985).
- Add a 30-minute default wall-clock timeout to async children while keeping async composite parents unbounded by default. Thanks to @forrestbthomas for #978 and #979.
- Keep tool argument previews on one physical terminal line so live widget updates do not leave stacked terminal frames. Thanks to @xz-dev for #972.
- Recover durable async completions when a healthy native result watcher misses a filesystem event. Thanks to @xz-dev for #973.