v2.1

vercel/chatbotv2.1Jun 26, 2026by github-actions[bot]

AI Summary

This update improves the Responses API integration with fallback handling for rejections and enhances MCP image handling, alongside several UI fixes for message replay and streaming.

Key Highlights

  • Implemented fallback handling for Responses API rejections from providers.
  • Materialized MCP image attachments as scoped artifact files.
  • Fixed WebUI message replay ordering using log snapshots.
  • Fixed plain Responses completions rendering in WebUI.
  • Removed backup file count cap for large agent directories.

New Features

  • Fallback handling for OpenAI-compatible provider rejections.
  • MCP image materialization as scoped artifacts.
  • WebUI message replay ordering fix.
  • Plain Responses completions rendering fix.
  • Removed backup file count cap.
  • Skills tooling compatibility improvements.

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.