diff --git a/CHANGELOG.md b/CHANGELOG.md index b90514db7a..b7fbcba225 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,40 @@ --- +## [3.0.0-rc.15] — 2026-03-23 + +### ✨ New Features + +- **#563** — Per-model Combo Routing: map model name patterns (glob) to specific combos for automatic routing + - New `model_combo_mappings` table (migration 010) with pattern, combo_id, priority, enabled + - `resolveComboForModel()` DB function with glob-to-regex matching (case-insensitive, `*` and `?` wildcards) + - `getComboForModel()` in `model.ts`: augments `getCombo()` with model-pattern fallback + - `chat.ts`: routing decision now checks model-combo mappings before single-model handling + - API: `GET/POST /api/model-combo-mappings`, `GET/PUT/DELETE /api/model-combo-mappings/:id` + - Dashboard: "Model Routing Rules" section added to Combos page with inline add/edit/toggle/delete + - Examples: `claude-sonnet*` → code-combo, `gpt-4o*` → openai-combo, `gemini-*` → google-combo + +### 🧪 Tests + +- Test suite: **923 tests, 0 failures** (+15 new model-combo mapping tests) + +--- + +## [3.0.0-rc.14] — 2026-03-23 + +### 🔀 Community PRs Merged + +| PR | Author | Summary | +| -------- | -------- | -------------------------------------------------------------------------------------------- | +| **#562** | @coobabm | fix(ux): MCP session management, Claude passthrough normalization, OAuth modal, detectFormat | +| **#561** | @zen0bit | fix(i18n): Czech translation corrections — HTTP method names and documentation updates | + +### 🧪 Tests + +- Test suite: **908 tests, 0 failures** + +--- + ## [3.0.0-rc.13] — 2026-03-23 ### 🔧 Bug Fixes diff --git a/docs/openapi.yaml b/docs/openapi.yaml index 7220d62ea3..78f0cb43f3 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: OmniRoute API - version: 3.0.0-rc.13 + version: 3.0.0-rc.15 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 5f165c1cbe..701a1cd4d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "omniroute", - "version": "3.0.0-rc.13", + "version": "3.0.0-rc.15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "omniroute", - "version": "3.0.0-rc.13", + "version": "3.0.0-rc.15", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index 39f3bc535d..b5b4aa8958 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "omniroute", - "version": "3.0.0-rc.13", + "version": "3.0.0-rc.15", "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": {