chore(release): v3.5.9 — combo ordering, stream failures, Docker EXDEV, token layout

This commit is contained in:
diegosouzapw
2026-04-09 22:22:02 -03:00
parent 74a5bcb3a9
commit 4bca25d783
5 changed files with 22 additions and 5 deletions

View File

@@ -4,6 +4,23 @@
---
## [3.5.9] — 2026-04-09
### ✨ New Features
- **Persistent Combo Ordering:** Drag combo cards by handle to reorder them in the dashboard; order is persisted to SQLite via a new `sort_order` column and `POST /api/combos/reorder` endpoint. Includes DB migration `020_combo_sort_order.sql` and JSON import preservation (#1095)
- **Sidebar Group Reorder:** Moved "Logs" before "Health" in the System section and "Limits & Quotas" after "Cache" in the Primary section for a more logical navigation flow (#1095)
### 🐛 Bug Fixes
- **Stream Failure Surfacing:** Upstream `response.failed` events (e.g. Codex rate-limit errors) are now properly surfaced as non-200 errors instead of being silently swallowed as empty 200 OK streams. Rate-limit failures return HTTP 429 (#1098, closes #1093)
- **Upstream Model Preservation:** The Responses-to-OpenAI stream translator now preserves the actual upstream model (e.g. `gpt-5.4`) instead of hardcoding a `gpt-4` fallback (#1098, closes #1094)
- **Docker EXDEV Fix:** `build-next-isolated.mjs` now falls back from `fs.rename()` to `cp/rm` when Docker buildx raises `EXDEV` (cross-device link), unblocking the Docker image publish workflow (#1097)
- **macOS CLI Path Resolution:** `cliRuntime.ts` resolves symlink parents with `fs.realpath()` to handle macOS `/var``/private/var` chains, preventing false `symlink_escape` rejections (#1097)
- **Request Log Token Layout:** Split token badges into separate Input (Total In, Cache Read, Cache Write) and Output (Total Out, Reasoning) groups for clearer readability; renamed "Time" label to "Completed Time" (#1096)
---
## [3.5.8] — 2026-04-09
### ✨ New Features & Analytics

View File

@@ -1,6 +1,6 @@
{
"name": "omniroute-desktop",
"version": "3.5.8",
"version": "3.5.9",
"description": "OmniRoute Desktop Application",
"main": "main.js",
"author": {

View File

@@ -8,7 +8,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo
**Key value:** One endpoint (`http://localhost:20128/v1`), unlimited models, zero downtime, minimal cost.
**Current version:** 3.5.8
**Current version:** 3.5.9
## Tech Stack
@@ -279,7 +279,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo
└── .env.example # Environment variable template
```
## Key Features (v3.5.8)
## Key Features (v3.5.9)
### Core Proxy
- **60+ AI providers** with automatic format translation

View File

@@ -1,6 +1,6 @@
{
"name": "@omniroute/open-sse",
"version": "3.5.8",
"version": "3.5.9",
"description": "Express SSE sidecar for OmniRoute — handles streaming, protocol translation, and provider orchestration",
"type": "module",
"main": "index.js",

2
package-lock.json generated
View File

@@ -20980,7 +20980,7 @@
},
"open-sse": {
"name": "@omniroute/open-sse",
"version": "3.5.8"
"version": "3.5.9"
}
}
}