Release Notes
-
Fallback handling for Responses API rejections — OpenAI-compatible providers that reject
/v1/responsespayloads with a 400 validation error now correctly retry through Chat Completions. Generic bad-request errors are no longer misinterpreted as proof that Responses is unsupported; only endpoint-specific and Venice-style rejections trigger the fallback. -
Materialize MCP image attachments — MCP image and image-resource payloads are now saved as scoped artifact files, returning real file paths in tool text and attachment metadata instead of only inline data URLs. Images remain model-visible through raw image history content.
-
Normalize Responses tool schemas — Function parameter schemas now include an explicit
propertiesobject before Responses requests are dispatched, keeping permissive prompt/MCP schemas compatible with stricter OpenAI-compatible chat validators. -
Render plain Responses completions in WebUI — When Responses mode returns a plain-text final answer, the active "Calling LLM" log item is now correctly promoted to a finished response entry instead of leaving the UI stuck on the generating step.
-
Fix WebUI message replay ordering — Full log snapshots are now treated as authoritative replays, clearing the message DOM when the snapshot starts at log 0 and rendering in backend order. This prevents streamed responses from appearing above earlier welcome/user messages after sync races.
-
Prefer tool roots in streamed JSON extraction — The JSON extraction logic now prefers the first complete root that normalizes as a tool request, reducing false misformat warnings when incidental JSON or leading prose precedes a streamed tool-call envelope.
-
Accept JSON-string parallel tool calls — Providers or models that stringify the
tool_callsarray insidetool_argsare handled again; the wrapper decodes the string and runs the same validation path as normal tool-call objects. -
Remove backup file count cap — Backup creation and restore cleanup no longer cap file pattern scans at 50,000 files, so archives for large agent directories are complete. UI preview and dry-run paths remain bounded for responsiveness.
-
Skills tooling compatibility — Empty
skills_toolcalls now default tolist, the legacymethodparameter is accepted as a deprecated alias foraction, and malformedSKILL.mdfrontmatter emits a once-per-path warning with line numbers instead of silently skipping the skill.