v2.1
elkowar/ewwv2.1Jun 26, 2026by github-actions[bot]
AI Summary
This update focuses on Responses API fallback handling, MCP image attachment improvements, and removing backup file count caps.
Key Highlights
- Fallback handling for Responses API rejections via Chat Completions.
- MCP image and image-resource payloads are now saved as scoped artifacts.
- Normalizes Responses tool schemas with explicit `properties` objects.
- Removes backup file count cap for large agent directories.
New Features
- Accept JSON-string parallel tool calls.
- Skills tooling compatibility improvements.
- Plain Responses completions now render correctly in WebUI.
Full Release Notes
## Release Notes - **Fallback handling for Responses API rejections** — OpenAI-compatible providers that reject `/v1/responses` payloads 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 `properties` object 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_calls` array inside `tool_args` are 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_tool` calls now default to `list`, the legacy `method` parameter is accepted as a deprecated alias for `action`, and malformed `SKILL.md` frontmatter emits a once-per-path warning with line numbers instead of silently skipping the skill.