From 4e15ca6bbda207718dad615beee9cb20ef24ed79 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Tue, 10 Mar 2026 09:12:27 -0300 Subject: [PATCH] chore(release): v2.2.0 - Merge PR #275: fix(cursor): stabilize tool result handoff - Merge PR #281: fix(validation): ElevenLabs + Inworld API key validation - Merge PR #279: feat(kimi-coding): Kimi Coding plan quota display - Merge PR #264: deps: bump dev group with 5 updates - Merge PR #263: deps: bump prod group with 2 updates - fix(ci): repair unit, e2e and i18n test failures - fix(providers): Add Connection button for OpenAI-compatible providers (#272) - docs: update CHANGELOG and bump openapi.yaml to 2.2.0 --- CHANGELOG.md | 24 ++++++++++++++++++++++++ docs/openapi.yaml | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcf7736ac5..d09c005a42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [2.2.0] โ€” 2026-03-10 + +> ### ๐Ÿ”ง Bug Fixes ยท Provider Support ยท CI Recovery + +### Bug Fixes + +- **Cursor tool-call loop (#275/#274)** โ€” Stabilized Cursor executor to stop double-translating tool results. Set-based `finalizedIds` for O(1) dedup, byte guard (`0x7b`) before payload `.toString()`, `escapeXml()` to prevent tag injection, and converted all debug `console.log` to `debugLog()`. Fixes the 400 Bad Request loop that corrupted multi-turn Cursor sessions. +- **A/V provider validation (#281)** โ€” Added `validateElevenLabsProvider` (GET `/v1/voices` with `xi-api-key`) and `validateInworldProvider` (POST `/tts/v1/voice` with Basic auth) so both providers can be test-connected without false 400 errors. +- **OpenAI-compatible Add Connection button (#272)** โ€” "Add Connection" button was hidden behind `!isCompatible` guard in the Connections card. Button now appears for compatible providers when 0 connections exist, limited to 1 (matches single-key-per-node policy). +- **CI: unit tests** โ€” Fixed circuit breaker tests using wrong instance keys (`combo:groq` โ†’ `combo:groq/llama-3.3-70b`). +- **CI: E2E protocol-visibility** โ€” Updated spec to click "Protocols" tab before asserting MCP/A2A links (now tabs inside `/dashboard/endpoint`). +- **CI: i18n** โ€” Added missing `header.mcp`, `header.mcpDescription`, `header.a2a`, `header.a2aDescription` keys to `en.json`. + +### New Features + +- **Kimi Coding plan quota display (#279)** โ€” New `getKimiUsage()` with `X-Msh-*` device headers. Parses weekly quota + rate-limit breakdown from `/v1/usages`. Wires `kimi-coding` into the provider usage switch; adds quota capability flag. + +### Dependencies + +- **Dev dependencies** โ€” Bumped `@playwright/test`, `@types/react`, `eslint-plugin-*` and 2 others (#264). +- **Prod dependencies** โ€” Bumped 2 production packages (#263). + +--- + ## [2.1.2] โ€” 2026-03-09 > ### ๐Ÿ”จ CI Green + Electron .deb + Link Fixes diff --git a/docs/openapi.yaml b/docs/openapi.yaml index f0a3357bdc..a7160b3a66 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: OmniRoute API - version: 2.1.2 + version: 2.2.0 description: | OmniRoute is a local-first AI API proxy router. It provides an OpenAI-compatible endpoint that routes requests to multiple AI providers with load balancing, diff --git a/package-lock.json b/package-lock.json index ce92009e7b..c5b997e7dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "omniroute", - "version": "2.1.2", + "version": "2.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "omniroute", - "version": "2.1.2", + "version": "2.2.0", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index 1c573c5624..04a7ff2ece 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "omniroute", - "version": "2.1.2", + "version": "2.2.0", "description": "Smart AI Router with auto fallback โ€” route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.", "type": "module", "bin": {