Repository navigation
v0.12.0
v0.12.0
Highlights
Tool call ID sanitization — Clients that generate non-conformant tool_call_id values (e.g. containing newlines or exceeding 64 chars) no longer cause upstream 400 errors. The gateway now sanitizes IDs at the IR→provider boundary across all converters, both streaming and non-streaming. (#596, #598)
Namespace tool flattening — OpenAI Responses API additional_tools and namespace tool containers (e.g. container.tool_name) are now flattened into individual IR tools, enabling cross-format conversion for Codex CLI and similar clients. (#623, #624, #626)
Admin panel UX overhaul — Redesigned provider cards (compact single-line rows), step/scatter charts for throughput/latency, drag-and-drop layout editor for provider modals, searchable icon picker, and accessibility fixes. (#600, #603, #612, #629, #630, #631)
Added
sanitize_tool_call_id()helper — strips invalid chars and truncates to 64 chars with deterministic hash suffix (#598)- Configurable
data_dirfor persistence storage —keys.db, metrics, and error dumps now default to<config_dir>/data/(#595) - Provider
models_pathandlogoconfig fields for admin panel (#621) - Reasoning capability enforcement — pipeline now rejects
thinkingconfig when the model shim doesn't declare support (#618) - Rerank model type support in admin Fetch Models modal (Jina, Cohere) (#619)
- Connectivity test toast redesign with per-endpoint probes (#612)
Changed
- ReasoningCapability redesign — explicit
thinking_modes,effort_range, andvisibility_modesdimensions replace the old flat flags (#614) supports_custom_toolsis now tri-state (True/False/None) — an explicitFalsein a shim now correctly disables custom tool support (#624)- Argo shim uses
argo:prefix in model display names (#616)
Fixed
- Anthropic streaming tool calls:
input_json_deltanow bound to the correct tool call via block index, fixing multi-tool streaming corruption (#628) - Error dump View/Download buttons not responding to clicks (#615)
- Admin hint popup positioning to prevent viewport clipping (#631)
- Defensive
model_list_transformwheninternal_idis absent (#620)
Full Changelog: v0.11.2...v0.12.0