You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added subagents.disableThinking so bundled builtin agents can drop thinking suffix defaults for providers that do not accept them. Thanks to Joshua Harding (@jhstatewide) for #212.
Discover nested grouped skills such as .pi/skills/group/name/SKILL.md so subagents match the host runtime's recursive skill lookup. Thanks to Weaxs (@Weaxs) for #262.
Follow Pi's configured project config directory for project-local agents, chains, skills, packages, settings, direct MCP config, and intercom package discovery instead of hardcoding .pi, while retaining .pi as the fallback for older Pi versions.
Changed
Hardened npm installs by tracking package-lock.json, pinning direct dependencies, and using npm ci --ignore-scripts in CI and release workflows. Thanks to Modestas Vainius (@modax) for #234.
List configured subagent skills by name, description, and file path instead of inlining full skill bodies, and ensure tool-restricted children can read those skill files on demand. Thanks to Ruben Paz (@Istar-Eldritch) for #183.
Fixed
Resolve the async result watcher directory with fs.realpathSync.native() before fs.watch() so Windows profiles with 8.3 temp paths do not crash Pi when async subagent results arrive. Thanks to kerushidao (@kerushidao) for #254.
Accept structured acceptance reports emitted in JSON-family fences when the fenced body has the acceptance-report shape. Thanks to Suleiman Tawil (@stawils) for #253.
Report field-level acceptance-report validation errors instead of a generic parse failure, and clarify array element types in the acceptance prompt. Thanks to Whisperfall (@Whisperfall) for #264 and josephkEA (@josephkEA) for the follow-up reproduction.
Simplified the public acceptance and chain tool schemas so Kimi/Moonshot-style parsers can load subagent, while runtime validation still rejects malformed acceptance config and dynamic fanout steps. Thanks to Sergio Agosti (@sergio-agosti) for #249.
Reject duplicate concurrent subagent execution calls while a prior subagent dispatch is still in progress, keeping intentional parallel mode within a single call unchanged. Thanks to desideratum (@desideratum) for #247.
Bound async events.jsonl growth by dropping noisy child message_update snapshots, capping persisted child diagnostics, and scanning control events in chunks during status polling. Thanks to Tri Van Pham (@pvtri96) for #246.
Keep crowded async subagent widgets at a stable collapsed height in short terminals, reducing destructive full-screen TUI redraws and flicker. Thanks to ssyram (@ssyram) for #186.
Actually wire the previously documented foreground-only timeoutMs/maxRuntimeMs aliases through single, parallel, chain, and dynamic fanout runs, including stable timedOut: true results, preserved partial output, manual-interrupt precedence, and skipped acceptance verification after timeout.
Apply subagents.agentOverrides.<name> to matching user-scope and project-scope custom agents, while keeping explicit agent frontmatter authoritative per field. Thanks to Jacek Juraszek (@jjuraszek) for #218.
Preserve compact foreground write/edit tool-call evidence in prompt-template delegation responses so convergence checks do not stop loops early. Thanks to Hans Schnedlitz (@hschne) for #207.
Respect each agent's defaultContext in mixed parallel and chain subagent calls when no explicit context is provided, so fresh-default scouts no longer inherit forked parent transcripts just because another agent in the same invocation defaults to fork. Thanks to Mitch Fultz (@fitchmultz) for #228.
Make runtime output overrides authoritative in child task and system prompts, and remove stale static filenames from bundled output-format instructions. Thanks to youngshine (@smithyyang) for #223.
Keep top-level parallel defaultProgress files in run-scoped artifact storage instead of the parent working directory. Thanks to youngshine (@smithyyang) for #224.