@oh-my-pi/pi-agent-core
Fixed
- Prevented sensitive raw JSON payloads from leaking into agent events during tool validation
- Ensured tool validation errors are handled correctly for malformed JSON parse inputs
- Ensure deep-cloning of tool-call arguments respects own enumerable properties
- Prevent direct object references between agent message snapshots and streaming events
@oh-my-pi/pi-ai
Added
- Added improved JSON repair capabilities for Anthropic tool arguments
- Added authentication broker discovery to sync credentials between local SQLite and remote state
Fixed
- Improved error feedback and transparency for malformed Anthropic tool call arguments
- Added automatic fallback for unsupported OpenAI reasoning effort levels
- Improved reliability when handling invalid reasoning parameter errors across OpenAI-compatible APIs
- Fixed OpenAI-compatible Chat Completions, Responses, and Azure Responses requests to retry once with the nearest provider-supported reasoning effort when an endpoint rejects
xhigh/minimal-style effort values.
@oh-my-pi/pi-catalog
Added
- Added support for Gemini 2.5 Flash-Lite, 3.1 Flash-Lite, and 3.5 Flash models
- Added support for Moonshot V1 model family
Changed
- Updated context window and token limits for various Claude, Gemini, and GPT-OSS models
- Refined thinking mode behaviors and routing for supported LLM families
Fixed
- Fixed GLM-5.2
reasoning_effortso the top thinking tier reaches each host's genuine maximum instead of 400ing, mapping the internalxhightier per host dialect (verified against live endpoints): Z.ai/Zhipu collapse onto the model'snone/high/maxscale (xhigh → max); Fireworks, resellers, and Ollama Cloud keep their distinct lower tiers and remap only the topxhigh → max(merged over host quirks such as Fireworks'minimal → none); and OpenRouter — whose API rejectsmaxand treatsxhighas its own max tier — now exposes thexhightier and forwards it verbatim. Dialect detection keys off resolvedcompat.thinkingFormat, so custom OpenRouter/Z.ai-format providers are covered too. - Maintained thinking effort routing when discovery only returns the base model ID
- Improved credential retrieval logic for Antigravity and Codex providers via auth discovery
@oh-my-pi/pi-coding-agent
Added
- Added a welcome-screen tip for the
/advisorruntime. Tips ending in a[NEW]marker now render a bold rainbowNEW!tag (it shimmers across the welcome intro's animation frames, then settles into a still rainbow) and are weighted to surface more often in the random tip rotation.
Changed
- Renamed the search tool's
iparameter tocaseand inverted its semantics to represent case-sensitive search. - Improved session history to export empty objects as
{}instead of empty strings - Refined system prompt and tool documentation to improve conciseness and clarity
- Simplified tool input descriptions for browser, eval, find, and memory-edit operations
- Refactored authentication storage discovery to share logic with other pi-ai tools
Fixed
- Fixed
omp benchresolving an ambiguous model selector — a bare or canonical id shared by several providers (e.g.gpt-oss-20boropenai/gpt-oss-20b) — to a provider you have no credentials for. Bench resolves against the full catalog (credentials are ignored), so the default pick was decided by provider-priority order alone. It now redirects such selectors to an equivalent model under a provider with configured auth (honoringmodelProviderOrderand canonical cross-provider variants), while an explicitprovider/idselector is still benchmarked verbatim so forced/unauthenticated runs keep working. - Resuming a session whose project directory no longer exists (deleted or renamed worktree) no longer crashes with an unhandled
ENOENT … chdirrejection. The resume now keeps the current working directory instead of trying tochdirinto the missing path, across the in-session selector, the--resumestartup picker, andSessionManager.open/continueRecent. - Fixed streaming reflowing Markdown — a fenced mermaid diagram or a GFM table — stranding stale fragments in native scrollback once the reply scrolled past the viewport (cleared only by a full repaint / Ctrl+L). While streaming, the assistant block defaulted to commit-stable, so the transcript advertised its scrolled-off rows as durable snapshot content and the renderer committed an intermediate layout to immutable terminal history; the later re-layout (a diagram reshaping, a table re-aligning its columns) then froze that superseded fragment in scrollback. A still-streaming reply whose Markdown carries a mermaid fence or a table — detected outside fenced code blocks so ordinary code snippets are unaffected — is now commit-unstable, so it stays wholly in the repaintable live region and commits once, at its final layout, when the turn finalizes.
- Fixed
SYSTEM.mdprompt customization going through the raw system prompt override path, which dropped sections rendered bycustom-system-prompt.mdsuch as skills and rules (#3014).
@oh-my-pi/hashline
Changed
- Refined documentation and prompt instructions for clarity and brevity
@oh-my-pi/pi-utils
Added
- Added
directoryExists(dir)todirs: resolves whether a path is an existing directory, returningfalseon any stat failure (ENOENT, permission, non-directory). Lets callers check a directory is safe tochdirinto beforesetProjectDirthrows.
Removed
- Removed the public
createAbortableStreamAPI from@oh-my-pi/pi-utils. Consumers should use the lighter, direct-readerabortableSourceasync generator inside@oh-my-pi/pi-utils/streamto avoid the extra ReadableStream wrapper layer and per-chunk enqueue overhead.
What's Changed
- fix(agent): dynamically fallback from snapcompact to text summary on high CJK/non-ASCII rates by @cagedbird043 in #3053
- fix(prompting): render SYSTEM.md through custom prompt template by @roboomp in #3048
Full Changelog: v16.1.1...v16.1.2