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
overlayAnchor config (#3, reported by @ttttmr). The overlay was always centered; it can now be pinned to any of the nine host anchors, for example "top-center" to move it up. Invalid values warn and fall back to center.
Custom spawn agents (#16, reported by @krikchaip). Any key under spawn.commands is now a real spawn agent, usable through spawn: { agent: "..." }, /spawn <agent>, spawn.defaultAgent, spawn.defaultArgs, worktrees, and prompt passthrough. Agent names are validated when config loads, fresh/fork stay reserved /spawn keywords, fork stays Pi-only, and an unconfigured agent now fails with the list of configured agents instead of building a broken command.
Changed
Tightened TypeScript/runtime boundaries for config and output queries: config JSON roots are now validated before merging, non-finite numeric config/query values fall back to defaults, and monitor/PTY internals avoid unnecessary type assertions.
Cut over to the current pi package scope: all imports now use @earendil-works/pi-coding-agent and @earendil-works/pi-tui, and local module specifiers use .ts extensions.
Declared @earendil-works/pi-coding-agent, @earendil-works/pi-tui, and typebox as peer dependencies with a * range, following pi's package contract. typebox is no longer a direct dependency because pi resolves all of these through its extension loader aliases.
Added engines.node: >=22.19.0 to match pi's minimum supported Node version.
Added strict TypeScript checking (tsconfig.json, npm run typecheck) and fixed all resulting errors.
ToolParams is now derived from the typebox schema (Static<typeof toolParameters>) instead of a hand-written duplicate; the drift this exposed was fixed by constraining handsFree.updateMode to 'on-quiet' | 'interval' in the schema, so invalid values are rejected at the tool boundary instead of silently misbehaving.
Config shortcuts (focusShortcut, spawn.shortcut) are validated as key identifiers when loading config; invalid shortcuts now warn and fall back to the defaults instead of silently never matching.
Compiled monitor config is now a discriminated union on strategy, making fileWatch presence impossible to misuse for non-file-watch strategies.
/dismiss selection no longer treats an unmatched select label as "dismiss all".
Fixed
Respond to fish's Primary Device Attribute query so interactive fish sessions do not wait for the 10-second terminal capability timeout (#21, reported by @PaulGrandperrin).