297 KiB
Changelog (Русский)
🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr
[Unreleased]
[3.5.3] - 2026-04-05
Fixed
-**Промежуточное ПО:**устранен бесконечный цикл перенаправления на панели управления для новых экземпляров, когда requireLogin отключен.---
[3.5.2] — 2026-04-05
✨ New Features
-**Встроенная интеграция Qoder API:**Полностью переработан Qoder Executor для обхода устаревшего алгоритма шифрования COSY AES/RSA и маршрутизации непосредственно на собственный URL-адрес DashScope, совместимый с OpenAi. Устраняет сложные зависимости от «крипто» модулей Node, одновременно улучшая точность потока. -**Переработка механизма устойчивости:**встроенные корректные резервные варианты переполнения контекста, упреждающее обнаружение токенов OAuth и предотвращение выброса пустого контента (#990). -**Стратегия контекстно-оптимизированной маршрутизации.**Добавлена новая возможность интеллектуальной маршрутизации, позволяющая максимально увеличить контекстные окна в автоматических комбинированных развертываниях (#990).### 🐛 Bug Fixes
-**Повреждение потока API ответов:**Исправлено повреждение при глубоком клонировании, при котором границы трансляции Anthropic/OpenAI удаляли определенные префиксы response. из границ потоковой передачи (#992). -**Выравнивание сквозного кэша Claude:**Маркеры кэша, совместимые с CC, выровнены в соответствии с режимом сквозного сквозного доступа для вышестоящего клиента, сохраняя кэширование подсказок. -**Утечка памяти Turbopack:**Next.js привязан к строгому 16.0.10, что предотвращает утечки памяти и устаревание сборки из-за недавних регрессий хешированного модуля Turbopack (#987).---
[3.5.1] — 2026-04-04
✨ New Features
-**Интеграция с Models.dev:**интегрированный файл models.dev в качестве авторитетного источника информации о ценах, возможностях и спецификациях моделей во время выполнения, переопределяющий жестко закодированные цены. Включает пользовательский интерфейс настроек для управления интервалами синхронизации, строками перевода для всех 30 языков и надежным тестовым покрытием. -**Собственные возможности поставщика:**добавлена поддержка объявления и проверки собственных функций API (например, systemInstructions_supported), предотвращающая сбои путем очистки недопустимых ролей. В настоящее время настроен для поставщиков OAuth Gemini Base и Antigravity. -**Расширенные настройки поставщика API:**добавлены специальные переопределения User-Agent для каждого соединения для подключений к поставщику ключей API. Переопределение хранится в providerSpecificData.customUserAgent и теперь применяется к проверкам и запросам на выполнение восходящего потока.### 🐛 Bug Fixes
-**Надежность Qwen OAuth:**решен ряд проблем интеграции OAuth, включая блокировку 400 Bad Request для токенов с истекшим сроком действия, создание резервной копии для анализа свойств OIDC access_token, когда id_token опущен, ошибки обнаружения каталога моделей и строгую фильтрацию заголовков X-Dashscope-*, чтобы избежать отклонения 400 от OpenAI-совместимых конечных точек.## [3.5.0] — 2026-04-03
✨ New Features
-**Автокомбинирование и маршрутизация:**Завершена встроенная интеграция жизненного цикла CRUD для расширенного механизма автоматического комбинирования (#955). -Основные операции: исправлены отсутствующие переводы для новых встроенных опций автокомбинирования (#955). -**Проверка безопасности:**Отключены задачи автоматического резервного копирования SQLite во время выполнения CI модульного теста, чтобы явно устранить зависающие утечки памяти в цикле событий Node 22 (#956). -**Экосистемные прокси:**завершена явная интеграция планировщиков синхронизации модели сопоставления, циклов OAuth и проверки токенов, которые безопасно обновляются через собственные восходящие прокси-серверы системы OmniRoute (#953). -**Расширяемость MCP:**добавлен и успешно зарегистрирован новый инструмент инфраструктуры MCP omniroute_web_search из бета-версии в рабочие схемы (#951). -Логика буфера токенов: добавлены ограничения конфигурации времени выполнения, расширяющие настраиваемые буферы токенов ввода/вывода для точных показателей отслеживания использования (#959).### 🐛 Bug Fixes
-**Исправление CodeQL:**полностью решены и защищены важные операции индексации строк, предотвращающие подделку запросов на стороне сервера (SSRF), индексирующие эвристику, а также полиномиальный алгоритмический обратный поиск (ReDoS) внутри модулей глубокого прокси-диспетчера. -**Криптовалютные хэши:**заменены слабые непроверенные устаревшие хеши OAuth 1.0 на надежные стандартные примитивы проверки HMAC-SHA-256, обеспечивающие строгий контроль доступа. -**Защита границ API:**Правильно проверенные и сопоставленные структурные средства защиты маршрутов, обеспечивающие строгую логику промежуточного программного обеспечения isAuthenticated(), охватывающую новые динамические конечные точки, нацеленные на манипулирование настройками и загрузку собственных навыков. -**Совместимость экосистемы CLI:**устранены неработающие привязки встроенного синтаксического анализатора среды выполнения, приводившие к сбою детекторов среды where строго в крайних случаях .cmd/.exe для внешних плагинов (#969). -**Архитектура кэша:**Переработано точное кэширование структуры макета параметров информационной панели аналитики и системных настроек для обеспечения стабильных циклов повторной гидратации, разрешающих визуальные мигания невыровненного состояния (#952). -**Стандарты кэширования Claude:**Нормализованы и точно строго сохраняются критические маркеры эфемерных блоков. «Эфемерные» заказы кэширования TTL для нижестоящих узлов, обеспечивающие чистое сопоставление стандартных совместимых запросов CC без удаления метрик (# 948). -**Внутренняя аутентификация псевдонимов:**Упрощены внутренние сопоставления во время выполнения, нормализующие поиск полезной нагрузки учетных данных Кодекса внутри глобальных параметров трансляции, разрешающие 401 неаутентифицированное удаление (#958).### 🛠️ Maintenance
-**Обнаружение пользовательского интерфейса:**Правильно настроенная категоризация макета, явно разделяющая логику поставщиков бесплатного уровня, улучшающая потоки сортировки UX внутри общих страниц реестра API (#950). -**Топология развертывания:**унифицированные артефакты развертывания Docker, гарантирующие, что корневой файл fly.toml соответствует ожидаемым параметрам облачного экземпляра, и встроенная встроенная поддержка правильного масштабирования автоматического развертывания. -**Инструменты разработки:**параметры времени выполнения LKGP разделены на явные утилиты кэширования абстракции уровня БД, обеспечивающие строгую изоляцию тестов для безопасных уровней кэширования ядра.---
[3.4.9] — 2026-04-03
Features & Refactoring
-**Панель автоматического комбинирования панели управления:**Полностью переработан пользовательский интерфейс /dashboard/auto-combo для полной интеграции с собственными карточками информационной панели и стандартизированными визуальными дополнениями/заголовками. Добавлены динамические визуальные индикаторы выполнения, отображающие механизмы выбора модели модели. -**Синхронизация маршрутизации настроек:**Полностью открытые расширенные цели схемы маршрутизации «приоритет» и «взвешенность» внутри резервных списков глобальных настроек.### Bug Fixes
-**Узлы локали «Память и навыки»:**разрешены пустые теги рендеринга для параметров «Память» и «Навыки» непосредственно внутри представлений глобальных настроек путем подключения всех значений settings.* внутри en.json (также отображается неявно для инструментов кросс-перевода).### Internal Integrations
- Интегрированный PR #946 — исправление: сохранить совместимость Claude Code при преобразовании ответов.
- Интегрированный PR № 944 — исправление (близнецы): сохранение мысленных сигнатур при вызовах антигравитационных инструментов.
- Интегрированный PR #943 — исправление: восстановление тела GitHub Copilot.
- Интегрированный PR #942 — исправлены маркеры кэша, совместимые с cc.
- Интегрированный PR #941 — рефакторинг (аутентификация): улучшен поиск псевдонимов NVIDIA + добавлено протоколирование ошибок LKGP.
- Интегрированный PR #939 — восстановление обработки обратного вызова локального хоста Claude OAuth.
- (Примечание: PR №934 был исключен из цикла 3.4.9, чтобы предотвратить регрессию основных конфликтов)---
[3.4.8] — 2026-04-03
Безопасность
- Полностью исправлены все обнаруженные проблемы Github Advanced Security (CodeQL) и оповещения Dependabot.
- Исправлены небезопасные уязвимости случайности путем перехода с Math.random на crypto.randomUUID(). — Защищенные команды оболочки в автоматизированных сценариях за счет внедрения строк. — Мигрированы уязвимые шаблоны анализа регулярных выражений с катастрофическим обратным отслеживанием в конвейерах чата/перевода. — Улучшены средства управления очисткой вывода внутри компонентов пользовательского интерфейса React и внедрение тегов событий, отправленных сервером (SSE).---
[3.4.7] — 2026-04-03
Возможности
-
Добавлен узел «Криптография» для мониторинга и проверки работоспособности MCP (#798). — Усиленное сопоставление разрешений маршрута модели-каталога (
/models) (#781).### Bug Fixes -
Исправлена ошибка, из-за которой при обновлении токена Claude OAuth не сохранялись контексты кэша (#937).
-
Исправлены ошибки CC-совместимого поставщика, из-за которых кэшированные модели были недоступны (#937).
-
Исправлены ошибки GitHub Executor, связанные с недопустимыми массивами контекстов (#937).
-
Исправлены сбои проверки работоспособности инструментов CLI, установленных в NPM, в Windows (#935).
-
Исправлена ошибка, из-за которой при трансляции полезной нагрузки отбрасывался действительный контент из-за недопустимых полей API (#927).
-
Исправлен сбой во время выполнения на узле 25, связанный с выполнением ключа API (#867).
-
Исправлено разрешение автономного модуля MCP (
ERR_MODULE_NOT_FOUND) черезesbuild(#936). -
Исправлено несоответствие псевдонима разрешения учетных данных маршрутизации NVIDIA NIM (#931).### Безопасность
-
Добавлена безопасная строгая защита границ ввода от необработанных внедрений удаленного выполнения
shell: true.---
[3.4.6] - 2026-04-02
✨ New Features
-**Поставщики:**зарегистрированы новые поставщики изображений, видео и аудио из списка, запрошенного сообществом (#926). -**Интерфейс панели управления:**добавлена отдельная боковая панель навигации для новых модулей «Память» и «Навыки» (#926). -**i18n:**Добавлены строки перевода и сопоставления макетов на 30 языках для пространств имен «Память» и «Навыки».### 🐛 Bug Fixes
-**Устойчивость:**предотвращено застревание прокси-выключателя в состоянии ОТКРЫТО на неопределенный срок за счет обработки прямых переходов в состояние ЗАКРЫТО внутри резервных комбинированных путей (#930). -**Трансляция протокола.**Исправлен потоковый преобразователь для очистки блоков ответов на основе ожидаемого протокола source, а не протокола target поставщика, исправляя модели Anthropics, завернутые в полезные нагрузки OpenAI, приводившие к сбою кода Claude (#929). -**Спецификации API и Gemini:**Исправлен синтаксический анализ think_signature в трансляторах openai-to-gemini и claude-to-gemini, предотвращающий ошибки HTTP 400 во всех вызовах инструментов API Gemini 3. -**Поставщики:**очищены конечные точки, несовместимые с OpenAI, препятствующие действительным восходящим соединениям (#926). -**Тренды кэша:**исправлено недопустимое несоответствие данных сопоставления свойств, приводившее к сбою диаграмм пользовательского интерфейса трендов кэша, а также извлечены избыточные виджеты метрик кэша (#926).---
[3.4.5] - 2026-04-02
✨ New Features
-**Интеграция с экосистемой CLIProxyAPI:**добавлен исполнитель cliproxyapi со встроенным кэшированием на уровне модуля и маршрутизацией прокси. Представлен комплексный сервис диспетчера версий для автоматического тестирования работоспособности, загрузки двоичных файлов с GitHub, запуска изолированных фоновых процессов и четкого управления жизненным циклом внешних инструментов CLI непосредственно через пользовательский интерфейс. Включает таблицы БД для настройки прокси-сервера, позволяющие осуществлять автоматическую перекрестную маршрутизацию внешних запросов OpenAI с помощью SSRF через локальный уровень инструментов CLI (#914, #915, #916). -**Поддержка Qoder PAT:**Интегрированная поддержка токенов личного доступа (PAT) напрямую через локальный транспорт qodercli вместо устаревших удаленных конфигураций браузера .cn (#913). -**Gemini 3.1 Pro Preview (GitHub):**добавлена поддержка канонической явной модели gemini-3.1-pro-preview, встроенная в поставщик GitHub Copilot, при этом сохраняются старые псевдонимы маршрутизации (#924).### 🐛 Bug Fixes
-**Стабильность токена GitHub Copilot:**Исправлен цикл обновления токена Copilot, в котором устаревшие токены не были глубоко объединены в БД, и удалены поля reasoning_text, которые фатально нарушали последующие преобразования блоков Anthropic для многоходовых чатов (#923). -**Глобальная матрица таймаутов:**Централизованные и параметризованные таймауты запросов явно из REQUEST_TIMEOUT_MS для предотвращения преждевременного отключения скрытых (~300 с) буферов выборки по умолчанию от долгоживущих потоковых ответов SSE из моделей тяжелого рассуждения (#918). -**Состояние быстрых туннелей Cloudflare:**Исправлена серьезная несогласованность состояния, из-за которой перезапущенные экземпляры OmniRoute ошибочно отображали разрушенные туннели как активные и по умолчанию использовали облачное туннелирование на HTTP/2 для устранения спама в журнале приема UDP (#925). -**Переработка перевода i18n (чешский и хинди):**Исправлен код на хинди с УСТАРЕВШЕГО in.json на канонический hi.json, переработаны чешские текстовые сопоставления, извлечен untranslatable-keys.json для исправления ложноположительных проверок CI/CD и создана подробная документация I18N.md для помощи переводчикам (#912). -**Восстановление поставщика токенов:**Исправлена ошибка, из-за которой Qwen терял определенные конечные точки resourceUrl после автоматического обновления токена проверки работоспособности из-за отсутствия глубоких слияний БД (#917). -**CC-совместимый UX и потоковая передача:**унифицированы действия, совместимые с CC/OpenAI/Anthropic, вокруг обработки Anthropic пользовательского интерфейса, принудительное использование CC-совместимых восходящих запросов для использования SSE, при этом по-прежнему возвращая потоковые или непотоковые ответы на основе запроса клиента, удалена поддержка конфигурации/импорта списка моделей CC в пользу явной ошибки в списке неподдерживаемых моделей и сделаны совместимые с CC доступные модели, отражающие список реестра кода OAuth Claude Code. (#921).---
[3.4.4] - 2026-04-02
🐛 Bug Fixes
-**Отчеты о токенах API ответов:**Выдает response.completed с правильными полями input_tokens/output_tokens для клиентов Codex CLI, исправляя отображение использования токенов (#909 — спасибо @christopher-s). -**Проверка SQLite WAL при завершении работы:**Сбрасывать изменения WAL в основной файл базы данных во время корректного завершения работы или перезапуска, предотвращая потерю данных при остановке контейнера Docker (#905 — спасибо @rdself). -**Сигнал плавного завершения работы:**Изменены маршруты /api/restart и /api/shutdown с process.exit(0) на process.kill(SIGTERM), гарантируя, что обработчик завершения работы запускается перед выходом. -**Льготный период остановки Docker:**Добавлен stop_grace_ period: 40s в файлы Docker Compose и --stop-timeout 40 в примеры запуска Docker.### 🛠️ Maintenance
- Закрыты 5 решенных/не являющихся ошибками проблем (#872, #814, #816, #890, #877).
- Устранено 6 проблем с запросами информации о потребностях (№ 892, № 887, № 886, № 865, № 895, № 870). — Ответ на проблему отслеживания обнаружения CLI (# 863) с инструкциями участников.---
[3.4.3] - 2026-04-02
✨ New Features
-**Память и навыки Антигравитации:**Завершено удаленное внедрение памяти и навыков для провайдера Антигравитации на уровне прокси-сети. -**Совместимость кода Claude:**создан встроенный скрытый мост совместимости для кода Claude, обеспечивающий чистую передачу инструментов и форматирование. -**Web Search MCP:**Добавлен инструмент omniroute_web_search с областью execute:search. -**Компоненты кэша:**реализованы компоненты динамического кэша, использующие TDD. -Интерфейс и настройка: добавлена поддержка пользовательских значков, вкладки внешнего вида, проводная белая метка на боковую панель, а также добавлены инструкции по виндсерфингу на всех 33 языках. -**Хранение журналов.**Унифицированное хранение журнала запросов и артефактов. -**Усовершенствования модели:**добавлен явный параметр contextLength для всех моделей opencode-zen. -**i18n и переводы:**встроены переводы на 33 языка, включая проверки CI-заполнителей и обновления документации на китайском языке (#873, #869).### 🐛 Bug Fixes
-**Сопоставление Qwen OAuth:**заменена зависимость от id_token до access_token и включено динамическое внедрение конечной точки API resource_url для правильной региональной маршрутизации (#900). -**Механизм синхронизации моделей:**в процедурах синхронизации getCustomModels() сохранен строгий внутренний идентификатор поставщика вместо формата псевдонима канала пользовательского интерфейса, что предотвращает сбои при вставке каталога SQLite (#903). -**Код и Кодекс Клода:**Стандартизированы непоточные пустые ответы на (пустой ответ) в формате Anthropic для предотвращения сбоев прокси-сервера CLI (#866). -**Маршрутизация, совместимая с CC:**Устранены повторяющиеся конфликты конечных точек /v1во время объединения путей для общих шлюзов Claude Code (#904). -**Антигравитационные панели:**заблокирована ложная регистрация моделей с неограниченными квотами как исчерпанных состояний ограничения «100% использования» в пользовательском интерфейсе использования поставщика (#857). -**Передача изображения Клода:**Исправлена ошибка, из-за которой в моделях Клода отсутствовали сквозные блоки изображений (#898). -**Маршрутизация Gemini CLI:**решены проблемы блокировки авторизации 403 и накопления контента путем обновления идентификатора проекта с помощьюloadCodeAssist(#868). -**Антигравитационная стабильность:**исправлены списки доступа к моделям, усилена блокировка 404, исправлены 429 каскадов, блокирующих стандартные соединения, а также ограничены выходные токеныgemini-3.1-pro(#885). -**Каденция синхронизации поставщика:**исправлена частота синхронизации ограничений поставщика через внутренний планировщик (#888). -**Оптимизация панели управления:**устранено зависание пользовательского интерфейса/dashboard/limitsпри обработке более 70 учетных записей посредством распараллеливания фрагментов (#784). -**Усиление SSRF:**усилена строгая фильтрация диапазона IP-адресов SSRF и заблокирован интерфейс обратной связи::1. -**Типы MIME:**стандартизован тип mime_type для Snake_case, чтобы соответствовать спецификациям API Gemini. -**Стабилизация CI:**исправлены сбои в аналитике и настройках селекторов Playwright и утверждений запросов, поэтому запуск GitHub Actions E2E надежно проходит через локализованные пользовательские интерфейсы и элементы управления на основе переключателей. -**Детерминированные тесты.**Из тестов использования Copilot удалены чувствительные к дате настройки квот, а тесты идемпотентности/каталога моделей приведены в соответствие с объединенным поведением среды выполнения. -**Усиление типа MCP:**удалены явные любыерегрессии с нулевым бюджетом из пути регистрации инструмента сервера MCP. -**Механизм синхронизации моделей:**Обход деструктивных переопределенийreplace`, когда автосинхронизация поставщика дает пустой список моделей, сохраняя стабильность для динамических каталогов (#899).### 🛠️ Maintenance
-**Журналирование конвейера:**усовершенствованы артефакты ведения журнала конвейера и установлены ограничения срока хранения (#880). -**AGENTS.md Капитальный ремонт:**Сокращён из 297→153 строк. Добавлены рекомендации по сборке/тестированию/стилю, рабочие процессы кода (Prettier, TypeScript, ESLint) и урезаны подробные таблицы (#882). -**Интеграция ветвей выпуска:**объединены активные ветки функций в «release/v3.4.2» поверх текущей «main» и проверена ветка с помощью lint, unit, покрытия, сборки и запусков E2E в режиме CI. -**Тестирование.**Добавлена конфигурация vitest для тестирования компонентов и спецификации Playwright для переключения настроек. -**Обновления документации:**расширены корневые файлы чтения, переведены документы на китайский язык и удалены устаревшие файлы.## [3.4.1] - 2026-03-31
[!ВНИМАНИЕ] СЕРЬЕЗНОЕ ИЗМЕНЕНИЕ: были переработаны переменные среды регистрации, хранения и регистрации запросов. При первом запуске после обновления OmniRoute архивирует устаревшие журналы запросов из
DATA_DIR/logs/, устаревшихDATA_DIR/call_logs/иDATA_DIR/log.txtвDATA_DIR/log_archives/*.zip, затем удаляет устаревший макет и переключается на новый унифицированный формат артефактов вDATA_DIR/call_logs/.### ✨ New Features
-**Утилита миграции .ENV:**включен scripts/migrate-env.mjs для плавного переноса конфигураций <v3.3 в строгие ограничения проверки безопасности v3.4.x (FASE-01), исправление сбоев при запуске, вызванных короткими экземплярами JWT_SECRET. -**Оптимизация кэша Kiro AI:**реализована детерминированная генерация conversationId (uuidv5) для правильного кэширования подсказок идентификатора AWS Builder между вызовами (#814). -**Восстановление и консолидация пользовательского интерфейса панели мониторинга:**решена логика боковой панели без раздела «Отладка», а также удалены предупреждения о маршрутизации Nextjs путем явного перемещения автономных страниц /dashboard/mcp и /dashboard/a2a во встроенные компоненты пользовательского интерфейса Endpoint Proxy. -**Унифицированные артефакты журнала запросов:**В журнале запросов теперь хранится одна строка индекса SQLite плюс один артефакт JSON для каждого запроса в каталоге DATA_DIR/call_logs/, при этом дополнительный захват конвейера встроен в тот же файл. -**Язык:**Улучшен китайский перевод (#855). -**Модели Opencode-Zen:**в реестр opencode-zen добавлены 4 бесплатные модели (#854). -**Тесты.**Добавлены модульные и E2E-тесты для переключения настроек и исправлены ошибки (#850).### 🐛 Bug Fixes
-**429 Анализ квот:**Анализируется длительное время сброса квоты из тел ошибок, чтобы учитывать правильные отсрочки и предотвращать блокировку учетных записей с ограничением по скорости (# 859). -**Быстрое кэширование:**сохранены клиентские заголовки cache_control для всех поставщиков протокола Claude (таких как Minimax, GLM и Bailian), правильное распознавание поддержки кэширования (#856). -**Журналы синхронизации моделей:**уменьшено количество спама в журналах за счет записи sync-models только тогда, когда канал действительно изменяет список (#853). -**Квота поставщика и анализ токенов:**Переключены ограничения AntiGravity для использования retriveUserQuota, изначально и правильно отображающего полезные данные обновления токена Claude в формах с URL-кодировкой (#862). -**Стабильность, ограничивающая скорость:**универсализирована архитектура синтаксического анализа 429 Retry-After, чтобы ограничить время восстановления, вызванное поставщиком, максимум 24 часами (# 862). -**Визуализация лимита панели мониторинга:**Переработано сопоставление квот /dashboard/limits для немедленного рендеринга внутри фрагментов, что устраняет серьезную задержку зависания пользовательского интерфейса на учетных записях, превышающих 70 активных подключений (#784). -**Авторизация OAuth QWEN:**OIDC id_token отображается как основной токен носителя API для запросов Dashscope, что немедленно устраняет несанкционированные ошибки 401 после подключения учетных записей или обновления токенов (#864). -**Стабильность API ZAI:**Усиленный компилятор событий, отправленных сервером, позволяет плавно переходить к пустым строкам, когда поставщики DeepSeek передают математически нулевой контент на этапах рассуждения (#871). -**Код/переводы Кодекса Клода:**защищены непотоковое преобразование полезной нагрузки от пустых ответов от вышестоящих инструментов Кодекса, что позволяет избежать катастрофических ошибок типов (#866). -**Рендеринг NVIDIA NIM:**Условно удалены идентичные префиксы поставщиков, динамически передаваемые аудиомоделями, что исключает повторяющиеся структуры тегов nim/nim, выбрасывающие 404 на Media Playground (#872).### ⚠️ Breaking Changes
-**Макет журнала запросов:**Удалены старые многофайловые сеансы журнала запросов DATA_DIR/logs/ и сводный файл DATA_DIR/log.txt. Новые запросы записываются как отдельные артефакты JSON в DATA_DIR/call_logs/YYYY-MM-DD/. -**Переменные среды ведения журнала:**Заменены LOG_*, ENABLE_REQUEST_LOGS, CALL_LOGS_MAX, CALL_LOG_PAYLOAD_MODE и PROXY_LOG_MAX_ENTRIES на новые APP_LOG_* и CALL_LOG_RETENTION_DAYS. -**Настройка переключения конвейера:**устаревшая настройка detailed_logs_enabled заменена на call_log_pipeline_enabled. Новые сведения о конвейере внедряются в артефакт запроса, а не сохраняются в виде отдельных записей request_detail_logs.### 🛠️ Maintenance
-**Резервное копирование устаревшего журнала запросов:**теперь обновляется архив старых data/logs/, устаревших data/call_logs/ и data/log.txt в DATA_DIR/log_archives/*.zip перед удалением устаревшей структуры. -**Сохранение потокового использования:**Потоковые запросы теперь по завершении записывают одну строку usage_history вместо выдачи дубликата текущей строки использования с пустыми метаданными о состоянии. -**Последующая очистка журналов:**Журналы конвейера больше не фиксируют SOURCE REQUEST, записи артефактов запросов теперь учитывают CALL_LOG_MAX_ENTRIES, а архивы журналов приложений теперь учитывают APP_LOG_MAX_FILES.---
[3.4.0] - 2026-03-31
Возможности
-**Аналитика использования подписки:**добавлено отслеживание временных рядов моментальных снимков квоты, вкладки «Использование поставщика» и «Комбо-здоровье» с визуализацией повторных диаграмм и соответствующими конечными точками API (#847). -**Управление резервным копированием SQLite:**Новый флаг env OMNIROUTE_DISABLE_AUTO_BACKUP для отключения автоматического резервного копирования SQLite (#846). -**Обновление реестра моделей:**добавлен gpt-5.4-mini в массив моделей поставщика Кодекса (#756). -**Отслеживание лимитов поставщиков:**Отслеживание и отображение времени последнего обновления ограничений тарифов поставщика для каждой учетной записи (#843).### 🐛 Bug Fixes
-**Маршрутизация аутентификации Qwen:**завершение Qwen OAuth перенаправлено из API DashScope в API веб-вывода (chat.qwen.ai), устранены ошибки авторизации (#844, #807, #832). -**Цикл автоматической повторной попытки Qwen:**Добавлена целевая обработка отсрочки превышения квоты 429 внутри chatCore, защищающая пакетные запросы. -**Резервный вариант Codex OAuth:**Блокировка всплывающих окон в современном браузере больше не задерживает пользователя; он автоматически возвращается к вводу URL вручную (#808). -**Обновление токена Claude:**строгие границы Anthropic application/json теперь соблюдаются во время генерации токена вместо закодированных URL-адресов (# 836). -**Схема сообщений Кодекса:**удалены пуристские сообщения из собственных сквозных запросов, чтобы избежать структурных отклонений от восходящего потока ChatGPT (#806). -**Ограничение размера обнаружения CLI:**Безопасно увеличена верхняя граница двоичного сканирования Node со 100 МБ до 350 МБ, что позволяет корректно определять тяжелые автономные инструменты, такие как Claude Code (229 МБ) и OpenCode (153 МБ), средой выполнения VPS (# 809). -**Среда выполнения CLI:**восстановлена способность конфигураций CLI учитывать пути переопределения пользователя (CLI_{PROVIDER}_BIN) в обход строгих правил обнаружения с привязкой к пути. -**Конфликты заголовков NVIDIA:**Удалены свойства prompt_cache_key из восходящих заголовков при вызове неантропных провайдеров (#848). -**Быстрое переключение уровня Кодекса:**восстановлен контраст переключения уровня обслуживания Кодекса в облегченном режиме (#842). -**Инфраструктура тестирования:**Обновлен тест t28-model-catalog-updates, который неправильно ожидал устаревшую конечную точку DashScope для собственного реестра Qwen.---
[3.3.9] - 2026-03-31
🐛 Bug Fixes
-**Ротация пользовательских поставщиков:**интегрирован getRotatingApiKey внутри DefaultExecutor, обеспечивающий правильное срабатывание ротации extraApiKeys для пользовательских и совместимых вышестоящих поставщиков (#815).---
[3.3.8] - 2026-03-30
Возможности
-**Фильтрация API моделей:**Конечная точка /v1/models теперь динамически фильтрует свой список на основе разрешений, привязанных к Authorization: Bearer <token>, когда включен ограниченный доступ (#781). -**Интеграция Qoder:**Собственная интеграция для Qoder AI, заменяющая устаревшие сопоставления платформы iFlow (#660). -**Отслеживание кэша подсказок.**Добавлены возможности отслеживания и визуализация интерфейса (карта статистики) для семантического и подсказок кеширования в пользовательском интерфейсе панели мониторинга.### 🐛 Bug Fixes
-**Размер панели кэша:**Улучшены размеры макета пользовательского интерфейса и контекстные заголовки для страниц расширенного кэша (#835). -**Видимость боковой панели отладки.**Исправлена проблема, из-за которой переключатель отладки неправильно отображал/скрывал сведения об отладке боковой панели (#834). -**Префикс модели Gemini:**Изменено резервное пространство имен для правильной маршрутизации через gemini-cli/ вместо gc/ для соблюдения спецификаций исходного кода (#831). -**OpenRouter Sync:**Улучшена синхронизация совместимости для автоматического правильного получения каталога доступных моделей из OpenRouter (#830). -**Сопоставление потоковой полезной нагрузки.**Повторная сериализация логических полей естественным образом разрешает конфликты псевдонимов при потоковой передаче вывода на периферийные устройства.---
[3.3.7] - 2026-03-30
🐛 Bug Fixes
-**Конфигурация OpenCode:**Сгенерированный opencode.json реструктурирован для использования схемы на основе записей @ai-sdk/openai-совместимой с options и models в виде карт объектов вместо плоских массивов, исправлены ошибки проверки конфигурации (#816). -**i18n Отсутствующие ключи:**добавлен отсутствующий ключ перевода cloudflaredUrlNotice во все 30 языковых файлов, чтобы предотвратить ошибки консоли MISSING_MESSAGE на странице конечной точки (#823).---
[3.3.6] - 2026-03-30
🐛 Bug Fixes
-**Учет токенов:**токены кэша подсказок безопасно включены в исторические расчеты входных данных использования для правильного вычета квоты (PR № 822). -**Комбо-тестовые зонды:**исправлены ложноотрицательные результаты логики комбинированного тестирования за счет разрешения синтаксического анализа ответов, содержащих только рассуждения, и включено массовое распараллеливание с помощью Promise.all (PR № 828). -**Быстрые туннели Docker.**В базовый контейнер среды выполнения встроены необходимые сертификаты CA для устранения сбоев при запуске Cloudflared TLS, а также обнаружены сетевые ошибки стандартного вывода, заменяющие общие коды выхода (PR № 829).---
[3.3.5] - 2026-03-30
✨ New Features
-**Отслеживание квот Gemini:**добавлено отслеживание квот Gemini CLI в режиме реального времени с помощью API-интерфейса «retievUserQuota» (PR № 825). -**Панель управления кэшем.**Улучшена панель управления кэшем, теперь на ней отображаются быстрые показатели кэша, 24-часовые тенденции и предполагаемая экономия средств (PR № 824).### 🐛 Bug Fixes
-**Взаимодействие с пользователем:**удалены инвазивные автоматически открывающиеся модальные циклы OAuth на страницах с подробными сведениями о бесплодных поставщиках (PR № 820). -Обновления зависимостей: изменены и заблокированы зависимости для деревьев разработки и производства, включая Next.js 16.2.1, Recharts и TailwindCSS 4.2.2 (PR № 826, № 827).---
[3.3.4] - 2026-03-30
✨ New Features
-**A2A Workflows:**Added deterministic FSM orchestrator for multi-step agent workflows. -**Мягкая деградация.**Добавлена новая многоуровневая резервная среда для сохранения основных функций во время частичных сбоев системы. -**Аудит конфигурации.**Добавлен журнал аудита с обнаружением различий для отслеживания изменений и включения отката конфигурации. -**Состояние поставщика.**Добавлено отслеживание истечения срока действия поставщика с упреждающими оповещениями пользовательского интерфейса об истечении срока действия ключей API. -**Адаптивная маршрутизация.**Добавлен адаптивный детектор объема и сложности для динамического переопределения стратегий маршрутизации в зависимости от нагрузки. -**Разнообразие поставщиков.**Реализована оценка разнообразия поставщиков с помощью энтропии Шеннона для улучшения распределения нагрузки. -**Автоматическое отключение границ:**На панель устойчивости добавлен переключатель автоматического отключения заблокированных учетных записей.### 🐛 Bug Fixes
-**Совместимость Кодекса и Claude:**исправлены резервные варианты пользовательского интерфейса, исправлены проблемы с непотоковое интеграцией Кодекса, а также решено обнаружение среды выполнения CLI в Windows. -**Автоматизация выпуска:**расширены разрешения, необходимые для сборки приложения Electron в действиях GitHub. -**Среда выполнения Cloudflare:**исправлены правильные коды завершения изоляции среды выполнения для компонентов туннеля Cloudflare.### 🧪 Tests
-Обновления набора тестов: расширенный охват тестирования для детекторов объема, разнообразия поставщиков, аудита конфигурации и FSM.---
[3.3.3] - 2026-03-29
🐛 Bug Fixes
-**Надежность CI/CD:**Исправлены действия GitHub до стабильных версий зависимостей (actions/checkout@v4, actions/upload-artifact@v4) для предотвращения необъявленного устаревания среды сборки. -**Запасные изображения:**Заменены произвольные резервные цепочки в ProviderIcon.tsx на явную проверку активов, чтобы предотвратить загрузку пользовательским интерфейсом компонентов <Image> для несуществующих файлов, устраняя ошибки 404 в журналах консоли информационной панели (#745). -**Admin Updater:**Динамическое обнаружение источника установки для средства обновления панели управления. Безопасно отключает кнопку «Обновить сейчас», когда OmniRoute собирается локально, а не через npm, запрашивая команду «git pull» (#743). -**Ошибка обновления ERESOLVE:**Внедрены переопределения package.json для react/react-dom и включен --legacy-peer-deps во внутренних сценариях автоматического обновления для разрешения конфликтов дерева зависимостей с @lobehub/ui.---
[3.3.2] - 2026-03-29
✨ New Features
-**Туннели Cloudflare:**интеграция Cloudflare Quick Tunnel с элементами управления информационной панели (PR №772). -**Диагностика:**Обход семантического кэша для комбинированных живых тестов (PR №773).### 🐛 Bug Fixes
-**Стабильность потоковой передачи.**Примените FETCH_TIMEOUT_MS к начальному вызову fetch() потоковых запросов, чтобы предотвратить 300-секундный тайм-аут TCP Node.js, вызывающий сбои задач без вывода сообщений (#769). -**i18n:**Добавьте недостающие записи windsurf и copilot в toolDescriptions во всех 33 файлах локали (#748). -**Аудит кода GLM:**Полный аудит поставщика с устранением уязвимостей ReDoS, изменением размера контекстного окна (128 КБ/16 КБ) и синхронизацией реестра моделей (PR № 778).---
[3.3.1] - 2026-03-29
🐛 Bug Fixes
-**Кодекс OpenAI:**Исправление резервной обработки для элементов type: "text", несущих нулевые или пустые наборы данных, что приводило к отклонению 400 (#742). -**Opencode:**Обновите выравнивание схемы до единственного поставщика, чтобы оно соответствовало официальной спецификации (#774). -**Gemini CLI:**Вводит недостающие заголовки квот конечного пользователя, предотвращая блокировку авторизации 403 (#775). -**Восстановление базы данных:**Рефакторинг многочастного импорта полезной нагрузки в необработанные двоичные буферизованные массивы для обхода ограничений максимального количества тела обратного прокси-сервера (#770).---
[3.3.0] - 2026-03-29
✨ Enhancements & Refactoring
-Стабилизация выпуска — завершен выпуск версии 3.2.9 (комбинированная диагностика, контроль качества, исправление инструмента Gemini) и создан отсутствующий тег git. Объединили все поэтапные изменения в единый атомарный коммит выпуска.### 🐛 Bug Fixes
-Тест автоматического обновления— исправлено утверждение теста buildDockerComposeUpdateScript для соответствия нерасширенным ссылкам на переменные оболочки ($TARGET_TAG, ${TARGET_TAG#v}) в сгенерированном сценарии развертывания, что соответствует рефакторингу шаблона из версии 3.2.8. -Тест автоматического выключателя— усилен combo-circuit-breaker.test.mjs за счёт введения maxRetries: 0, чтобы предотвратить инфляцию повторных попыток от искажения утверждений о подсчете неудач во время переходов между состояниями выключателя.---
[3.2.9] - 2026-03-29
✨ Enhancements & Refactoring
-Комбо-диагностика— введен флаг обхода живого теста («forceLiveComboTest»), позволяющий администраторам выполнять реальные проверки работоспособности восходящего потока, которые обходят все локальные механизмы автоматического выключателя и состояния охлаждения, обеспечивая точную диагностику во время развертывания отключений (PR № 759). -Quality Gates— добавлена автоматическая проверка качества ответа для комбинаций и официально интегрирована поддержка модели claude-4.6 в основные схемы маршрутизации (PR № 762).### 🐛 Bug Fixes
-Проверка определения инструмента— исправлена интеграция Gemini API путем нормализации типов перечислений внутри определений инструментов, что предотвращает ошибки параметров восходящего потока HTTP 400 (PR № 760).---
[3.2.8] - 2026-03-29
✨ Enhancements & Refactoring
-Пользовательский интерфейс автоматического обновления Docker— интегрирован отдельный процесс фонового обновления для развертываний Docker Compose. Пользовательский интерфейс Dashboard теперь плавно отслеживает события жизненного цикла обновлений, сочетая ответы JSON REST с наложениями прогресса потоковой передачи SSE, что обеспечивает надежную надежность в разных средах. -Аналитика кэша— исправлено сопоставление визуализации с нулевыми метриками путем переноса журналов телеметрии семантического кэша непосредственно в модуль централизованного отслеживания SQLite.### 🐛 Bug Fixes
-Логика аутентификации— исправлена ошибка, из-за которой сохранение настроек информационной панели или добавление моделей завершалось с ошибкой 401 Unauthorized, когда requireLogin был отключен. Конечные точки API теперь правильно оценивают переключатель глобальной аутентификации. Устранено глобальное перенаправление путем повторной активации src/middleware.ts. -Обнаружение инструментов CLI (Windows)— предотвращены фатальные исключения инициализации во время обнаружения среды CLI за счет правильного перехвата ошибок ENOENT cross-spawn. Добавляет явные пути обнаружения для \AppData\Local\droid\droid.exe. -Встроенная передача Кодекса— нормализованные параметры трансляции модели, предотвращающие искажение контекста в режиме сквозной передачи прокси-сервера, явно применяющие общие ограничения store: false для всех запросов, исходящих из Кодекса. -Отчеты о токенах SSE— нормализовано обнаружение фрагмента вызова инструмента поставщика finish_reason, исправлено 0% аналитики использования для потоковых ответов, в которой отсутствуют строгие индикаторы <DONE>. -Теги DeepSeek — реализовано явное сопоставление извлечения <think> внутри responsesHandler.ts, гарантирующее, что потоки рассуждений DeepSeek сопоставляются эквивалентно родным антропным структурам <think>.---
[3.2.7] - 2026-03-29
Fixed
-Бесшовное обновление пользовательского интерфейса: функция «Обновить сейчас» на информационной панели теперь обеспечивает оперативную и прозрачную обратную связь с помощью событий, отправленных сервером (SSE). Он выполняет установку пакетов, перестраивает собственные модули (лучше-sqlite3), а PM2 надежно перезапускается, отображая загрузчики в реальном времени, а не молча зависая.---
[3.2.6] — 2026-03-29
✨ Enhancements & Refactoring
-API Key Reveal (#740)— в диспетчере API добавлен поток копирования ключей API с ограниченной областью действия, защищенный переменной среды ALLOW_API_KEY_REVEAL. -Элементы управления видимостью боковой панели (#739)— администраторы теперь могут скрыть любую навигационную ссылку на боковой панели через настройки внешнего вида, чтобы уменьшить визуальный беспорядок. -Строгое комбинированное тестирование (#735)— усилена конечная точка проверки работоспособности комбо, чтобы требовать от моделей живых текстовых ответов, а не просто мягких сигналов о доступности. -Потоковые подробные журналы (#734)— переключено подробное ведение журнала запросов для потоков SSE для восстановления окончательной полезной нагрузки, что позволяет сэкономить огромные объемы базы данных SQLite и значительно очистить пользовательский интерфейс.### 🐛 Bug Fixes
-OpenCode Go MiniMax Auth (#733)— исправлена логика заголовка аутентификации для моделей minimax в OpenCode Go, чтобы использовать x-api-key вместо стандартных токенов носителя в протоколе /messages.---
[3.2.5] — 2026-03-29
✨ Enhancements & Refactoring
-Поддержка развертывания Void Linux (#732)— интегрированный шаблон упаковки xbps-src и инструкции для компиляции и установки OmniRoute в собственном коде с привязками better-sqlite3 через цель кросс-компиляции.## [3.2.4] — 2026-03-29
✨ Enhancements & Refactoring
-Миграция Qoder AI (#660)— полностью перенесен устаревший основной поставщик iFlow на Qoder AI, сохранив стабильные возможности маршрутизации API.### 🐛 Bug Fixes
-Неверный аргумент полезной нагрузки HTTP 400 Gemini Tools (#731)— Предотвращено внедрение массива thinkSignature внутри стандартных последовательностей functionCall Gemini, блокирующих потоки агентской маршрутизации.---
[3.2.3] — 2026-03-29
✨ Enhancements & Refactoring
-Интерфейс квоты лимитов поставщика (#728)— нормализована логика ограничения квот и маркировка данных внутри интерфейса лимитов.### 🐛 Bug Fixes
-Основные схемы маршрутизации и утечки— расширенная comboStrategySchema для встроенной поддержки стратегий fill-first и p2c, чтобы разблокировать сложное комбинированное редактирование. -Извлечение тегов Thinking (CLI)— Реструктурированное средство очистки ответов токенов CLI RegEx, фиксирующее структуры аргументации модели внутри потоков, избегая некорректного извлечения <thinking>, нарушающего формат вывода текста ответа. -Строгое соблюдение формата— усиленное выполнение очистки конвейера, что позволяет универсально применять его к целям режима трансляции.---
[3.2.2] — 2026-03-29
✨ New Features
-Четырехэтапный конвейер журнала запросов (#705)— обновлено сохранение журнала для сохранения комплексных полезных данных на четырех отдельных этапах конвейера: запрос клиента, переведенный запрос поставщика, ответ поставщика и переведенный ответ клиента. Представлен streamPayloadCollector для надежного усечения потока SSE и сериализации полезной нагрузки.### 🐛 Bug Fixes
-Исправления мобильного пользовательского интерфейса (#659)— Предотвращено нарушение макета компонентов таблицы на информационной панели в узких областях просмотра путем добавления правильной горизонтальной прокрутки и ограничения переполнения в DashboardLayout. -Исправления кэша подсказок Claude (#708)— блоки cache_control в резервных циклах Claude-to-Claude надежно сохраняются и безопасно передаются обратно в модели Anthropic. -Определения инструмента Gemini (#725)— исправлены ошибки перевода схемы при объявлении простых типов параметров object для вызова функции Gemini.## [3.2.1] — 2026-03-29
✨ New Features
-Global Fallback Provider (#689)— When all combo models are exhausted (502/503), OmniRoute now attempts a configurable global fallback model before returning the error. Установите «globalFallbackModel» в настройках, чтобы включить.### 🐛 Bug Fixes
-Исправление №721— Исправлен обход закрепления контекста во время ответов на вызов инструмента. Непотоковая маркировка использовала неверный путь JSON (json.messages → json.choices[0].message). Потоковая инъекция теперь срабатывает на фрагментах finish_reason для потоков, предназначенных только для вызова инструментов. injectModelTag() теперь добавляет синтетические сообщения PIN-кода для нестрочного содержимого. -Исправление №709— Подтверждено, что оно уже исправлено (v3.1.9) — system-info.mjs создает каталоги рекурсивно. Закрыто. -Исправление №707— Подтверждено, что уже исправлено (v3.1.9) — очистка пустого имени инструмента в chatCore.ts. Закрыто.### 🧪 Tests
- Добавлено 6 модульных тестов для закрепления контекста с ответами на вызовы инструментов (нулевой контент, содержимое массива, туда и обратно, повторное внедрение).## [3.2.0] — 2026-03-28
✨ New Features
-Пользовательский интерфейс управления кэшем— добавлена специальная панель семантического кеширования в `/dashboard/cache` с целевой инвалидацией API и поддержкой i18n на 31 языке (PR №701 от @oyi77). -Отслеживание квот GLM— добавлено отслеживание использования и квот сеансов в режиме реального времени для поставщика кодирования GLM (Z.AI) (PR № 698 от @christopher-s). -Подробные полезные данные журнала— полный четырехэтапный сбор полезных данных конвейера (исходный, переведенный, ответ поставщика, потоковые изменения) непосредственно в пользовательский интерфейс (PR № 705 от @rdself).### 🐛 Bug Fixes
-Исправление №708— Предотвращено кровотечение токенов для пользователей Claude Code, маршрутизирующихся через OmniRoute, за счет правильного сохранения собственных заголовков `cache_control` во время прохождения между Claude-Claude (PR №708 от @tombii). -Исправление №719— Установите внутренние границы аутентификации для `ModelSyncScheduler`, чтобы предотвратить сбои демона без аутентификации при запуске (PR №719 от @rdself). -Исправление №718— Переработано отображение значков в пользовательском интерфейсе ограничений поставщика, предотвращающее перекрытие неправильных границ квот (PR №718 от @rdself). -Исправление №704— Исправлена ошибка комбо-резервов, нарушавшаяся при ошибках политики контента HTTP 400, предотвращающая неработающую маршрутизацию при ротации модели (PR №704 от @rdself).### 🔒 Security & Dependencies
- Путь к регулярному выражению изменен на 8.4.0, устраняя уязвимости зависимых роботов (PR № 715).## [3.1.10] — 2026-03-28
🐛 Bug Fixes
-Исправление №706— Исправлен резервный рендеринг значков, вызванный переопределением font-sans Tailwind V4 путем применения !important к .material-symbols-outlined. -Исправление №703— исправлены неработающие потоки GitHub Copilot, включив преобразование формата responses в openai для любых пользовательских моделей, использующих apiFormat: "responses". -Исправление № 702— Фиксированное отслеживание использования заменено на точные расчеты цен в базе данных как для потоковых, так и для непотоковых ответов. -Исправление №716— Очищено состояние трансляции вызова инструментов Claude, правильно анализируются потоковые аргументы и предотвращается повторение поля id фрагментами OpenAI tool_calls.## [3.1.9] — 2026-03-28
✨ New Features
-Приведение схемы— автоматическое приведение числовых ограничений схемы JSON в строковой кодировке (например, "minimum": "1") к правильным типам, предотвращая 400 ошибок от Cursor, Cline и других клиентов, отправляющих неверные схемы инструментов. -Очистка описания инструмента— убедитесь, что описания инструментов всегда представляют собой строки; преобразует нулевые, неопределенные или числовые описания в пустые строки перед отправкой поставщикам. -Кнопка «Очистить все модели»— добавлены переводы i18n для действия провайдера «Очистить все модели» на все 30 языков. -Экспорт аутентификации Codex— добавлен экспорт Codex auth.json и кнопки Apply-local для плавной интеграции с CLI. -Примечания к Windsurf BYOK— в карточку инструмента Windsurf CLI добавлены официальные предупреждения об ограничениях, документирующие ограничения BYOK.### 🐛 Bug Fixes
-Исправление №709— system-info.mjs больше не аварийно завершает работу, если выходной каталог не существует (добавлен mkdirSync с рекурсивным флагом). -Исправление №710— синглтон A2A TaskManager теперь использует globalThis для предотвращения утечки состояния при перекомпиляции маршрутов API Next.js в режиме разработки. Набор тестов E2E обновлен для корректной обработки ошибки 401. -Исправление №711— Добавлено принудительное ограничение max*tokens для восходящих запросов, зависящее от поставщика. -Исправление №605/#592— Удаление префикса proxy*из названий инструментов в непотоковых ответах Клода; исправлен URL-адрес проверки LongCat.
-Максимальное ограничение журналов вызовов— обновленgetMaxCallLogs() с уровнем кэширования, поддержкой env var (CALL_LOGS_MAX) и интеграцией настроек БД.### 🧪 Tests
- Набор тестов расширен с 964 → 1027 тестов (63 новых теста)
- Добавлен
schema-coercion.test.mjs— 9 тестов для приведения числовых полей и очистки описаний инструментов. - Добавлен
t40-opencode-cli-tools-integration.test.mjs— интеграционные тесты OpenCode/Windsurf CLI. - Расширенная ветка функционального тестирования с комплексными инструментами покрытия.### 📁 New Files
| Файл | Цель | |
|---|---|---|
open-sse/translator/helpers/schemaCoercion.ts |
Утилиты очистки схемы и описания инструментов | |
tests/unit/schema-coercion.test.mjs |
Модульные тесты для приведения схемы | |
tests/unit/t40-opencode-cli-tools-integration.test.mjs |
Интеграционные тесты инструментов CLI | |
COVERAGE_PLAN.md |
Документ планирования тестового покрытия | ### 🐛 Bug Fixes |
-Claude Prompt Caching Passthrough— исправлено удаление маркеров кэшаcontrol в режиме сквозной передачи Claude (Claude → OmniRoute → Claude), из-за чего пользователи Claude Code истощали свою квоту Anthropic API в 5–10 раз быстрее, чем прямые подключения. OmniRoute теперь сохраняет маркеры кэшаконтроля клиента, когда sourceFormat и targetFormat оба являются Claude, гарантируя правильную работу кэширования запросов и значительно сокращая потребление токенов.## [3.1.8] - 2026-03-27
🐛 Bug Fixes & Features
-**Ядро платформы:**реализована глобальная обработка состояния для скрытых моделей и комбинаций, предотвращающая их загромождение каталога или утечку в подключенные агенты MCP (#681). -**Стабильность:**Исправлены сбои потоковой передачи, связанные с сбоем интеграции встроенного провайдера Antigravity из-за необработанных массивов неопределенного состояния (#684). -**Синхронизация локализации:**развернут полностью переработанный синхронизатор i18n, обнаруживающий отсутствующие вложенные свойства JSON и последовательно подбирающий 30 локалей (#685).## [3.1.7] - 27.03.2026.### 🐛 Bug Fixes
-**Стабильность потоковой передачи:**Исправлена ошибка, из-за которой hasValuableContent возвращал unопределённый для пустых фрагментов в потоках SSE (#676). -**Вызов инструмента:**Исправлена проблема в sseParser.ts, из-за которой в непотоковых ответах Claude с несколькими вызовами инструментов удалялся id последующих вызовов инструментов из-за неправильной дедупликации на основе индекса (#671).---
[3.1.6] — 2026-03-27
🐛 Bug Fixes
-Восстановление имени собственного инструмента Claude— имена инструментов, такие как TodoWrite, больше не имеют префикса proxy_ в ответах сквозной передачи Claude (как потоковых, так и непотоковых). Включает покрытие модульных тестов (PR №663 от @coobabm). -Очистка псевдонимов всех моделей— кнопка «Очистить все модели» теперь также удаляет связанные псевдонимы моделей, предотвращая появление призраков в пользовательском интерфейсе (PR #664 от @rdself).---
[3.1.5] — 2026-03-27
🐛 Bug Fixes
-Автоматическое затухание отката— учетные записи с ограничением по скорости теперь автоматически восстанавливаются по истечении окна восстановления, исправляя тупиковую ситуацию, когда высокий уровень backoffLevel навсегда лишает приоритет учетных записей (PR № 657 от @brendandebeasi).### 🌍 i18n
-Переработка китайского перевода— Комплексная переработка zh-CN.json с повышенной точностью (PR №658 от @only4copilot).---
[3.1.4] — 2026-03-27
🐛 Bug Fixes
-Исправление переопределения потоковой передачи— явный stream: true в теле запроса теперь имеет приоритет над заголовком Accept: application/json. Клиенты, отправляющие оба, будут правильно получать ответы потоковой передачи SSE (#656).### 🌍 i18n
-Улучшения чешской строки— Уточнена терминология в cs.json (PR №655 от @zen0bit).---
[3.1.3] — 2026-03-26
🌍 i18n & Community
-~70 недостающих ключей переводадобавлено в en.json и 12 языков (PR №652 от @zen0bit) -Обновлена чешская документация— руководства CLI-TOOLS, API_REFERENCE, VM_DEPLOYMENT (PR № 652). -Скрипты проверки перевода— check_translations.py и validate_translation.py для CI/QA (PR №651 от @zen0bit)---
[3.1.2] — 2026-03-26
🐛 Bug Fixes
-Критично: регрессия вызова инструментов— исправлены ошибки proxy_Bash путем отключения префикса имени инструмента proxy_ в пути передачи Claude. Такие инструменты, как «Bash», «Read», «Write», были переименованы в «proxy_Bash», «proxy_Read» и т. д., в результате чего Клод отклонил их (#618). -Документация о блокировке учетной записи Kiro— задокументировано как ложное срабатывание защиты от мошенничества в восходящем направлении AWS, а не проблема OmniRoute (#649).### 🧪 Tests
-936 тестов, 0 неудач---
[3.1.1] — 2026-03-26
✨ New Features
-Метаданные возможностей машинного зрения: добавлены capabilities.vision, input_modalities и output_modalities в записи /v1/models для моделей с поддержкой машинного зрения (PR #646). -Модели Gemini 3.1: к провайдеру Антигравитации добавлены gemini-3.1-pro-preview и gemini-3.1-flash-lite-preview (#645).### 🐛 Bug Fixes
-Ошибка Ollama Cloud 401: исправлен неправильный базовый URL-адрес API — изменен с api.ollama.com на официальный ollama.com/v1/chat/completions (#643). -Повторная попытка токена с истекшим сроком действия: добавлена ограниченная повторная попытка с экспоненциальной задержкой (5 → 10 → 20 минут) для соединений OAuth с истекшим сроком действия вместо их постоянного пропуска (PR № 647).### 🧪 Tests
-936 тестов, 0 неудач---
[3.1.0] — 2026-03-26
✨ New Features
-Шаблоны проблем GitHub: добавлены стандартизированные отчеты об ошибках, запросы функций и шаблоны проблем с конфигурацией/прокси (#641). -Очистить все модели: на страницу сведений о поставщике добавлена кнопка «Очистить все модели» с поддержкой i18n на 29 языках (#634).### 🐛 Bug Fixes
-Конфликт локали (in.json): файл локали на хинди переименован с in.json (индонезийский код ISO) на hi.json, чтобы исправить конфликты перевода в Weblate (#642). -Пустые имена инструментов Кодекса: очистка имен инструментов перенесена перед собственной передачей Кодекса, исправлено 400 ошибок от вышестоящих поставщиков, когда инструменты имели пустые имена (#637). -Потоковая передача артефактов новой строки: к средству очистки ответа добавлен collapseExcessiveNewlines, сворачивающий прогоны из 3+ последовательных символов новой строки из моделей мышления в стандартный двойной символ новой строки (#638). -Claude Reasoning Effort: преобразован параметр OpenAI reasoning_effort в собственный бюджетный блок мышления Клода для всех путей запроса, включая автоматическую настройку max_tokens (#627). -Обновление токена Qwen: реализовано упреждающее обновление токенов OAuth до истечения срока действия (5-минутный буфер) для предотвращения сбоев запросов при использовании кратковременных токенов (#631).### 🧪 Tests
-936 тестов, 0 неудач(+10 тестов с версии 3.0.9)---
[3.0.9] — 2026-03-26
🐛 Bug Fixes
-Токены NaN в коде Клода/ответах клиентов (#617):
sanitizeUsage()теперь выполняет перекрестное сопоставлениеinput_tokens→prompt_tokensиoutput_tokens→completion_tokensперед фильтром белого списка, исправляя ответы, показывающие количество токенов NaN/0, когда поставщики возвращают имена полей использования в стиле Claude.### Безопасность
— Обновлен пакет yaml для исправления уязвимости переполнения стека (GHSA-48c2-rrv3-qjmp).### 📋 Issue Triage
- Закрыто № 613 (Codestral — решено с помощью обходного пути пользовательского поставщика)
- Комментарий к номеру 615 (двухконечная точка OpenCode — предоставлено обходное решение, отслеживается как запрос функции)
- Комментарий к №618 (видимость вызова инструмента — запрос теста v3.0.9)
- Комментарий к #627 (уровень усилий — уже поддерживается)---
[3.0.8] — 2026-03-25
🐛 Bug Fixes
-Ошибки перевода провайдеров формата OpenAI в Claude CLI (#632):
- Обработка формата массива
reasoning_details[]из StepFun/OpenRouter — преобразуется вreasoning_content— Обработка псевдонима поля «reasoning» от некоторых поставщиков → нормализовано до «reasoning_content». - Имена полей использования между картами:
input_tokens↔prompt_tokens,output_tokens↔completion_tokensвfilterUsageForFormat - Исправлено
extractUsage, чтобы он принимал какinput_tokens/output_tokens, так и ``prompt_tokens/completion_tokens` в качестве допустимых полей использования. - Применяется как к потоковым (
sanitizeStreamingChunk,переводчикopenai-to-claude.ts), так и к непотоковым (sanitizeMessage`) путям.---
[3.0.7] — 2026-03-25
🐛 Bug Fixes
-**Обновление токена антигравитации:**Исправлена ошибка client_secret is Missing для пользователей, установивших npm: clientSecretDefault был пустым в реестре поставщика, из-за чего Google отклонял запросы на обновление токена (#588). -**Модели OpenCode Zen:**В запись реестра OpenCode Zen добавлен modelsUrl, поэтому «Импорт из /models» работает правильно (#612). -Артефакты потоковой передачи: исправлено чрезмерное количество символов новой строки в ответах после удаления подписи тега мышления (#626). -**Резервный прокси-сервер:**добавлена автоматическая повторная попытка без прокси-сервера при сбое ретрансляции SOCKS5. -**Тест прокси:**Конечная точка теста теперь разрешает реальные учетные данные из БД через proxyId.### ✨ New Features
-**Выбор учетной записи/ключа игровой площадки:**Постоянный, всегда видимый раскрывающийся список для выбора учетных записей/ключей конкретного провайдера для тестирования — выбирает все соединения при запуске и фильтрует по выбранному провайдеру. -**Динамические модели инструментов CLI:**выбор модели теперь динамически извлекается из API /v1/models — такие поставщики, как Kiro, теперь показывают свой полный каталог моделей. -**Список антигравитационных моделей:**Обновлен: Claude Sonnet 4.5, Claude Sonnet 4, GPT 5, GPT 5 Mini; включен passthroughModels для доступа к динамической модели (#628)### 🔧 Maintenance
- Объединенный запрос № 625 — исправление фона в облегченном режиме с ограничениями поставщика.---
[3.0.6] — 2026-03-25
🐛 Bug Fixes
-**Ограничения/Прокси:**Исправлено получение ограничений Кодекса для учетных записей, находящихся за прокси-серверами SOCKS5: обновление токена теперь выполняется внутри контекста прокси-сервера. -**CI:**Исправлен сбой утверждения интеграционного теста v1/models в средах CI без подключений к поставщику. -**Настройки:**Кнопка проверки прокси-сервера теперь сразу показывает результаты успеха/неудачи (ранее они были скрыты за данными о работоспособности).### ✨ New Features
-**Игровая площадка:**Добавлен раскрывающийся список выбора учетной записи: тестируйте отдельные соединения индивидуально, если у провайдера несколько учетных записей.### 🔧 Maintenance
- Объединенный PR № 623 — исправление пути к базовому URL-адресу API LongCat.---
[3.0.5] — 2026-03-25
✨ New Features
-**Ограничения пользовательского интерфейса.**На панель подключений добавлена функция группировки тегов для улучшения визуальной организации аккаунтов с настраиваемыми тегами.---
[3.0.4] — 2026-03-25
🐛 Bug Fixes
-**Потоковая передача:**Исправлено повреждение состояния TextDecoder внутри комбо Sanitize TransformStream, из-за которого вывод SSE искажался, совпадая с многобайтовыми символами (PR #614). -**Интерфейс поставщика:**безопасно отображайте HTML-теги во всплывающих подсказках об ошибках подключения к поставщику с помощью dangerouslySetInnerHTML. -**Настройки прокси-сервера.**Добавлены отсутствующие свойства тела полезной нагрузки username и password, позволяющие успешно проверять аутентифицированные прокси-серверы с панели управления. -**API поставщика:**связанное мягкое исключение возвращается в getCodexUsage, предотвращая сбои API HTTP 500 при сбое получения токена.---
[3.0.3] — 2026-03-25
✨ New Features
-**Автосинхронизация моделей.**Добавлен переключатель пользовательского интерфейса и конечная точка «sync-models» для автоматической синхронизации списков моделей каждого поставщика с использованием планировщика запланированных интервалов (PR № 597).### 🐛 Bug Fixes
-**Таймауты:**прокси-серверы по умолчанию FETCH_TIMEOUT_MS и STREAM_IDLE_TIMEOUT_MS увеличены до 10 минут для правильной поддержки моделей глубокого рассуждения (например, o1) без прерывания запросов (Исправление №609). -**Обнаружение инструмента CLI:**Улучшено межплатформенное обнаружение, обрабатывающее пути NVM, Windows PATHEXT (предотвращает проблемы с оболочками .cmd) и пользовательские префиксы NPM (PR # 598). -**Потоковые журналы:**Реализовано накопление дельты tool_calls в журналах потоковой передачи ответов, поэтому вызовы функций отслеживаются и точно сохраняются в БД (PR № 603). -**Каталог моделей:**удалено исключение для аутентификации, правильно скрываются модели comfyui и sdwebui, когда ни один поставщик явно не настроен (PR № 599).### 🌐 Translations
-**cs:**Улучшены строки перевода на чешский язык в приложении (PR № 601).## [3.0.2] — 2026-03-25
🚀 Enhancements & Features
feat(ui): Connection Tag Grouping
- Добавлено поле тега/группы в EditConnectionModal (хранится в providerSpecificData.tag) без необходимости миграции схемы БД. — Соединения в представлении поставщика теперь динамически группируются по тегам с помощью визуальных разделителей.
- Немаркированные соединения отображаются первыми без заголовка, а затем следуют группы с тегами в алфавитном порядке. — Группировка тегов автоматически применяется к разделу «Кодекс/Второй пилот/Пределы антигравитации», поскольку переключатели существуют внутри строк подключения.### 🐛 Bug Fixes
fix(ui): Proxy Management UI Stabilization
-**Отсутствуют значки на картах подключения.**Исправлено с помощью resolveProxyForConnection() вместо статического сопоставления. -**Тестовое соединение отключено в сохраненном режиме:**Включена кнопка «Тест», разрешив конфигурацию прокси-сервера из сохраненного списка. -**Модальное замораживание конфигурации:**Добавлены вызовы onClose() после сохранения/очистки, чтобы предотвратить зависание пользовательского интерфейса. -**Двойной подсчет использования:**ProxyRegistryManager теперь активно загружает использование при монтировании с дедупликацией по scope + scopeId. Счетчики использования были заменены кнопкой «Тест», отображающей встроенный IP/задержку.#### fix(translator): function_call prefix stripping
- Исправлено неполное исправление из PR #607, где только блоки
tool_useудаляли префикс инструментаproxy_Клода. Теперь клиенты, использующие формат OpenAI Responses API, также будут правильно получать инструменты без префиксаproxy_.---
[3.0.1] — 2026-03-25
🔧 Hotfix Patch — Critical Bug Fixes
Три критические проблемы, о которых сообщили пользователи после запуска версии 3.0.0, были устранены.#### fix(translator): strip proxy_ prefix in non-streaming Claude responses (#605)
Префикс proxy_, добавленный Клодом OAuth, был удален только изпотоковыхответов. Внепотоковомрежиме translateNonStreamingResponse не имел доступа к toolNameMap, в результате чего клиенты получали искаженные имена инструментов, такие как proxy_read_file вместо read_file.
**Исправление:**Добавлен необязательный параметр «toolNameMap» в «translateNonStreamingResponse» и применено удаление префиксов в обработчике блоков Claude «tool_use». chatCore.ts теперь передает карту.#### fix(validation): add LongCat specialty validator to skip /models probe (#592)
LongCat AI не предоставляет GET /v1/models. Общий валидатор validateOpenAICompatibleProvider перешел на резервный вариант завершения чата только в том случае, если был установлен validationModelId, который LongCat не настраивает. Это привело к сбою проверки поставщика с вводящей в заблуждение ошибкой при добавлении/сохранении.
**Исправление:**в карту специальных валидаторов добавлен longcat, который напрямую проверяет /chat/completions и обрабатывает любой ответ, не связанный с аутентификацией, как проход.#### fix(translator): normalize object tool schemas for Anthropic (#595)
Инструменты MCP (например, pencil, computer_use) пересылают определения инструментов с {type:"object"}, но без поля properties. API Anthropic отклоняет их с помощью: «Отсутствуют свойства схемы объекта».
**Исправление:**В openai-to-claude.ts добавьте properties: {} как безопасное значение по умолчанию, если type равен object и properties отсутствует.---
🔀 Community PRs Merged (2)
| PR | Автор | Резюме | |
|---|---|---|---|
| #589 | @flobo3 | docs(i18n): исправлен русский перевод для Playground и Testbed | |
| #591 | @rdself | fix(ui): улучшить контрастность режима освещенности в пределах провайдера и отображение уровня плана | --- |
✅ Issues Resolved
#592 #595 #605---
🧪 Tests
-926 тестов, 0 ошибок(без изменений с версии 3.0.0)---
[3.0.0] — 2026-03-24
🎉 OmniRoute v3.0.0 — The Free AI Gateway, Now with 67+ Providers
Самый крупный выпуск за всю историю.От 36 поставщиков в версии 2.9.5 до67+ поставщиковв версии 3.0.0 — с сервером MCP, протоколом A2A, механизмом автоматического комбинирования, значками поставщиков, API зарегистрированных ключей, 926 тестами и вкладом12 членов сообществав10 объединенных PR.
Объединено с v3.0.0-rc.1 по rc.17 (17 релиз-кандидатов за 3 дня интенсивной разработки).---
🆕 New Providers (+31 since v2.9.5)
| Provider | Псевдоним | Уровень | Notes | |
|---|---|---|---|---|
| OpenCode Zen | opencode-zen |
Бесплатно | 3 models via opencode.ai/zen/v1 (PR #530 by @kang-heewon) |
|
| OpenCode Go | opencode-go |
Платный | 4 models via opencode.ai/zen/go/v1 (PR #530 by @kang-heewon) |
|
| LongCat AI | ЖК |
Бесплатно | 50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) during public beta | |
| Pollinations AI | пол |
Бесплатно | Ключ API не требуется — GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 (1 запрос/15 с) | |
| Рабочий искусственный интеллект Cloudflare | ср |
Бесплатно | 10K Neurons/day — ~150 LLM responses or 500s Whisper audio, edge inference | |
| Масштабный ИИ | скв |
Бесплатно | 1M free tokens for new accounts — EU/GDPR compliant (Paris) | |
| AI/ML API | прицел |
Бесплатно | $0.025/day free credits — 200+ models via single endpoint | |
| Puter AI | пу |
Бесплатно | Более 500 моделей (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3) | |
| Alibaba Cloud (DashScope) | али |
Платный | Международные и китайские конечные точки через alicode/alicode-intl |
|
| План кодирования Alibaba | БКП |
Платный | Alibaba Model Studio with Anthropic-compatible API | |
| Кодирование Кими (ключ API) | кмка |
Платный | Dedicated API-key-based Kimi access (separate from OAuth) | |
| Кодирование MiniMax | минимакс |
Платный | Международная конечная точка | |
| МиниМакс (Китай) | минимакс-сп |
Платный | China-specific endpoint | |
| З.АИ (GLM-5) | зай |
Платный | Zhipu AI next-gen GLM models | |
| Вертексный ИИ | вершина |
Платный | Google Cloud — JSON или OAuth access_token сервисного аккаунта | |
| Оллама Облако | олламаклауд |
Платный | Ollama's hosted API service | |
| Синтетический | синтетический |
Платный | Сквозные модели шлюза | |
| Кило-шлюз | кг |
Платный | Сквозные модели шлюза | |
| Поиск недоумения | pplx-поиск |
Платный | Выделенная конечная точка, основанная на поиске | |
| Серперный поиск | серпер-поиск |
Платный | Интеграция API веб-поиска | |
| Смелый поиск | смелый поиск |
Платный | Интеграция Brave Search API | |
| Поиск экзаменов | экса-поиск |
Платный | Интеграция API нейронного поиска | |
| Тавили Поиск | tavily-поиск |
Платный | Интеграция API поиска AI | |
| НаноБанан | нб |
Платный | API генерации изображений | |
| ЭлевенЛабс | эль |
Платный | Синтез речи текста в речь | |
| Картезия | картезия |
Платный | Сверхбыстрый синтез голоса TTS | |
| PlayHT | играть |
Платный | Клонирование голоса и TTS | |
| В мире | внутренний мир |
Платный | Голосовой чат персонажей AI | |
| Веб-интерфейс SD | sdwebui |
Самостоятельное размещение | Локальная генерация изображений стабильной диффузии | |
| Удобный интерфейс | комфьюи |
Самостоятельное размещение | Генерация локального рабочего процесса ComfyUI на основе узлов | |
| Кодирование GLM | глм |
Платный | Конечная точка, специфичная для кодирования BigModel/Zhipu | Всего: более 67 поставщиков(4 бесплатных, 8 OAuth, 55 ключей API) + неограниченное количество пользовательских поставщиков, совместимых с OpenAI/Anthropic.--- |
✨ Major Features
🔑 Registered Keys Provisioning API (#464)
Автоматически создавайте и выдавайте ключи API OmniRoute программным способом с соблюдением квот для каждого поставщика и каждой учетной записи.
| Конечная точка | Метод | Описание |
|---|---|---|
/api/v1/registered-keys |
ПОСТ |
Выдать новый ключ — необработанный ключ возвращаетсятолько один раз |
/api/v1/registered-keys |
ПОЛУЧИТЬ |
Список зарегистрированных ключей (замаскированных) |
/api/v1/registered-keys/{id} |
ПОЛУЧИТЬ/УДАЛИТЬ |
Получить метаданные / Отозвать |
/api/v1/quotas/check |
ПОЛУЧИТЬ |
Предварительная проверка квоты перед выдачей |
/api/v1/providers/{id}/limits |
ПОЛУЧИТЬ/ПОСТАВИТЬ |
Настройка лимитов выдачи для каждого поставщика |
/api/v1/accounts/{id}/limits |
ПОЛУЧИТЬ/ПОСТАВИТЬ |
Настройка лимитов выдачи для каждого аккаунта |
/api/v1/issues/report |
ПОСТ |
Сообщайте о событиях квоты на GitHub. Проблемы |
**Безопасность:**ключи хранятся в виде хэшей SHA-256. Необработанный ключ отображается один раз при создании и больше никогда не может быть восстановлен.#### 🎨 Provider Icons via @lobehub/icons (#529)
Более 130 логотипов поставщиков с использованием компонентов React @lobehub/icons (SVG). Резервная цепочка:Lobehub SVG → существующий PNG → общий значок. Применяется на страницах информационной панели, поставщиков и агентов с помощью стандартизированного компонента ProviderIcon.#### 🔄 Model Auto-Sync Scheduler (#488)
Списки моделей для подключенных поставщиков автоматически обновляются каждые24 часа. Запускается при запуске сервера. Настраивается через MODEL_SYNC_INTERVAL_HOURS.#### 🔀 Per-Model Combo Routing (#563)
Сопоставьте шаблоны имен моделей (glob) с конкретными комбинациями для автоматической маршрутизации:
claude-sonnet*→ code-combo,gpt-4o*→ openai-combo,gemini-*→ google-combo — Новая таблица model_combo_mappings с сопоставлением глобальных и регулярных выражений.- Раздел пользовательского интерфейса панели мониторинга: «Правила маршрутизации модели» со встроенным добавлением, редактированием, переключением и удалением.#### 🧭 API Endpoints Dashboard
Интерактивный каталог, управление веб-перехватчиками, средство просмотра OpenAPI — все на одной странице с вкладками в /dashboard/endpoint.#### 🔍 Web Search Providers
5 новых интеграций с поставщиками поисковых систем:Perplexity Search,Serper,Brave Search,Exa,Tavily – позволяют получать обоснованные ответы ИИ на основе веб-данных в реальном времени.#### 📊 Search Analytics
Новая вкладка в /dashboard/analytics — разбивка по поставщикам, частота попадания в кеш, отслеживание затрат. API: GET /api/v1/search/analytics.#### 🛡️ Per-API-Key Rate Limits (#452)
Столбцы max_requests_per_day и max_requests_per_mine с применением скользящего окна в памяти, возвращающим HTTP 429.#### 🎵 Media Playground
Полная игровая площадка для создания мультимедиа в /dashboard/media: генерация изображений, видео, музыка, расшифровка аудио (ограничение на загрузку 2 ГБ) и преобразование текста в речь.---
🔒 Security & CI/CD
-Исправление CodeQL— исправлено более 10 предупреждений: 6 полиномиальных повторов, 1 небезопасная случайность (Math.random() → crypto.randomUUID()), 1 внедрение команд оболочки. -Проверка маршрута— схемы Zod + validateBody() намаршрутах API 176/176— принудительное использование CI -Исправление CVE— XSS-уязвимость dompurify (GHSA-v2wj-7wpq-c8vv), устраненная с помощью переопределений npm. -Сглаживание— Улучшено 3.3.3 → 3.4.2 (загрязнение прототипа CWE-1321) -Docker— обновлен docker/setup-buildx-action v3 → v4.---
🐛 Bug Fixes (40+)
OAuth & Auth
-#537— Gemini CLI OAuth: устранение ошибки, требующей принятия мер, если в Docker отсутствует GEMINI_OAUTH_CLIENT_SECRET. -#549— маршруты настроек CLI теперь разрешают реальный ключ API из keyId (а не замаскированные строки). -#574— вход в систему больше не зависает после пропуска настройки пароля мастера. -#506— переписан кроссплатформенный machineId (Windows REG.exe → macOS ioreg → Linux → резервное имя хоста)#### Providers & Routing
-#536— LongCat AI: исправлены baseUrl и authHeader -#535— Переопределение закрепленной модели: для body.model правильно установлено значение pinnedModel. -#570— модели Claude без префиксов теперь разрешаются поставщику Anthropic. -#585— внутренние теги <omniModel> больше не передаются клиентам при потоковой передаче SSE. -#493— Именование модели пользовательского поставщика больше не искажается удалением префикса. -#490— Потоковая передача + защита контекстного кеша посредством внедрения TransformStream. -#511— тег <omniModel> вставляется в первый фрагмент контента (не после [DONE])#### CLI & Tools
-#527— Claude Code + цикл Кодекса: блоки tool_result теперь преобразуются в текст. -#524— конфигурация OpenCode сохранена правильно (XDG_CONFIG_HOME, формат TOML) -#522— Менеджер API: удалена вводящая в заблуждение кнопка «Копировать замаскированный ключ». -#546— --version возвращает unknown в Windows (PR от @k0valik) -#544— Безопасное обнаружение инструмента CLI по известным путям установки (PR от @k0valik) -#510— пути Windows MSYS2/Git-Bash нормализуются автоматически. -#492— CLI обнаруживает узел, управляемый mise/nvm, когда app/server.js отсутствует#### Streaming & SSE
-PR #587— Отменить импорт resolveDataDir в ответахTransformer для Cloudflare Workers, совместимый (@k0valik) -PR #495— Узкое место 429: бесконечное ожидание: удаление ожидающих заданий при достижении ограничения скорости (@xandr0s) -#483— Остановить отслеживание data: null после сигнала [DONE] -#473— потоки Zombie SSE: тайм-аут уменьшен с 300 с до 120 с для более быстрого отката#### Media & Transcription
-Транскрипция— MIME-сопоставление Deepgram video/mp4 → audio/mp4, автоматическое определение языка, пунктуация -TTS— исправлено отображение ошибки [object Object] для вложенных ошибок в стиле ElevenLabs. -Ограничения на загрузку— транскрипция мультимедиа увеличена до 2 ГБ (nginx client_max_body_size 2g + maxDuration=300)---
🔧 Infrastructure & Improvements
Sub2api Gap Analysis (T01–T15 + T23–T42)
-T01— столбец requested_model в журналах вызовов (миграция 009) -T02— Удаление пустых текстовых блоков из вложенного tool_result.content -T03— Анализ заголовков квот x-codex-5h-* / x-codex-7d-* -T04— заголовок X-Session-Id для внешней закрепленной маршрутизации. -T05— Сохранение базы данных с ограничением скорости с помощью специального API. -T06— Аккаунт деактивирован → перманентная блокировка (время восстановления — 1 год). -T07— X-Forwarded-For проверка IP (extractClientIp()) -T08— Ограничения сеансов для каждого API-ключа с применением скользящего окна. -T09— области ограничения скорости Codex и Spark (отдельные пулы) -T10— Кредиты исчерпаны → отчетливый 1-часовой запасной вариант восстановления -T11— максимальное усилие рассуждения → 131072 жетона бюджета. -T12— записи цен на MiniMax M2.7. -T13— Исправление устаревшего отображения квоты (сброс настроек окна) -T14— быстрая проверка TCP прокси-сервера (≤2 с, кэширование 30 с) -T15— Нормализация содержимого массива для Anthropic. -T23— интеллектуальный резервный сброс квоты (извлечение заголовка) -T24— время восстановления 503 + отображение 406. -T25— резервный вариант проверки поставщика. -T29— JWT-аутентификация учетной записи службы Vertex AI. -T33— Уровень мышления для преобразования бюджета -T36— классификация ошибок 403 и 429. -T38— Централизованные спецификации моделей (modelSpecs.ts) -T39— Резервная конечная точка для fetchAvailableModels -T41— автоматическое перенаправление фоновой задачи на флэш-модели. -T42— отображение соотношения сторон при генерации изображения.#### Other Improvements
-Настраиваемые заголовки восходящего потока для каждой модели— через пользовательский интерфейс конфигурации (PR № 575 от @zhangqiang8vip). -Длина контекста модели— настраивается в метаданных модели (PR №578 от @hijak). -Удаление префикса модели— возможность удалить префикс поставщика из названий моделей (PR №582 от @jay77721). -Устаревшая версия Gemini CLI— помечена как устаревшая с предупреждением об ограничении Google OAuth. -YAML-парсер— пользовательский парсер заменен на js-yaml для корректного анализа спецификаций OpenAPI. -ZWS v5— исправлена утечка HMR (485 подключений к БД → 1, память 2,4 ГБ → 195 МБ) -Экспорт журнала— новая кнопка экспорта JSON на панели управления с раскрывающимся списком временного диапазона. -Баннер с уведомлением об обновлении— на главной странице панели управления отображается, когда доступны новые версии.---
🌐 i18n & Documentation
-30 языковпри 100 % четности — синхронизировано 2788 отсутствующих ключей. -Чешский— Полный перевод: 22 документа, 2606 строк пользовательского интерфейса (PR от @zen0bit) -Китайский (zh-CN)— Полный реперевод (пиар @only4copilot) -Руководство по развертыванию виртуальной машины— переведено на английский язык как исходный документ. -Справочник по API— добавлены конечные точки /v1/embeddings и /v1/audio/speech. -Количество поставщиков— обновлено с 36+/40+/44+ до**67+**в README и во всех 30 файлах README i18n.---
🔀 Community PRs Merged (10)
| PR | Автор | Резюме |
|---|---|---|
| #587 | @k0valik | fix(sse): вернуть импортsolveDataDir для совместимости с Cloudflare Workers |
| #582 | @jay77721 | feat(proxy): опция удаления префикса имени модели |
| #581 | @jay77721 | fix(npm): связать электронный релиз с рабочим процессом npm-publish |
| #578 | @хиджак | подвиг: настраиваемая длина контекста в метаданных модели |
| #575 | @zhangqiang8vip | подвиг: восходящие заголовки для каждой модели, совместимые PATCH, выравнивание чата |
| #562 | @coobabm | исправлено: управление сеансами MCP, сквозная передача Клода, обнаружение формата |
| #561 | @zen0bit | fix(i18n): исправления чешского перевода |
| #555 | @k0valik | fix(sse): централизованное resolveDataDir() для разрешения пути |
| #546 | @k0valik | fix(cli): --version возвращает unknown в Windows |
| #544 | @k0valik | fix(cli): безопасное обнаружение инструмента CLI по путям установки |
| #542 | @rdself | fix(ui): переменные темы CSS с контрастностью в светлом режиме |
| #530 | @кан-хивон | подвиг: провайдеры OpenCode Zen + Go с OpencodeExecutor |
| #512 | @zhangqiang8vip | подвиг: совместимость модели каждого протокола (compatByProtocol) |
| #497 | @zhangqiang8vip | исправлено: утечка ресурсов HMR в режиме разработки (ZWS v5) |
| #495 | @xandr0s | исправлено: Узкое место 429: бесконечное ожидание (удаление ожидающих заданий) |
| #494 | @zhangqiang8vip | подвиг: разработчик MiniMax→исправление системной роли |
| #480 | @prakersh | исправлено: извлечение использования потока очистки |
| #479 | @prakersh | подвиг: Кодекс 5.3/5.4 и записи цен на Anthropic |
| #475 | @only4copilot | feat(i18n): улучшенный китайский перевод |
Спасибо всем участникам!🙏---
📋 Issues Resolved (50+)
#452 #458 #462 #464 #466 #473 #474 #481 #483 #487 #488 #489 #490 #491 #492 #493 #506 #508 #509 #510 #511 #513 #520 #521 #522 #524 #525 #527 #529 #531 #532 #535 #536 #537 #541 #546 #549 #563 #570 #574 #585---
🧪 Tests
-926 тестов, 0 ошибок(по сравнению с 821 в версии 2.9.5)
- +105 новых тестов, охватывающих: сопоставления моделей и комбинаций, зарегистрированные ключи, OpencodeExecutor, поставщик Bailian, проверку маршрутов, классификацию ошибок, сопоставление пропорций и многое другое.---
📦 Database Migrations
| Миграция | Описание | |
|---|---|---|
| 008 | таблицы registered_keys, provider_key_limits, account_key_limits |
|
| 009 | Столбец requested_model в call_logs |
|
| 010 | таблица model_combo_mappings для комбинированной маршрутизации для каждой модели |
--- |
⬆️ Upgrading from v2.9.5
# npm
npm install -g omniroute@3.0.0
# Docker
docker pull diegosouzapw/omniroute:3.0.0
# Migrations run automatically on first startup
**Критические изменения:**Нет. Все существующие конфигурации, комбинации и ключи API сохраняются. Миграция базы данных 008–010 запускается автоматически при запуске.---
[3.0.0-rc.17] — 2026-03-24
🔒 Security & CI/CD
-Исправление CodeQL— Исправлено более 10 оповещений:
- 6 полиномиальных повторов в
provider.ts/chatCore.ts(заменены шаблоны чередования(?:^|/)на сопоставление на основе сегментов) - 1 небезопасная случайность в
acp/manager.ts(Math.random()→crypto.randomUUID()) - 1 внедрение команды оболочки в
prepublish.mjs(экранирование путиJSON.stringify()) -Проверка маршрута— добавлены схемы Zod +validateBody()для 5 маршрутов, для которых отсутствует проверка: model-combo-mappings(POST, PUT),webhooks(POST, PUT),openapi/try(POST)- CI
check:route-validation:t06теперь проходит:176/176 проверенных маршрутов### 🐛 Bug Fixes
-#585— внутренние теги <omniModel> больше не передаются клиентам в ответах SSE. Добавлена очистка исходящего трафика TransformStream в combo.ts.### ⚙️ Infrastructure
-Docker— обновлен docker/setup-buildx-action с v3 → v4 (исправление устаревания Node.js 20). -Очистка CI – удалено более 150 неудачных/отмененных запусков рабочего процесса.### 🧪 Tests
- Набор тестов:926 тестов, 0 ошибок(+3 новых)---
[3.0.0-rc.16] — 2026-03-24
✨ New Features
- Увеличены пределы транскрипции мультимедиа.
- В метаданные реестра добавлена длина контекста модели.
- Добавлены пользовательские заголовки для каждой модели через пользовательский интерфейс конфигурации.
- Исправлено множество ошибок, проверка Zod для патчей и решены различные проблемы сообщества.## [3.0.0-rc.15] — 2026-03-24
✨ New Features
-#563— Комбинированная маршрутизация для каждой модели: сопоставление шаблонов имен моделей (glob) с конкретными комбинациями для автоматической маршрутизации.
- Новая таблица model_combo_mappings (миграция 010) с включенным шаблоном, Combo_id, приоритетом.
- Функция базы данных
resolveComboForModel()с сопоставлением глобальных и регулярных выражений (без учета регистра, подстановочные знаки*и?) getComboForModel()вmodel.ts: дополняетgetCombo()резервным шаблоном модели.chat.ts: решение о маршрутизации теперь проверяет сопоставления моделей и комбинаций перед обработкой одной модели.- API:
GET/POST /api/model-combo-mappings,GET/PUT/DELETE /api/model-combo-mappings/:id - Панель инструментов: на страницу «Комбинации» добавлен раздел «Правила маршрутизации модели» со встроенным добавлением/редактированием/переключением/удалением.
- Примеры:
claude-sonnet*→ code-combo,gpt-4o*→ openai-combo,gemini-*→ google-combo.### 🌐 i18n
-Полная синхронизация i18n: добавлено 2788 недостающих ключей в 30 языковых файлах — все языки теперь имеют 100%-ную идентичность с en.json -Страница агентов i18n: раздел интеграции OpenCode полностью интернационализирован (название, описание, сканирование, метки загрузки) -6 новых ключейдобавлено в пространство имен агентов для раздела OpenCode.### 🎨 UI/UX
-Значки поставщиков: добавлено 16 отсутствующих значков поставщиков (3 скопированы, 2 загружены, 11 созданы в формате SVG). -Резервный вариант SVG: компонент ProviderIcon обновлен с использованием 4-уровневой стратегии: Lobehub → PNG → SVG → Общий значок. -Снятие отпечатков пальцев агентов: синхронизировано с инструментами CLI — в список отпечатков пальцев добавлены дроид, openclaw, второй пилот, открытый код (всего 14)### Безопасность
-Исправление CVE: устранена XSS-уязвимость dompurify (GHSA-v2wj-7wpq-c8vv) через переопределения npm, вызывающие dompurify@^3.3.2
-
npm Auditтеперь сообщает о0 уязвимостях### 🧪 Tests -
Набор тестов:923 теста, 0 ошибок(+15 новых тестов сопоставления комбинаций моделей).---
[3.0.0-rc.14] — 2026-03-23
🔀 Community PRs Merged
| PR | Автор | Резюме | |
|---|---|---|---|
| #562 | @coobabm | fix(ux): управление сеансами MCP, нормализация сквозной передачи Claude, модальный режим OAuth, defineFormat | |
| #561 | @zen0bit | fix(i18n): исправления чешского перевода — имена HTTP-методов и обновления документации | ### 🧪 Tests |
- Набор тестов:908 тестов, 0 ошибок---
[3.0.0-rc.13] — 2026-03-23
🔧 Bug Fixes
-**config:**разрешает реальный ключ API из keyId в маршрутах настроек CLI (codex-settings, droid-settings, kilo-settings), чтобы предотвратить запись замаскированных строк (#549).---
[3.0.0-rc.12] — 2026-03-23
🔀 Community PRs Merged
| PR | Автор | Резюме | |
|---|---|---|---|
| #546 | @k0valik | fix(cli): --version возвращает unknown в Windows — используйте JSON.parse(readFileSync) вместо импорта ESM |
|
| #555 | @k0valik | fix(sse): централизованное resolveDataDir() для разрешения путей в учетных данных, autoCombo, регистратор ответов и регистратор запросов |
|
| #544 | @k0valik | fix(cli): безопасное обнаружение инструментов CLI по известным путям установки (8 инструментов) с проверкой символических ссылок, проверкой типов файлов, ограничениями размера, минимальным окружением в Healthcheck | |
| #542 | @rdself | fix(ui): улучшить контрастность светлого режима — добавить недостающие переменные темы CSS (bg-primary, bg-subtle, text-primary) и исправить только тёмные цвета в деталях журнала |
### 🔧 Bug Fixes |
-Исправление TDZ в cliRuntime.ts— validateEnvPath использовался перед инициализацией при запуске модуля с помощью getExpectedParentPaths(). Переупорядочены объявления, чтобы исправить «ReferenceError». -Исправления сборки— в serverExternalPackages добавлены pino и pino-pretty, чтобы Turbopack не нарушал внутреннюю рабочую загрузку Pino.### 🧪 Tests
- Набор тестов:905 тестов, 0 ошибок---
[3.0.0-rc.10] — 2026-03-23
🔧 Bug Fixes
-#509 / #508— Регрессия сборки Electron: версия Next.js понижена с «16.1.x» до «16.0.10», чтобы устранить нестабильность хеширования модуля Turbopack, которая приводила к появлению пустых экранов в пакете Electron для настольных компьютеров. -Исправления модульных тестов— исправлены два устаревших утверждения теста (соотношение сторон/разрешение nanobanana-image-handler, сопоставление полей thinking-budget Gemini thinkingConfig), которые изменились после недавних изменений реализации. -#541— Responded to user feedback about installation complexity; никаких изменений кода не требуется.---
[3.0.0-rc.9] — 2026-03-23
✨ New Features
-T29— Vertex AI SA JSON Executor: реализован с использованием библиотеки jose для обработки аутентификации JWT/служебной учетной записи, а также настраиваемых регионов в пользовательском интерфейсе и автоматического построения URL-адресов партнерской модели. -T42— Сопоставление пропорций при генерации изображения: создана логика sizeMapper для общих форматов OpenAI («size»), добавлена встроенная обработка imagen3 и обновлены конечные точки NanoBanana для автоматического использования сопоставленных пропорций. -T38— Централизованные спецификации модели: modelSpecs.ts создан для ограничений и параметров для каждой модели.### 🔧 Improvements
-T40— интеграция инструментов OpenCode CLI: встроенная интеграция opencode-zen и opencode-go завершена в предыдущем PR.---
[3.0.0-rc.8] — 2026-03-23
🔧 Bug Fixes & Improvements (Fallback, Quota & Budget)
-T24— исправление ожидания восстановления 503 + сопоставление 406: сопоставлено 406 Not Acceptable с 503 Service Unavailable с правильными интервалами восстановления. -T25— Резервный вариант проверки поставщика: плавный переход к стандартным моделям проверки, когда определенный validationModelId отсутствует. -T36— уточнение обработки поставщиком 403 и 429: извлечено в errorClassifier.ts для правильного разделения сбоев жестких разрешений (403) от ограничений скорости (429). -T39— Резервная точка конечной точки для fetchAvailableModels: реализован трёхуровневый механизм (/models -> /v1/models → локальный общий каталог) + list_models_catalog обновления инструмента MCP для отражения source и warning. -T33— Преобразование уровня мышления в бюджет: преобразует уровни качественного мышления в точное распределение бюджета. -T41— автоматическое перенаправление фоновых задач: автоматически направляет тяжелые фоновые задачи оценки на флэш-модели или эффективные модели. -T23— интеллектуальный резервный сброс квоты: точно извлекает значения заголовков x-ratelimit-reset/retry-after или отображает статические значения времени восстановления.---
[3.0.0-rc.7] — 2026-03-23 (What's New vs v2.9.5 — will be released as v3.0.0)
**Обновление с версии 2.9.5:**решено 16 проблем · объединено 2 PR сообщества · 2 новых поставщика · 7 новых конечных точек API · 3 новые функции · миграция БД 008+009 · пройдено 832 теста · 15 улучшений пробелов в sub2api (завершено T01–T15).### 🆕 New Providers
| Провайдер | Псевдоним | Уровень | Заметки |
|---|---|---|---|
| OpenCode Дзен | opencode-zen |
Бесплатно | 3 модели через opencode.ai/zen/v1 (PR №530 от @kang-heewon) |
| OpenCode Go | opencode-go |
Платный | 4 модели через opencode.ai/zen/go/v1 (PR №530 от @kang-heewon) |
Оба провайдера используют новый OpencodeExecutor с многоформатной маршрутизацией (/chat/completions, /messages, /responses, /models/{model}:generateContent).---
✨ New Features
🔑 Registered Keys Provisioning API (#464)
Автоматически создавайте и выдавайте ключи API OmniRoute программным способом с соблюдением квот для каждого поставщика и каждой учетной записи.
| Конечная точка | Метод | Описание |
|---|---|---|
/api/v1/registered-keys |
ПОСТ |
Выдать новый ключ — необработанный ключ возвращаетсятолько один раз |
/api/v1/registered-keys |
ПОЛУЧИТЬ |
Список зарегистрированных ключей (замаскированных) |
/api/v1/registered-keys/{id} |
ПОЛУЧИТЬ |
Получить ключевые метаданные |
/api/v1/registered-keys/{id} |
УДАЛИТЬ |
Отозвать ключ |
/api/v1/registered-keys/{id}/revoke |
ПОСТ |
Отозвать (для клиентов без поддержки DELETE) |
/api/v1/quotas/check |
ПОЛУЧИТЬ |
Предварительная проверка квоты перед выдачей |
/api/v1/providers/{id}/limits |
ПОЛУЧИТЬ/ПОСТАВИТЬ |
Настройка лимитов выдачи для каждого поставщика |
/api/v1/accounts/{id}/limits |
ПОЛУЧИТЬ/ПОСТАВИТЬ |
Настройка лимитов выдачи для каждого аккаунта |
/api/v1/issues/report |
ПОСТ |
Сообщайте о событиях квоты на GitHub. Проблемы |
**БД — Миграция 008:**Три новые таблицы: registered_keys, provider_key_limits, account_key_limits.
**Безопасность:**ключи хранятся в виде хэшей SHA-256. Необработанный ключ отображается один раз при создании и больше никогда не может быть восстановлен.
Типы квот:«maxActiveKeys», «dailyIssueLimit», «hourlyIssueLimit» для каждого поставщика и для каждой учетной записи.
**Идемпотентность:**поле idempotency_key предотвращает дублирование выдачи. Возвращает 409 IDEMPOTENCY_CONFLICT, если ключ уже использовался.
Бюджет на ключ:dailyBudget / hourlyBudget — ограничивает количество запросов, которые ключ может маршрутизировать на одно окно.
**Отчеты GitHub:**Необязательно. Установите GITHUB_ISSUES_REPO + GITHUB_ISSUES_TOKEN, чтобы автоматически создавать проблемы GitHub при превышении квоты или сбоях выдачи.#### 🎨 Provider Icons — @lobehub/icons (#529)
Все значки поставщиков на панели управления теперь используют компоненты React @lobehub/icons (более 130 поставщиков с SVG).
Резервная цепочка:Lobehub SVG → существующий /providers/{id}.png → общий значок. Использует правильный шаблон React ErrorBoundary.#### 🔄 Model Auto-Sync Scheduler (#488)
OmniRoute теперь автоматически обновляет списки моделей подключенных поставщиков каждые24 часа.
- Запускается при запуске сервера через существующий хук
/api/sync/initialize. - Настраивается через переменную среды MODEL_SYNC_INTERVAL_HOURS.
- Охватывает 16 крупных провайдеров
- Записывает время последней синхронизации в базе данных настроек.---
🔧 Bug Fixes
OAuth & Auth
-**#537 — Gemini CLI OAuth:**Устраните ошибку, требующую действий, если GEMINI_OAUTH_CLIENT_SECRET отсутствует в Docker/автономных развертываниях. Ранее показывало загадочное сообщение «client_secret отсутствует» от Google. Теперь предоставляет специальные инструкции docker-compose.yml и ~/.omniroute/.env.#### Providers & Routing
-**#536 — LongCat AI:Исправлены baseUrl (api.longcat.chat/openai) и authHeader (Authorization: Bearer). -#535 — Переопределение закрепленной модели:для body.model теперь правильно установлено значение pinnedModel, когда активна защита контекстного кэша. -#532 — Проверка ключа OpenCode Go:**Теперь используется конечная точка теста zen/v1 (testKeyBaseUrl) — один и тот же ключ работает для обоих уровней.#### CLI & Tools
-**#527 — Код Клода + цикл Кодекса:блоки tool_result теперь преобразуются в текст, а не удаляются, что останавливает бесконечные циклы результатов инструмента. -#524 — Сохранение конфигурации OpenCode:Добавлен обработчик saveOpenCodeConfig() (с поддержкой XDG_CONFIG_HOME, пишет TOML). -#521 — Вход зависает:Вход в систему больше не зависает после пропуска настройки пароля — правильно перенаправляется на регистрацию. -#522 — Менеджер API:удалена вводящая в заблуждение кнопка «Копировать замаскированный ключ» (заменена всплывающей подсказкой со значком замка). -#532 — Конфигурация OpenCode Go:**Обработчик настроек руководства теперь обрабатывает идентификатор инструмента opencode.#### Developer Experience
-**#489 — Антигравитация:отсутствие googleProjectId возвращает структурированную ошибку 422 с инструкциями по переподключению вместо загадочного сбоя. -#510 — Пути Windows:Пути MSYS2/Git-Bash (/c/Program Files/...) теперь автоматически нормализуются до C:\Program Files\.... -#492 — Запуск CLI:**CLI omniroute теперь обнаруживает узел, управляемый mise/nvm, когда app/server.js отсутствует, и показывает целевые инструкции по исправлению.---
📖 Documentation Updates
-#513— Сброс пароля Docker: документированное обходное решение env var INITIAL_PASSWORD -#520— pnpm: шаг pnpm Approval-Builds Better-sqlite3 задокументирован.---
✅ Issues Resolved in v3.0.0
#464 #488 #489 #492 #510 #513 #520 #521 #522 #524 #527 #529 #532 #535 #536 #537---
🔀 Community PRs Merged
| PR | Автор | Резюме | |
|---|---|---|---|
| #530 | @кан-хивон | Поставщики OpenCode Zen + Go с OpencodeExecutor и улучшенными тестами | --- |
[3.0.0-rc.7] - 2026-03-23
🔧 Improvements (sub2api Gap Analysis — T05, T08, T09, T13, T14)
-T05— Сохранение ограничения скорости в базе данных: setConnectionRateLimitUntil(), isConnectionRateLimited(), getRateLimitedConnections() в providers.ts. Существующий столбец «rate_limited_until» теперь отображается как выделенный API — обновление токена OAuth НЕ должно касаться этого поля, чтобы предотвратить циклы ограничения скорости. -T08— Ограничение сеанса для каждого API-ключа: max_sessions INTEGER DEFAULT 0 добавлено в api_keys посредством автоматической миграции. sessionManager.ts получает registerKeySession(), unregisterKeySession(), checkSessionLimit() и getActiveSessionCountForKey(). Вызывающие абоненты в «chatCore.js» могут применять ограничение и уменьшать значение «req.close». -T09— области ограничения скорости Codex и Spark: getCodexModelScope() и getCodexRateLimitKey() в codex.ts. Стандартные модели (gpt-5.x-codex, codex-mini) получают область действия codex; модели искр (codex-spark*) получают область видимости "spark". Ключи ограничения скорости должны иметь вид ${accountId}:${scope}, чтобы исчерпание одного пула не блокировало другой. -T13— Исправлено отображение устаревшей квоты: getEffectiveQuotaUsage(used, resetAt) возвращает 0 после прохождения окна сброса; formatResetCountdown(resetAt) возвращает удобочитаемую строку обратного отсчета (например, "2ч 35м"). Оба экспортированы из «providers.ts» + «localDb.ts» для использования в информационной панели. -T14— Прокси-сервер с быстрым сбоем: новый src/lib/proxyHealth.ts с isProxyReachable(proxyUrl, timeoutMs=2000) (проверка TCP, время ожидания ≤2 с вместо 30 с), getCachedProxyHealth(), invalidateProxyHealth() и getAllProxyHealthStatuses(). По умолчанию результаты кэшируются 30 секунд; настраивается через PROXY_FAST_FAIL_TIMEOUT_MS/PROXY_HEALTH_CACHE_TTL_MS.### 🧪 Tests
- Набор тестов:832 теста, 0 ошибок---
[3.0.0-rc.6] - 2026-03-23
🔧 Bug Fixes & Improvements (sub2api Gap Analysis — T01–T15)
-T01— столбец requested_model в call_logs (миграция 009): отслеживание того, какая модель изначально запрошена клиентом, а не фактическая маршрутизируемая модель. Включает аналитику резервных ставок. -T02— Удаление пустых текстовых блоков из вложенного tool_result.content: предотвращает ошибки Anthropic 400 («блоки текстового контента должны быть непустыми»), когда Claude Code объединяет результаты инструмента. -T03— Анализ заголовков x-codex-5h-* / x-codex-7d-*: parseCodexQuotaHeaders() + getCodexResetTime() извлекают окна квот Кодекса для точного планирования времени восстановления вместо обычного 5-минутного отката. -T04— заголовок X-Session-Id для внешней закрепленной маршрутизации: extractExternalSessionId() в sessionManager.ts считывает заголовки x-session-id / x-omniroute-session с префиксом ext:, чтобы избежать конфликта с внутренними идентификаторами сеанса SHA-256. Совместимость с Nginx (заголовок через дефис). -T06— Аккаунт деактивирован → перманентная блокировка: isAccountDeactivated() в accountFallback.ts обнаруживает 401 сигнал деактивации и применяет 1-летний период восстановления, чтобы предотвратить повторную попытку окончательно мертвых аккаунтов. -T07— проверка IP-адреса X-Forwarded-For: новый src/lib/ipUtils.ts с extractClientIp() и getClientIpFromRequest() — пропускает записи unknown/non-IP в цепочках X-Forwarded-For (запросы, пересылаемые Nginx/прокси-сервером). -T10— Кредиты исчерпаны → отдельный резервный вариант: isCreditsExhausted() в accountFallback.ts возвращает 1-часовое время восстановления с флагом creditsExhausted, в отличие от общего ограничения скорости 429. -T11— максимальное усилие рассуждения → 131072 жетона бюджета: EFFORT_BUDGETS и THINKING_LEVEL_MAP обновлены; обратное сопоставление теперь возвращает "max" для ответов с полным бюджетом. Модульный тест обновлен. -T12— в таблицу цен добавлены записи цен на MiniMax M2.7: «minimax-m2.7», «MiniMax-M2.7», «minimax-m2.7-highspeed» (суб2api PR # 1120). Цены на M2.5/GLM-4.7/GLM-5/Kimi уже существовали. -T15— Нормализация содержимого массива: помощник normalizeContentToString() в openai-to-claude.ts правильно сжимает системные/инструментальные сообщения в формате массива в строку перед отправкой в Anthropic.### 🧪 Tests
- Набор тестов:832 теста, 0 ошибок(без изменений по сравнению с версией 5).---
[3.0.0-rc.5] - 2026-03-22
✨ New Features
-#464— API предоставления зарегистрированных ключей: автоматическая выдача ключей API с соблюдением квот для каждого поставщика и для каждой учетной записи.
POST /api/v1/registered-keys— выдавать ключи с поддержкой идемпотентности.GET /api/v1/registered-keys— список (замаскированных) зарегистрированных ключейGET /api/v1/registered-keys/{id}— получить метаданные ключаDELETE /api/v1/registered-keys/{id}/POST ../{id}/revoke— отозвать ключиGET /api/v1/quotas/check— предварительная проверка перед выдачейPUT /api/v1/providers/{id}/limits— установить лимиты выдачи провайдераPUT /api/v1/accounts/{id}/limits— установить лимиты выдачи аккаунтов.POST /api/v1/issues/report— дополнительный отчет о проблемах GitHub.- Миграция БД 008: таблицы
registered_keys,provider_key_limits,account_key_limits---
[3.0.0-rc.4] - 2026-03-22
✨ New Features
-#530 (PR)— добавлены поставщики OpenCode Zen и OpenCode Go (автор: @kang-heewon)
- Новый
OpencodeExecutorс многоформатной маршрутизацией (/chat/completions,/messages,/responses) - 7 моделей на обоих уровнях---
[3.0.0-rc.3] - 2026-03-22
✨ New Features
-#529— значки поставщиков теперь используют @lobehub/icons с изящным резервным вариантом PNG и компонентом ProviderIcon (поддерживается более 130 поставщиков). -#488— автоматическое обновление списков моделей каждые 24 часа с помощью modelSyncScheduler (настраивается через MODEL_SYNC_INTERVAL_HOURS).### 🔧 Bug Fixes
-#537— Gemini CLI OAuth: теперь отображается очевидная ошибка, требующая действий, когда GEMINI_OAUTH_CLIENT_SECRET отсутствует в Docker/локальных развертываниях.---
[3.0.0-rc.2] - 2026-03-22
🔧 Bug Fixes
-#536— проверка ключа LongCat AI: фиксированный baseUrl (api.longcat.chat/openai) и authHeader (Authorization: Bearer) -#535— Переопределение закрепленной модели: для body.model теперь установлено значение pinnedModel, когда защита контекстного кэша обнаруживает закрепленную модель. -#524— конфигурация OpenCode теперь сохраняется правильно: добавлен обработчик saveOpenCodeConfig() (с поддержкой XDG_CONFIG_HOME, пишет TOML)---
[3.0.0-rc.1] - 2026-03-22
🔧 Bug Fixes
- #521 — Login no longer gets stuck after skipping password setup (redirects to onboarding)
- #522 — API Manager: Removed misleading "Copy masked key" button (replaced with lock icon tooltip)
- #527 — Claude Code + Codex superpowers loop:
tool_resultblocks now converted to text instead of dropped - #532 — OpenCode GO API key validation now uses the correct
zen/v1endpoint (testKeyBaseUrl) - #489 — Antigravity: missing
googleProjectIdreturns structured 422 error with reconnect guidance - #510 — Windows: MSYS2/Git-Bash paths (
/c/Program Files/...) are now normalized toC:\Program Files\... - #492 —
omnirouteCLI now detectsmise/nvmwhenapp/server.jsis missing and shows targeted fix
Документация
-#513— Сброс пароля Docker: документированное обходное решение env var INITIAL_PASSWORD -#520— pnpm: документировано pnpm Approval-Builds Better-sqlite3### ✅ Closed Issues
№489, №492, №510, №513, №520, №521, №522, №525, №527, №532.---
[2.9.5] — 2026-03-22
Sprint: новые поставщики OpenCode, исправление внедрения учетных данных, ошибка с замаскированными ключами CLI, исправление CACHE_TAG_PATTERN.### 🐛 Bug Fixes
-Инструменты CLI сохраняют замаскированный ключ API в файлы конфигурации— POST-маршруты claude-settings, cline-settings и openclaw-settings теперь принимают параметр keyId и разрешают реальный ключ API из БД перед записью на диск. ClaudeToolCard обновлен и теперь отправляет keyId вместо замаскированной отображаемой строки. Исправления №523, №526. -Пользовательские поставщики внедрения: ошибка «Нет учетных данных»— /v1/embeddings теперь отслеживает credentialsProviderId отдельно от префикса маршрутизации, поэтому учетные данные извлекаются из соответствующего идентификатора узла поставщика, а не из строки общедоступного префикса. Устранена регрессия, при которой google/gemini-embedding-001 и аналогичные модели настраиваемых поставщиков всегда завершались с ошибкой учетных данных. Исправления, связанные с #532. (ПР №528 от @jacob2826) -Регулярное выражение защиты контекстного кэша отсутствует prefix— CACHE_TAG_PATTERN в comboAgentMiddleware.ts обновлен в соответствии с обоими литералами (обратная косая черта-n) и фактическая новая строка U+000A, которую потоковая передача combo.ts вставляет вокруг тега <omniModel> после исправления № 515. Исправления №531.### ✨ New Providers
-OpenCode Zen— шлюз бесплатного уровня на opencode.ai/zen/v1 с 3 моделями: minimax-m2.5-free, big-pickle, gpt-5-nano -OpenCode Go— служба подписки на opencode.ai/zen/go/v1 с 4 моделями: glm-5, kimi-k2.5, minimax-m2.7 (формат Claude), minimax-m2.5 (формат Claude).
- Оба провайдера используют новый OpencodeExecutor, который динамически маршрутизируется к
/chat/completions,/messages,/responsesили/models/{model}:generateContentна основе запрошенной модели. (PR №530 от @kang-heewon)---
[2.9.4] — 2026-03-21
Спринт: исправлены ошибки — сохранение ключа кэша подсказок Кодекса, исправление экранирования tagContent JSON, синхронизация статуса токена с истекшим сроком действия с БД.### 🐛 Bug Fixes
-исправление(переводчик): сохранить prompt_cache_key в API ответов → перевод завершений чата (#517).
— Поле представляет собой сигнал привязки к кэшу, используемый Кодексом; его удаление предотвращало быстрые попадания в кеш.
Исправлено в openai-responses.ts и responsesApiHelper.ts.
-исправление(комбо): Выход в tagContent, поэтому введенная строка JSON действительна (#515)
— Литералы новой строки шаблона (U+000A) не могут быть неэкранированными внутри строковых значений JSON.
Заменено литеральными последовательностями \n в open-sse/services/combo.ts.
-исправление(использование): синхронизировать статус токена с истекшим сроком действия обратно в БД при сбое аутентификации в реальном времени (#491).
— Когда живая проверка лимитов и квот возвращает 401/403, соединение testStatus теперь обновляется.
на «истёк срок действия» в базе данных, чтобы страница «Поставщики» отображала то же самое ухудшенное состояние.
Исправлено в src/app/api/usage/[connectionId]/route.ts.---
[2.9.3] — 2026-03-21
Спринт: добавьте 5 новых бесплатных поставщиков ИИ — LongCat, Pollinations, Cloudflare AI, Scaleway, AI/ML API.### ✨ New Providers
-feat(providers/longcat): добавьте LongCat AI (lc/) — 50 миллионов токенов в день бесплатно (Flash-Lite) + 500 тысяч токенов в день (чат/мышление) во время публичного бета-тестирования. Совместимость с OpenAI, стандартная аутентификация на предъявителя. -feat(providers/pollinations): добавить AI-опросы (pol/) — ключ API не требуется. Прокси GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 (1 запрос/15 секунд бесплатно). Пользовательский исполнитель обрабатывает дополнительную аутентификацию. -feat(providers/cloudflare-ai): добавьте ИИ Cloudflare Workers (cf/) — 10 тыс. нейронов в день бесплатно (~150 ответов LLM или 500 секунд звука Whisper). Более 50 моделей по всему миру. Пользовательский исполнитель создает динамический URL-адрес с идентификатором accountId на основе учетных данных. -feat(providers/scaleway): добавьте генеративные API Scaleway (scw/) — 1 миллион бесплатных токенов для новых учетных записей. Соответствует требованиям ЕС/GDPR (Париж). Квен3 235Б, Лама 3.1 70Б, Мистраль Малый 3.2. -feat(providers/aimlapi): добавьте AI/ML API (aiml/) — бесплатный кредит в размере 0,025 доллара США в день, более 200 моделей (GPT-4o, Claude, Gemini, Llama) через единую конечную точку агрегатора.### 🔄 Provider Updates
-feat(providers/together): добавьте hasFree: true + 3 постоянно бесплатных идентификатора модели: Llama-3.3-70B-Instruct-Turbo-Free, Llama-Vision-Free, DeepSeek-R1-Distill-Llama-70B-Free -feat(providers/gemini): добавьте hasFree: true + freeNote (1500 запросов в день, кредитная карта не требуется, aistudio.google.com) -chore(providers/gemini): для ясности переименуйте отображаемое имя в Gemini (Google AI Studio).### ⚙️ Infrastructure
-feat(executors/pollinations): новый PollinationsExecutor — заголовок Authorization отсутствует, если ключ API не предоставлен. -feat(executors/cloudflare-ai): новый CloudflareAIExecutor — для построения динамического URL-адреса требуется accountId в учетных данных провайдера. -feat(executors): зарегистрировать сопоставления исполнителей pollinations, pol, cloudflare-ai, cf.### Документация
-документация(readme): расширен бесплатный стек комбо до 11 провайдеров (0 долларов навсегда) -docs(readme): добавлены 4 новых бесплатных раздела поставщиков (LongCat, Pollinations, Cloudflare AI, Scaleway) с таблицами моделей. -docs(readme): обновлена таблица цен с 4 новыми строками уровней бесплатного пользования. -docs(i18n/pt-BR): обновлена таблица цен + добавлены разделы LongCat/Pollinations/Cloudflare AI/Scaleway на португальском языке. -docs(new-features/ai): 10 файлов спецификаций задач + основной план реализации в docs/new-features/ai/### 🧪 Tests
- Набор тестов:821 тест, 0 ошибок(без изменений).---
[2.9.2] — 2026-03-21
Спринт: исправлена транскрипция мультимедиа (тип контента Deepgram/HuggingFace, определение языка) и отображение ошибок TTS.### 🐛 Bug Fixes
-исправление(транскрипция): транскрипция аудио Deepgram и HuggingFace теперь правильно сопоставляет video/mp4 → audio/mp4 и другие типы мультимедиа MIME с помощью нового помощника resolveAudioContentType(). Раньше при загрузке файлов .mp4 постоянно возвращалось сообщение «Речь не обнаружена», поскольку Deepgram получал Content-Type: video/mp4. -исправление(транскрипция): в запросы Deepgram добавлен detect_language=true — автоматически определяет язык аудио (португальский, испанский и т. д.) вместо английского по умолчанию. Исправляет неанглийскую транскрипцию, возвращающую пустые или мусорные результаты. -fix(transcription): к запросам Deepgram на более качественную транскрипцию с правильной пунктуацией добавлен punctuate=true. -fix(tts): ошибка отображения [object Object] в ответах преобразования текста в речь исправлена как в audioSpeech.ts, так и в audioTranscription.ts. Функция upstreamErrorResponse() теперь правильно извлекает вложенные строковые сообщения от таких поставщиков, как ElevenLabs, которые возвращают { error: { message: "...", status_code: 401 } } вместо простой строки ошибки.### 🧪 Tests
- Набор тестов:821 тест, 0 ошибок(без изменений).### Triaged Issues
-#508— Регрессия формата вызова инструмента: запрошенные журналы прокси и информация о цепочке поставщиков («needs-info») -#510— Путь проверки работоспособности Windows CLI: запрошенная информация о версии оболочки/узла («needs-info») -#485— Вызовы инструментов Kiro MCP: закрыты как внешняя проблема Kiro (не OmniRoute) -#442— Конечная точка Baseten/models: закрыта (документированное обходное решение вручную). -#464— API предоставления ключей: признано элементом дорожной карты.---
[2.9.1] — 2026-03-21
Спринт: исправление потери данных SSE omniModel, совместимость моделей слияния для каждого протокола.### Bug Fixes
-#511— Критично: тег <omniModel> был отправлен после finish_reason:stop в потоках SSE, что привело к потере данных. Тег теперь вводится в первый непустой фрагмент контента, гарантируя доставку до того, как SDK закроет соединение.### Merged PRs
-PR #512(@zhangqiang8vip): совместимость модели для каждого протокола — normalizeToolCallId и preserveOpenAIDeveloperRole теперь можно настроить для каждого клиентского протокола (OpenAI, Claude, Responses API). Новое поле compatByProtocol в конфигурации модели с проверкой Zod.### Triaged Issues
-#510— Healthcheck_failed интерфейса командной строки Windows: запрошена информация о PATH/версии. -#509— Регрессия Turbopack Electron: ошибка в исходном коде Next.js, документированные обходные пути. -#508— черный экран macOS: предлагаемое решение --disable-gpu---
[2.9.0] — 2026-03-20
Спринт: исправление кросс-платформенного идентификатора машины, ограничения скорости для каждого API-ключа, кэш потокового контекста, Alibaba DashScope, поисковая аналитика, ZWS v5 и 8 проблем закрыты.### ✨ New Features
-feat(search): вкладка «Аналитика поиска» в /dashboard/analytics — разбивка по поставщикам, частота попаданий в кеш, отслеживание затрат. Новый API: GET /api/v1/search/analytics (#feat/search-provider-routing) -feat(provider): добавлен Alibaba Cloud DashScope с настраиваемой проверкой пути к конечной точке — настраиваемые chatPath и modelsPath для каждого узла (#feat/custom-endpoint-paths). -feat(api): ограничения количества запросов для каждого API-ключа — столбцы max_requests_per_day и max_requests_per_mine с применением скользящего окна в памяти, возвращающим HTTP 429 (# 452). -feat(dev): ZWS v5 — исправление утечки HMR (485 подключений к БД → 1), память 2,4 ГБ → 195 МБ, синглтоны globalThis, исправление предупреждений Edge Runtime (@zhangqiang8vip)### 🐛 Bug Fixes
-исправление(#506): кросс-платформенный machineId — getMachineIdRaw() переписан с помощью каскада try/catch (Windows REG.exe → macOS ioreg → чтение файла Linux → имя хоста → os.hostname()). Устраняет ветвление process.platform, которое устранил неработающий код упаковщика Next.js, исправляя ``head' не распознаетсяв Windows. Также исправлено #466. -**исправление(#493)**: Именование модели пользовательского поставщика — удалено неправильное удаление префиксов вDefaultExecutor.transformRequest(), которое искажало идентификаторы моделей на уровне организации, такие как zai-org/GLM-5-FP8. -**исправление(#490)**: Потоковая передача + защита контекстного кэша — TransformStream перехватывает SSE для вставки тега перед маркером[DONE], включая защиту контекстного кэша для потоковых ответов. -**исправление(#458)**: проверка комбинированной схемы — поля system_message, tool_filter_regex, context_cache_protectionтеперь проходят проверку Zod при сохранении. -**исправление(#487)**: очистка карты KIRO MITM — удален ZWS_README, сгенерированAntigradityToolCard` для использования динамических метаданных инструмента.### 🧪 Tests
- Добавлены модульные тесты фильтров инструментов формата Anthropic (PR #397) — 8 регрессионных тестов для
tool.nameбез оболочки.function. - Набор тестов:821 тест, 0 ошибок(вместо 813).### 📋 Issues Closed (8)
-#506— Windows MachineId head не распознается (исправлено) -#493— Пользовательское наименование модели поставщика (исправлено). -#490— Кэш контекста потоковой передачи (исправлено) -#452— Ограничения на запросы по ключу API (реализовано) -#466— ошибка входа в Windows (та же основная причина, что и #506) -#504— MITM неактивен (ожидаемое поведение) -#462— Gemini CLI PSA (решено) -#434— Сбой приложения Electron (дубликат #402)## [2.8.9] — 2026-03-20
Спринт: объединить запросы сообщества, исправить карту KIRO MITM, обновления зависимостей.### Merged PRs
-PR #498(@Sajid11194): исправлен сбой идентификатора компьютера Windows (undefine\REG.exe). Заменяет node-machine-id на собственные запросы к реестру ОС.Закрывает #486. -PR #497(@zhangqiang8vip): Исправлены утечки ресурсов HMR в режиме разработки — 485 утечек подключений к БД → 1, память 2,4 ГБ → 195 МБ. Одиночные элементы globalThis, исправление предупреждений Edge Runtime, стабильность теста Windows. (+1168/-338 по 22 файлам) -PR № 499-503(Dependabot): обновления действий GitHub — docker/build-push-action@7, actions/checkout@6, peter-evans/dockerhub-description@5, docker/setup-qemu-action@4, docker/login-action@4.### Bug Fixes
-#505— Карта KIRO MITM теперь отображает инструкции для конкретного инструмента (api.anthropic.com) вместо текста, специфичного для Антигравитации. -#504— Ответ с разъяснением UX (MITM «Неактивен» — ожидаемое поведение, когда прокси-сервер не запущен).---
[2.8.8] — 2026-03-20
Спринт: исправлен сбой пакетного теста OAuth, добавлена кнопка «Протестировать все» на отдельные страницы провайдера.### Bug Fixes
-Сбой пакетного теста OAuth(ERR_CONNECTION_REFUSED): последовательный цикл for заменен на ограничение одновременного выполнения в 5 соединений + тайм-аут каждого соединения 30 секунд через Promise.race() + Promise.allSettled(). Предотвращает сбой сервера при тестировании больших групп провайдеров OAuth (~30+ подключений).### Возможности
-Кнопка «Проверить все» на страницах поставщиков: на отдельных страницах поставщиков (например, /providers/codex) теперь отображается кнопка «Проверить все» в заголовке «Соединения», когда имеется более двух подключений. Использует POST /api/providers/test-batch с {mode: "provider",ProviderId}. Результаты отображаются в модальном режиме со сводкой «прошел/не прошел» и диагностикой каждого соединения.---
[2.8.7] — 2026-03-20
Спринт: объединение PR № 495 (узкое место 429), исправление № 496 (пользовательские поставщики внедрения), функции сортировки.### Bug Fixes
-Узкое место 429, бесконечное ожидание(PR № 495 от @xandr0s): на 429 limiter.stop({ dropWaitingJobs: true }) немедленно отклоняет все запросы в очереди, поэтому вышестоящие абоненты могут инициировать откат. Ограничитель удаляется с карты, поэтому следующий запрос создает новый экземпляр. -Неразрешимые пользовательские модели внедрения(#496): POST /v1/embeddings теперь разрешает пользовательские модели внедрения со ВСЕХ узлов поставщика (а не только с локального хоста). Позволяет добавлять такие модели, как «google/gemini-embedding-001», через панель управления.### Issues Responded
-#452— ограничения на количество запросов для каждого ключа API (подтверждено, в планах) -#464— Автоматическая выдача ключей API с ограничениями поставщика/аккаунта (требуется дополнительная информация) -#488— автоматическое обновление списков моделей (подтверждено, в планах) -#496— Пользовательское разрешение поставщика встраивания (исправлено)---
[2.8.6] — 2026-03-20
Спринт: объединить PR № 494 (исправление роли MiniMax), исправить панель управления KIRO MITM, отсортировать 8 проблем.### Возможности
-Исправление роли разработчика MiniMax→системной(PR № 494 от @zhangqiang8vip): переключение preserveDeveloperRole для каждой модели. Добавляет пользовательский интерфейс «Совместимость» на странице поставщиков. Исправляет 422 «ошибку параметра роли» для MiniMax и подобных шлюзов. -roleNormalizer: normalizeDeveloperRole() теперь принимает параметр preserveDeveloperRole с поведением в трех состояниях (неопределенное = сохранить, true = сохранить, false = преобразовать). -DB: новые getModelPreserveOpenAIDeveloperRole() и mergeModelCompatOverride() в models.ts.### Bug Fixes
-Панель управления KIRO MITM(#481/#487): CLIToolsPageClient теперь направляет любой инструмент configType: "mitm" в AntigravityToolCard (элементы управления MITM Start/Stop). Раньше только Антигравитация была жестко запрограммирована. -Общий вариант AntigravityToolCard: вместо жестко закодированных значений Антигравитации используются tool.image, tool.description, tool.id. Защищает от отсутствия defaultModels.### Cleanup
— Удален ZWS_README_V2.md (документы только для разработки из PR № 494).### Issues Triaged (8)
-#487— Закрыто (KIRO MITM исправлено в этом выпуске) -#486— необходимая информация (проблема с PATH в Windows REG.exe) -#489— информация о необходимости (отсутствует идентификатор проекта Antigravity, необходимо переподключение по OAuth) -#492— необходимая информация (отсутствует app/server.js на неправильно управляемом узле) -#490— Подтверждено (блокировка потоковой передачи + контекстного кэша, запланировано исправление) -#491— Подтверждено (несогласованность состояния аутентификации Кодекса) -#493— Подтверждено (префикс названия модели модального поставщика, предоставлен обходной путь) -#488— Журнал запросов на функции (списки моделей с автоматическим обновлением).---
[2.8.5] — 2026-03-19
Спринт: исправьте зомби-потоки SSE, первую очередь контекстного кэша, KIRO MITM и отсортируйте 5 внешних проблем.### Bug Fixes
-Zombie SSE Streams(#473): Уменьшите значение STREAM_IDLE_TIMEOUT_MS с 300 до 120 с для более быстрого возврата комбо в случае зависания провайдера в середине потока. Настраивается через env var. -Тег контекстного кэша(#474): исправлена функция injectModelTag() для обработки запросов в первую очередь (без сообщений помощника) — защита контекстного кэша теперь работает с самого первого ответа. -KIRO MITM(#481): измените configType KIRO с guide → mitm, чтобы на информационной панели отображались элементы управления запуском/остановкой MITM. -E2E Test(CI): исправлено providers-bailian-coding-plan.spec.ts — отклоняйте ранее существовавшее модальное наложение перед нажатием кнопки «Добавить ключ API».### Closed Issues
- #473 — потоки Zombie SSE обходят комбо-резервный вариант
- #474 — Тег контекстного кэша
<omniModel>отсутствует при первом повороте - #481 — MITM для KIRO не активируется с приборной панели
- #468 — удаленный сервер Gemini CLI (заменен устаревшим номером 462)
- #438 — Клод не может записывать файлы (внешняя проблема CLI)
- #439 — AppImage не работает (документированный обходной путь libfuse2)
- #402 — ARM64 DMG «поврежден» (документированный обходной путь xattr -cr)
- #460 — CLI не работает в Windows (документированное исправление PATH)---
[2.8.4] — 2026-03-19
Sprint: прекращение поддержки Gemini CLI, исправление руководства виртуальной машины i18n, исправление безопасности dependabot, расширение схемы поставщика.### Возможности
-Устаревшая поддержка Gemini CLI(#462): пометить поставщика gemini-cli как устаревшего с предупреждением — Google ограничивает стороннее использование OAuth с марта 2026 г. -Схема поставщика(#462): расширите проверку Zod дополнительными полями deprecated, deprecationReason, hasFree, freeNote, authHint, apiHint### Bug Fixes
-VM Guide i18n(#471): добавьте VM_DEPLOYMENT_GUIDE.md в конвейер перевода i18n, восстановите все 30 языковых переводов из английского источника (застряли на португальском языке).### Безопасность
-deps: Bump Flatted 3.3.3 → 3.4.2 — исправляет загрязнение прототипа CWE-1321 (#484, @dependentabot)### Closed Issues
-
#472 — Регрессия псевдонимов модели (исправлено в версии 2.8.2)
-
#471 — Не работают переводы гайдов ВМ
-
#483 — Завершающее
data: nullпосле[DONE](исправлено в версии 2.8.3)### Merged PRs -
#484 — deps: выпуклость сглажена с 3.3.3 до 3.4.2 (@dependentabot)---
[2.8.3] — 2026-03-19
Спринт: чешский i18n, исправление протокола SSE, перевод руководства по виртуальной машине.### Возможности
-Чешский язык(#482): Полный чешский язык (cs) i18n — 22 документа, 2606 строк пользовательского интерфейса, обновления переключателя языка (@zen0bit) -Руководство по развертыванию виртуальной машины: переведено с португальского на английский как исходный документ (@zen0bit).### Bug Fixes
-Протокол SSE(#483): прекращение отправки завершающих data: null после сигнала [DONE] — исправляет AI_TypeValidationError в строгих клиентах AI SDK (валидаторы на основе Zod).### Merged PRs
- #482 — Добавить чешский язык + исправить английский источник VM_DEPLOYMENT_GUIDE.md (@zen0bit)---
[2.8.2] — 2026-03-19
Спринт: 2 объединенных запроса на запрос, исправление маршрутизации псевдонимов моделей, экспорт журналов и сортировка проблем.### Возможности
-Экспорт журналов: новая кнопка экспорта в /dashboard/logs с раскрывающимся списком временного диапазона (1 час, 6 часов, 12 часов, 24 часа). Загружает JSON журналов запросов/прокси/вызовов через API /api/logs/export (#user-request)### Bug Fixes
-Маршрутизация псевдонимов моделей(#472): Настройки → Псевдонимы моделей теперь правильно влияют на маршрутизацию провайдера, а не только на определение формата. Ранее вывод resolveModelAlias() использовался только для getModelTargetFormat(), но исходный идентификатор модели отправлялся поставщику. -Использование очистки потока(#480): данные об использовании из последнего события SSE в буфере теперь правильно извлекаются во время очистки потока (объединены из @prakersh).### Merged PRs
- #480 — Извлечь использование из оставшегося буфера в обработчике сброса (@prakersh)
- #479 — Добавить недостающие записи цен для Codex 5.3/5.4 и идентификатора модели Anthropic (@prakersh)---
[2.8.1] — 2026-03-19
Спринт: пять PR от сообщества — исправления журнала вызовов потоковой передачи, совместимость с Kiro, аналитика токенов кэша, перевод на китайский язык и настраиваемые идентификаторы вызовов инструментов.### Возможности
-feat(logs): содержимое ответов журнала вызовов теперь правильно накапливается из необработанных фрагментов провайдера (OpenAI/Claude/Gemini) перед переводом, исправляя пустые полезные данные ответов в потоковом режиме (#470, @zhangqiang8vip) -feat(providers): нормализация 9-значного идентификатора вызова инструмента для каждой модели (в стиле Mistral) — только модели с включенной опцией получают усеченные идентификаторы (#470). -feat(api): Key PATCH API расширен для поддержки полей allowedConnections, name, autoResolve, isActive и accessSchedule (#470). -feat(dashboard): макет «сначала ответ» в подробном пользовательском интерфейсе журнала запросов (#470). -feat(i18n): улучшенный китайский (zh-CN) перевод — полный повторный перевод (#475, @only4copilot)### 🐛 Bug Fixes
-fix(kiro): удаление введенного поля model из тела запроса — API Kiro отклоняет неизвестные поля верхнего уровня (#478, @prakersh). -исправление(использование): включение токенов чтения и создания кэша в итоговые данные истории использования для точной аналитики (#477, @prakersh) -fix(callLogs): поддержка полей использования формата Claude (input_tokens/output_tokens) наряду с форматом OpenAI, включая все варианты токенов кэша (#476, @prakersh).---
[2.8.0] — 2026-03-19
Sprint: поставщик плана кодирования Bailian с редактируемыми базовыми URL-адресами, а также вклад сообщества для Alibaba Cloud и Kimi Coding.### Возможности
-feat(providers): добавлен план кодирования Bailian («bailian-coding-plan») — модельная студия Alibaba с API, совместимым с Anthropic. Статический каталог из 8 моделей, включая Qwen3.5 Plus, Qwen3 Coder, MiniMax M2.5, GLM 5 и Kimi K2.5. Включает пользовательскую проверку аутентификации (400=действительно, 401/403=недействительно) (#467, @Mind-Dragon) -feat(admin): редактируемый URL-адрес по умолчанию в потоках создания/редактирования администратором поставщика — пользователи могут настраивать собственные базовые URL-адреса для каждого соединения. Сохраняется в providerSpecificData.baseUrl с проверкой схемы Zod, отклоняющей схемы, отличные от http (# 467).### 🧪 Tests
- Добавлено более 30 модульных тестов и 2 сценария e2e для поставщика плана кодирования Bailian, охватывающие проверку аутентификации, усиление схемы, поведение на уровне маршрута и межуровневую интеграцию.---
[2.7.10] — 2026-03-19
Спринт: два новых провайдера, предоставленных сообществом (Alibaba Cloud Coding, API-ключ Kimi Coding) и исправление Docker pino.### Возможности
-feat(providers): добавлена поддержка плана Alibaba Cloud Coding Plan с двумя OpenAI-совместимыми конечными точками — «alicode» (Китай) и «alicode-intl» (международный), по 8 моделей в каждой (#465, @dtk1985). -feat(providers): добавлен выделенный путь провайдера kimi-coding-apikey — доступ Kimi Coding на основе API-ключа больше не осуществляется принудительно через маршрут kimi-coding только для OAuth. Включает реестр, константы, API моделей, конфигурацию и проверочный тест (#463, @Mind-Dragon).### 🐛 Bug Fixes
-fix(docker): к образу Docker добавлена отсутствующая зависимость split2 — pino-abstract-transport требует ее во время выполнения, но она не копируется в автономный контейнер, что приводит к сбою Невозможно найти модуль split2`` (#459).---
[2.7.9] — 2026-03-18
Спринт: встроенная поддержка прохождения подпутей ответов Кодекса, исправление сбоя Windows MITM и корректировка схем агентов Combos.### Возможности
-feat(codex): прохождение подпути собственных ответов для Кодекса — изначально маршрутизирует POST /v1/responses/compact в восходящий поток Кодекса, обеспечивая совместимость с кодом Claude без удаления суффикса /compact (#457).### 🐛 Bug Fixes
-исправление(комбо): схемы Zod (updateComboSchema и createComboSchema) теперь включают system_message,tool_filter_regex иcontext_cache_protection. Устранена ошибка, из-за которой настройки агента, созданные через панель управления, автоматически отбрасывались внутренним уровнем проверки (#458). -fix(mitm): Исправлен сбой профиля Kiro MITM в Windows — сбой node-machine-id из-за отсутствия окружения REG.exe, а резервный вариант выдавал фатальную ошибку crypto is not Defined. Резервный вариант теперь безопасно и правильно импортирует криптовалюту (#456).---
[2.7.8] — 2026-03-18
Спринт: ошибка экономии бюджета + пользовательский интерфейс комбо-агента + исправление безопасности тега omniModel.### 🐛 Bug Fixes
-fix(бюджет): «Сохранить лимиты» больше не возвращает 422 — warningThreshold теперь правильно отправляется как дробь (0–1), а не в процентах (0–100) (#451). -исправление(combos): тег внутреннего кэша <omniModel> теперь удаляется перед пересылкой запросов поставщикам, что предотвращает разрывы сеансов кэширования (#454).### Возможности
-feat(combos): раздел «Функции агента» добавлен в модальное окно создания/редактирования комбо — выставляйте переопределение system_message,tool_filter_regex и context_cache_protection непосредственно с панели управления (#454).---
[2.7.7] — 2026-03-18
Sprint: сбой Docker pino, исправление рабочих ответов Codex CLI, синхронизация блокировки пакетов.### 🐛 Bug Fixes
-fix(docker): pino-abstract-transport и pino-pretty теперь явно копируются на этапе выполнения Docker — автономная трассировка Next.js пропускает эти одноранговые данные, что приводит к сбою Невозможно найти модуль pino-abstract-transport при запуске (#449). -исправление(ответы): удаление initTranslators() из маршрута /v1/responses — приводил к сбою рабочего процесса Next.js с uncaughtException работник вышел на запросах Codex CLI (#450).### 🔧 Maintenance
-chore(deps): package-lock.json теперь фиксируется при каждом обновлении версии, чтобы гарантировать, что Docker npm ci использует точные версии зависимостей.---
[2.7.5] — 2026-03-18
Спринт: улучшения пользовательского интерфейса и исправление проверки работоспособности Windows CLI.### 🐛 Bug Fixes
-fix(ux): показывать подсказку к паролю по умолчанию на странице входа — новые пользователи теперь видят "Пароль по умолчанию: 123456" под вводом пароля (#437). -fix(cli): Claude CLI и другие инструменты, установленные npm, теперь корректно определяются как работоспособные в Windows — spawn использует shell:true для разрешения оболочек .cmd через PATHEXT (#447).---
[2.7.4] — 2026-03-18
Спринт: панель инструментов поиска, исправления i18n, ограничения Copilot, исправление проверки Serper.### Возможности
-feat(search): добавление игровой площадки поиска (10-я конечная точка), страница инструментов поиска со сравнением поставщиков/конвейером повторного ранжирования/историей поиска, локальная маршрутизация повторного ранжирования, защита аутентификации в API поиска (#443 от @Regis-RCR).
- Новый маршрут:
/dashboard/search-tools— Запись на боковой панели в разделе «Отладка». - GET /api/search/providers и GET /api/search/stats с защитой аутентификации.
- Локальная маршрутизация провайдера_узлов для
/v1/rerank - 30+ ключей i18n в пространстве имен поиска### 🐛 Bug Fixes
-исправление(поиск): исправлен нормализатор новостей Brave (возвращал 0 результатов), принудительное усечение max_results после нормализации, исправлен URL-адрес получения страницы конечных точек (#443 от @Regis-RCR). -fix(analytics): локализовать метки дня/даты аналитики — замените жестко закодированные португальские строки на Intl.DateTimeFormat(locale)` (#444 от @hijak). -fix(copilot): правильное отображение типа учетной записи GitHub Copilot, фильтрация вводящих в заблуждение строк неограниченных квот на панели ограничений (#445 от @hijak). -исправлено(поставщики): прекратить отклонять действительные ключи API Serper — рассматривать ответы, отличные от 4xx, как действительную аутентификацию (#446 от @hijak).---
[2.7.3] — 2026-03-18
Sprint: исправление резервной квоты прямого API Кодекса.### 🐛 Bug Fixes
-fix(codex): блокировка еженедельно исчерпанных учетных записей в прямом резервном API (#440).
- Соответствие префикса ``resolveQuotaWindow()
:"еженедельный"теперь соответствует"еженедельному (7d)"` ключам кэша applyCodexWindowPolicy()обеспечивает правильное переключениеuseWeekly/use5h- 4 новых регрессионных теста (всего 766)---
[2.7.2] — 2026-03-18
Спринт: исправлена контрастность пользовательского интерфейса в облегченном режиме.### 🐛 Bug Fixes
-fix(logs): исправлен контраст режима освещения в кнопках фильтра журналов запросов и комбинированном значке (#378).
- Кнопки фильтра «Ошибка/Успех/Комбо» теперь читабельны в светлом режиме.
- Значок комбинированного ряда использует более сильный фиолетовый цвет в светлом режиме.---
[2.7.1] — 2026-03-17
Спринт: унифицированная маршрутизация веб-поиска (POST/v1/search) с 5 поставщиками + исправления безопасности Next.js 16.1.7 (6 CVE).### ✨ New Features
-feat(search): унифицированная маршрутизация веб-поиска — POST /v1/search с 5 провайдерами (Serper, Brave, Perplexity, Exa, Tavily).
- Автоматическое переключение между поставщиками, более 6500 бесплатных поисков в месяц.
- Кэш в памяти с объединением запросов (настраиваемый TTL)
- Панель инструментов: вкладка Search Analytics в
/dashboard/analyticsс разбивкой по поставщикам, коэффициентом попадания в кеш, отслеживанием затрат. - Новый API: GET /api/v1/search/analytics для статистики поисковых запросов.
- Миграция БД: столбец
request_typeвcall_logsдля отслеживания запросов без чата. - Проверка Zod (
v1SearchSchema), авторизация, стоимость записывается черезrecordCost()### Безопасность
-deps: Next.js 16.1.6 → 16.1.7 — исправлено 6 CVE: -Критически: CVE-2026-29057 (контрабанда HTTP-запросов через http-прокси) -Высокий: CVE-2026-27977, CVE-2026-27978 (WebSocket + действия сервера). -Средний: CVE-2026-27979, CVE-2026-27980, CVE-2026-jcc7.### 📁 New Files
| Файл | Цель | |
|---|---|---|
open-sse/handlers/search.ts |
Обработчик поиска с маршрутизацией до 5 провайдеров | |
open-sse/config/searchRegistry.ts |
Реестр провайдеров (аутентификация, стоимость, квота, TTL) | |
open-sse/services/searchCache.ts |
Кэш в памяти с объединением запросов | |
src/app/api/v1/search/route.ts |
Маршрут Next.js (POST + GET) | |
src/app/api/v1/search/analytics/route.ts |
API статистики поиска | |
src/app/(панель мониторинга)/dashboard/analytics/SearchAnalyticsTab.tsx |
Вкладка панели мониторинга аналитики | |
src/lib/db/migrations/007_search_request_type.sql |
Миграция БД | |
tests/unit/search-registry.test.mjs |
277 строк юнит-тестов | --- |
[2.7.0] — 2026-03-17
Sprint: функции, вдохновленные ClawRouter — флаг ToolCalling, многоязычное обнаружение намерений, откат на основе эталонных тестов, дедупликация запросов, подключаемая RouterStrategy, цены на Grok-4 Fast + GLM-5 + MiniMax M2.5 + Kimi K2.5.### ✨ New Models & Pricing
-feat(цена): xAI Grok-4 Fast — 0,20/0,50 доллара США за 1 млн токенов, задержка p50 1143 мс, поддерживается вызов инструментов -feat(цена): xAI Grok-4 (стандарт) — 0,20/1,50 доллара за 1 млн токенов, флагман рассуждений -feat(pricing): GLM-5 через Z.AI — 0,5$/1M, выходной контекст 128K -feat(цена): MiniMax M2.5 — «вход $0,30/1 млн», рассуждения + агентные задачи. -feat(pricing): DeepSeek V3.2 — обновленная цена 0,27/1,10 доллара США за 1 миллион долларов -feat(цены): Kimi K2.5 через Moonshot API — прямой доступ к Moonshot API -feat(providers): добавлен провайдер Z.AI (псевдоним zai) — семейство GLM-5 с выходом 128K.### 🧠 Routing Intelligence
-feat(registry): флаг toolCalling для каждой модели в реестре поставщика — теперь комбинации могут предпочитать/требовать модели, поддерживающие вызов инструментов. -feat(scoring): обнаружение многоязычных намерений для оценки AutoCombo — шаблоны сценариев/языков PT/ZH/ES/AR влияют на выбор модели в контексте запроса. -feat(fallback): цепочки откатов на основе эталонных тестов — данные о реальной задержке (p50 из comboMetrics), используемые для динамического изменения порядка приоритета отката. -feat(dedup): дедупликация запросов через хеш контента — 5-секундное окно идемпотентности предотвращает повторные попытки клиентов повторять вызовы провайдера. -feat(router): подключаемый интерфейс RouterStrategy в autoCombo/routerStrategy.ts — пользовательскую логику маршрутизации можно внедрить без изменения ядра.### 🔧 MCP Server Improvements
-feat(mcp): 2 новые схемы расширенных инструментов: omniroute_get_provider_metrics (p50/p95/p99 для каждого провайдера) и omniroute_explain_route (объяснение решения о маршрутизации). -feat(mcp): обновлены области аутентификации инструмента MCP — добавлена область metrics:read для инструментов метрик поставщика. -feat(mcp): omniroute_best_combo_for_task теперь принимает параметр languageHint для многоязычной маршрутизации.### 📊 Observability
-feat(metrics): comboMetrics.ts дополнен отслеживанием процентилей задержки в реальном времени для каждого провайдера/учетной записи. -feat(health): Health API (/api/monitoring/health) теперь возвращает поля p50Latency и errorRate для каждого провайдера. -feat(usage): миграция истории использования для отслеживания задержки для каждой модели.### 🗄️ DB Migrations
-feat(migrations): новый столбец latency_p50 в таблице combo_metrics — нулевой, безопасный для существующих пользователей.### 🐛 Bug Fixes / Closures
-close(#411): разрешение хешированного модуля Better-sqlite3 в Windows — исправлено в версии 2.6.10 (f02c5b5) -close(#409): завершение чата GitHub Copilot завершается неудачно с моделями Claude при прикрепленных файлах — исправлено в версии 2.6.9 (838f1d6). -закрыть(#405): дубликат #411 — устранено.## [2.6.10] — 2026-03-17
Исправление Windows: предварительно созданная загрузка Better-sqlite3 без node-gyp/Python/MSVC (#426).### 🐛 Bug Fixes
-fix(install/#426): в Windows npm install -g omniroute приводил к сбою, поскольку better_sqlite3.node не является допустимым приложением Win32, поскольку прилагаемый собственный двоичный файл был скомпилирован для Linux. ДобавляетСтратегию 1.5в scripts/postinstall.mjs: использует @mapbox/node-pre-gyp install --fallback-to-build=false (входит в состав better-sqlite3) для загрузки корректного предварительно собранного двоичного файла для текущей ОС/архитектуры без необходимости использования каких-либо инструментов сборки (без Node-gyp, без Python, без MSVC). Возвращается к npm rebuild только в случае сбоя загрузки. Добавляет сообщения об ошибках, специфичные для платформы, с четкими инструкциями по исправлению вручную.---
[2.6.9] — 2026-03-17
Исправления CI (t11 для любого бюджета), исправление ошибки № 409 (вложения файлов через Copilot+Claude), исправление рабочего процесса выпуска.### 🐛 Bug Fixes
-fix(ci): удалить слово «любой» из комментариев в openai-responses.ts и chatCore.ts, которые не прошли проверку бюджета t11 any (ложное срабатывание из комментариев подсчета регулярных выражений) -fix(chatCore): нормализовать неподдерживаемые типы частей контента перед пересылкой поставщикам (#409 — Курсор отправляет {type:"file"}, когда файлы .md прикреплены; Copilot и другие поставщики, совместимые с OpenAI, отклоняют сообщение с указанием «тип должен быть либо «image_url», либо «text»; исправление преобразует блоки «file»/«document» в «text» и удаляет неизвестные типы)### 🔧 Workflow
-chore(generate-release): добавьте ПРАВИЛО ATOMIC COMMIT — обновление версии (npm version patch) ДОЛЖНО произойти перед фиксацией файлов функций, чтобы гарантировать, что тег всегда указывает на фиксацию, содержащую все изменения версии вместе.---
[2.6.8] — 2026-03-17
Sprint: комбинация в качестве агента (системная подсказка + фильтр инструментов), защита кэширования контекста, автоматическое обновление, подробные журналы, MITM Kiro IDE.### 🗄️ DB Migrations (zero-breaking — safe for existing users)
-005_combo_agent_fields.sql: ALTER TABLE комбо ADD COLUMN system_message TEXT DEFAULT NULL, tool_filter_regex TEXT DEFAULT NULL, context_cache_protection INTEGER DEFAULT 0 -006_detailed_request_logs.sql: новая таблица request_detail_logs с триггером кольцевого буфера на 500 записей, включается через переключатель настроек.### Возможности
-feat(combo): переопределение системного сообщения для каждой комбинации (#399 — поле system_message заменяет или вводит системное приглашение перед пересылкой провайдеру) -feat(combo): регулярное выражение фильтра инструментов для каждой комбинации (#399 — tool_filter_regex сохраняет только инструменты, соответствующие шаблону; поддерживает форматы OpenAI + Anthropic) -feat(combo): защита кэширования контекста (#401 — context_cache_protection помечает ответы <omniModel>provider/model</omniModel> и закрепляет модель для непрерывности сеанса) -feat(settings): автоматическое обновление через настройки (#320 — GET /api/system/version + POST /api/system/update — проверяет реестр npm и обновления в фоновом режиме с перезапуском pm2) -feat(logs): подробные журналы запросов (#378 — захватывает все тела конвейера на 4 этапах: запрос клиента, преобразованный запрос, ответ поставщика, ответ клиента — переключатель включения, обрезка 64 КБ, кольцевой буфер на 500 записей) -feat(mitm): профиль MITM Kiro IDE (#336 — src/mitm/targets/kiro.ts нацелен на api.anthropic.com, повторно использует существующую инфраструктуру MITM)---
[2.6.7] — 2026-03-17
Спринт: улучшения SSE, локальные расширения провайдера_узлов, реестр прокси, исправления сквозной передачи Клода.### Возможности
-feat(health): фоновая проверка работоспособности локальных provider_nodes с экспоненциальной задержкой (30 с → 300 с) и Promise.allSettled во избежание блокировки (#423, @Regis-RCR). -feat(embeddings): маршрут /v1/embeddings к локальным provider_nodes — buildDynamicEmbeddingProvider() с проверкой имени хоста (#422, @Regis-RCR) -feat(audio): маршрутизация TTS/STT к локальным provider_nodes — buildDynamicAudioProvider() с защитой SSRF (#416, @Regis-RCR) -feat(proxy): реестр прокси, API управления и обобщение квот (#429, @Regis-RCR).### 🐛 Bug Fixes
-fix(sse): удаление полей, специфичных для Клода (метаданные, антропная_версия), когда цель совместима с OpenAI (#421, @prakersh) -fix(sse): Извлечение использования Claude SSE (input_tokens, output_tokens, токены кэша) в режиме сквозного потока (#420, @prakersh) -fix(sse): создание резервного call_id для вызовов инструментов с отсутствующими/пустыми идентификаторами (#419, @prakersh). -fix(sse): переход от Клода к Клоду — передняя часть тела полностью нетронута, повторной трансляции нет (#418, @prakersh) -fix(sse): фильтрация потерянных элементов tool_result после сжатия контекста Claude Code, чтобы избежать ошибок 400 (#417, @prakersh). -fix(sse): пропускать вызовы инструментов с пустым именем в переводчике API ответов, чтобы предотвратить бесконечные циклы placeholder_tool (#415, @prakersh) -fix(sse): удаление пустых блоков текстового содержимого перед переводом (#427, @prakersh) -fix(api): добавьте refreshable: true в тестовую конфигурацию Claude OAuth (#428, @prakersh).### 📦 Dependencies
— Увеличьте vitest, @vitest/* и связанные с ними devDependency (#414, @dependabot).---
[2.6.6] — 2026-03-17
Исправление: совместимость Turbopack/Docker — удалите протокол
node:из всего импортаsrc/.### 🐛 Bug Fixes
-fix(build): удален префикс протокола node: из операторов import в 17 файлах в src/. Импорт node:fs, node:path, node:url, node:os и т. д. приводил к тому, что в сборках Turbopack (Next.js 15 Docker) и при обновлениях старых глобальных установок npm возникла ошибка в файле Ecmascript. Затронутые файлы: «migrationRunner.ts», «core.ts», «backup.ts», «prompts.ts», «dataPaths.ts» и еще 12 в «src/app/api/» и «src/lib/». -chore(workflow): обновлен generate-release.md, чтобы сделать синхронизацию Docker Hub и развертывание двух VPSобязательнымишагами в каждом выпуске.---
[2.6.5] — 2026-03-17
Sprint: фильтрация параметров модели рассуждения, исправление ошибки 404 локального поставщика, поставщик Kilo Gateway, изменения в зависимостях.### ✨ New Features
-feat(api): добавленKilo Gateway(api.kilo.ai) в качестве нового поставщика ключей API (псевдоним kg) — более 335 моделей, 6 бесплатных моделей, 3 модели автоматической маршрутизации (kilo-auto/frontier, kilo-auto/balanced, kilo-auto/free). Сквозные модели поддерживаются через конечную точку /api/gateway/models. (PR № 408 от @Regis-RCR)### 🐛 Bug Fixes
-fix(sse): удалить неподдерживаемые параметры для моделей рассуждений (o1, o1-mini, o1-pro, o3, o3-mini). Модели семейства o1/o3 отклоняют temperature, top_p, Frequency_penalty, presence_penalty, logprobs, top_logprobs и n с помощью HTTP 400. Параметры теперь удаляются на уровне chatCore перед пересылкой. Использует декларативное поле unsupportedParams для каждой модели и предварительно вычисленную карту O(1) для поиска. (PR № 412 от @Regis-RCR) -fix(sse): локальный поставщик 404 теперь приводит к**блокировке только модели (5 секунд)**вместо блокировки на уровне соединения (2 минуты). Когда локальный сервер вывода (Ollama, LM Studio, oMLX) возвращает 404 для неизвестной модели, соединение остается активным, и другие модели немедленно продолжают работать. Также исправлена существовавшая ранее ошибка, из-за которой модель не передавалась в markAccountUnavailable(). Локальные провайдеры обнаружены по имени хоста (localhost, 127.0.0.1,::1, расширяемый через env var LOCAL_HOSTNAMES). (PR № 410 от @Regis-RCR)### 📦 Dependencies
better-sqlite312.6.2 → 12.8.0undici7.24.2 → 7.24.4https-proxy-agent7 → 8агент-база7 → 8---
[2.6.4] — 2026-03-17
🐛 Bug Fixes
-исправлено(поставщики): удалены несуществующие названия моделей у 5 поставщиков: -gemini/gemini-cli: удалены gemini-3.1-pro/flash и gemini-3-*-preview (не существуют в Google API v1beta); заменено на «gemini-2.5-pro», «gemini-2.5-flash», «gemini-2.0-flash», «gemini-1.5-pro/flash» -антигравитация: удалены gemini-3.1-pro-high/low и gemini-3-flash (неверные внутренние псевдонимы); заменены реальными моделями 2.x -github (Copilot): удалены gemini-3-flash-preview и gemini-3-pro-preview; заменен на «gemini-2.5-flash» -nvidia: исправлено nvidia/llama-3.3-70b-instruct → meta/llama-3.3-70b-instruct (NVIDIA NIM использует пространство имен meta/ для мета-моделей); добавлены nvidia/llama-3.1-70b-instruct и nvidia/llama-3.1-405b-instruct. -fix(db/combo): обновлена комбинация free-stack на удаленной базе данных: удален qw/qwen3-coder-plus (токен обновления с истекшим сроком действия), исправлен nvidia/llama-3.3-70b-instruct → nvidia/meta/llama-3.3-70b-instruct, исправлен gemini/gemini-3.1-flash → gemini/gemini-2.5-flash, добавлен if/deepseek-v3.2---
[2.6.3] — 2026-03-16
Sprint: хеш-полоса zod/pino встроена в конвейер сборки, добавлен синтетический провайдер, исправлен путь VPS PM2.### 🐛 Bug Fixes
-fix(build): хеш-полоса Turbopack теперь запускается во времякомпиляциидля ВСЕХ пакетов, а не только better-sqlite3. Шаг 5.6 в prepublish.mjs просматривает каждый .js в app/.next/server/ и удаляет 16-значный шестнадцатеричный суффикс из любого хешированного require(). Исправляет zod-dcb22c..., pino-... и т. д. MODULE_NOT_FOUND при глобальных установках npm. Закрывается № 398 -исправление(развертывание): PM2 на обоих VPS указывал на устаревшие каталоги git-clone. Перенастроен на app/server.js в глобальном пакете npm. Обновлен рабочий процесс /deploy-vps для использования npm package + scp (реестр npm отклоняет пакеты размером 299 МБ).### Возможности
-feat(provider): Synthetic (synthetic.new) — ориентированный на конфиденциальность вывод, совместимый с OpenAI. passthroughModels: true для динамического каталога моделей HuggingFace. Начальные модели: Kimi K2.5, MiniMax M2.5, GLM 4.7, DeepSeek V3.2. (PR № 404 от @Regis-RCR)### 📋 Issues Closed
-закрытие #398: регрессия хэша npm — исправлено хэш-полосой во время компиляции в предварительной публикации. -triage #324: снимок экрана с ошибкой без шагов — запрошены детали воспроизведения.---
[2.6.2] — 2026-03-16
Спринт: хеширование модуля полностью исправлено, 2 запроса на добавление объединены (фильтр инструментов Anthropic + пользовательские пути к конечным точкам), добавлен поставщик Alibaba Cloud DashScope, закрыты 3 устаревшие проблемы.### 🐛 Bug Fixes
-fix(build): расширена хеш-полоса externals веб-пакета, чтобы охватить ВСЕ serverExternalPackages, а не только better-sqlite3. Next.js 16 Turbopack хэширует zod, pino и любой другой внешний серверный пакет в имена типа zod-dcb22c6336e0bc69, которые не существуют в node_modules во время выполнения. Регулярное выражение HASH_PATTERN теперь удаляет 16-символьный суффикс и возвращает имя базового пакета. Также добавлен NEXT_PRIVATE_BUILD_WORKER=0 в prepublish.mjs для усиления режима веб-пакета, а также сканирование после сборки, которое сообщает обо всех оставшихся хешированных ссылках. (№396, №398, ПР №403) -исправление(чат): имена инструментов в антропном формате («tool.name» без оболочки «.function») автоматически удалялись фильтром пустых имен, представленным в #346. LiteLLM проксирует запросы с префиксом anthropic/ в формате API Anthropic Messages, в результате чего все инструменты фильтруются, а Anthropic возвращает 400: Tool_choice.any можно указать только при предоставлении инструментов. Исправлено путем возврата к «tool.name», когда «tool.function.name» отсутствует. Добавлено 8 регрессионных модульных тестов. (ПР №397)### Возможности
-feat(api): пользовательские пути к конечным точкам для узлов поставщиков, совместимых с OpenAI. Настройте «chatPath» и «modelsPath» для каждого узла (например, «/v4/chat/completions») в пользовательском интерфейсе подключения к поставщику. Включает миграцию БД (003_provider_node_custom_paths.sql) и очистку URL-пути (без обхода .., должно начинаться с /). (ПР №400) -feat(поставщик): Alibaba Cloud DashScope добавлен в качестве поставщика, совместимого с OpenAI. Международная конечная точка: dashscope-intl.aliyuncs.com/совместимый-mode/v1. 12 моделей: qwen-max, qwen-plus, qwen-turbo, qwen3-coder-plus/flash, qwq-plus, qwq-32b, qwen3-32b, qwen3-235b-a22b. Аутентификация: ключ API носителя.### 📋 Issues Closed
-закрыть #323: ошибка подключения к линии [object Object] — исправлено в версии 2.3.7; пользователю поручено выполнить обновление с версии 2.2.9 -закрыть #337: отслеживание кредитов Kiro — реализовано в версии 2.5.5 (#381); указал пользователю на Панель управления → Использование -triage #402: ARM64 macOS DMG поврежден — запрошена версия macOS, точная ошибка и рекомендован обходной путь xattr -d com.apple.quarantine---
[2.6.1] — 2026-03-15
Критическое исправление при запуске: глобальная установка npm версии 2.6.0 завершалась сбоем с ошибкой 500 из-за ошибки хеширования имени модуля Turbopack/webpack в инструментальном хуке Next.js 16.### 🐛 Bug Fixes
-fix(build): заставить better-sqlite3 всегда запрашиваться по точному имени пакета в пакете сервера веб-пакета. Next.js 16 скомпилировал инструментарий в отдельный фрагмент и выдал require('better-sqlite3-<hash>') — хешированное имя модуля, которого нет в node_modules — даже несмотря на то, что пакет был указан в serverExternalPackages. В конфигурацию веб-пакета сервера добавлена явная функция externals, поэтому сборщик всегда выдает require('better-sqlite3'), разрешая запуск 500 Internal Server Error при чистых глобальных установках. (№394, ПР №395)### 🔧 CI
-ci: добавлен workflow_dispatch в npm-publish.yml с защитой синхронизации версий для ручных триггеров (#392). -ci: добавлен workflow_dispatch в docker-publish.yml, обновлены действия GitHub до последних версий (# 392).---
[2.6.0] - 2026-03-15
Спринт по разрешению проблем: исправлено 4 ошибки, улучшен пользовательский интерфейс журналов, добавлено отслеживание кредитов Kiro.### 🐛 Bug Fixes
-fix(media): ComfyUI и SD WebUI больше не отображаются в списке поставщиков медиа-страниц, если они не настроены — извлекает /api/providers при монтировании и скрывает локальных поставщиков без подключений (#390). -fix(auth): циклический перебор больше не осуществляет повторный выбор учетных записей с ограниченной скоростью сразу после восстановления — backoffLevel теперь используется в качестве основного ключа сортировки при ротации LRU (#340). -fix(oauth): Qoder (и другие провайдеры, которые перенаправляются на свой собственный пользовательский интерфейс) больше не оставляют модальное окно OAuth зависающим на «Ожидание авторизации» — детектор закрытия всплывающего окна автоматически переходит в режим ручного ввода URL (#344). -исправление(журналы): таблица журнала запросов теперь доступна для чтения в облегченном режиме — значки состояния, количество токенов и комбинированные теги используют адаптивные классы цветов dark: (#378).### Возможности
-feat(kiro): отслеживание кредитов Kiro добавлено в сборщик данных об использовании — запросы getUserCredits из конечной точки AWS CodeWhisperer (#337).### 🛠 Chores
-chore(tests): выровнены test:plan3, test:fixes, test:security для использования того же загрузчика tsx/esm, что и npm test — устраняет ложноотрицательные результаты разрешения модуля в целевых запусках (PR № 386).---
[2.5.9] - 2026-03-15
Исправление встроенной сквозной передачи Кодекса + усиление проверки тела маршрута.### 🐛 Bug Fixes
-fix(codex): сохранение встроенного API-интерфейса ответов для клиентов Codex — позволяет избежать ненужных мутаций перевода (PR № 387). -fix(api): проверка тел запросов на маршрутах ценообразования/синхронизации и маршрутизации задач — предотвращает сбои из-за неверных входных данных (PR № 388). -fix(auth): секреты JWT сохраняются при перезапуске через src/lib/db/secrets.ts — устраняет ошибку 401 после перезапуска pm2 (PR #388)---
[2.5.8] - 2026-03-15
Исправление сборки: восстановление подключения к VPS, нарушенного из-за неполной публикации v2.5.7.### 🐛 Bug Fixes
-fix(build): в scripts/prepublish.mjs по-прежнему используется устаревший флаг --webpack, из-за чего автономная сборка Next.js завершается автоматически — публикация npm завершена без app/server.js, что нарушает развертывание VPS---
[2.5.7] - 2026-03-15
Исправлены ошибки обработки медиа-площадки.### 🐛 Bug Fixes
-исправлено(медиа): ложное срабатывание транскрипции «Требуется ключ API», когда звук не содержит речи (музыка, тишина) — вместо этого теперь отображается «Речь не обнаружена». -fix(media): upstreamErrorResponse в audioTranscription.ts и audioSpeech.ts теперь возвращает правильный JSON ({error:{message}}), что позволяет правильно обнаруживать ошибки учетных данных 401/403 в MediaPageClient. -fix(media): parseApiError теперь обрабатывает поле err_msg Deepgram и обнаруживает ключ API в сообщениях об ошибках для точной классификации ошибок учетных данных.---
[2.5.6] - 2026-03-15
Критические исправления безопасности/авторизации: нарушение антигравитации OAuth + сеансы JWT терялись после перезапуска.### 🐛 Bug Fixes
-fix(oauth) #384: Антигравитационный Google OAuth теперь правильно отправляет client_secret в конечную точку токена. Резервным вариантом для ANTIGRAVITY_OAUTH_CLIENT_SECRET была пустая строка, которая является ложной, поэтому client_secret никогда не включался в запрос, вызывая ошибки ``client_secret is Missing'для всех пользователей без специальной переменной окружения. Закрывается #383. -**fix(auth) #385**:JWT_SECRET теперь сохраняется в SQLite (namespace='secrets'`) при первом генерации и перезагружается при последующих запусках. Раньше при каждом запуске процесса генерировался новый случайный секрет, что делало недействительными все существующие файлы cookie/сессии после любого перезапуска или обновления. Влияет как на JWT_SECRET, так и на API_KEY_SECRET. Закрывается #382.---
[2.5.5] - 2026-03-15
Исправление дедупликации списка моделей, усиление автономной сборки Electron и отслеживание кредитов Kiro.### 🐛 Bug Fixes
-fix(models) #380: GET /api/models теперь включает псевдонимы поставщика при построении фильтра активного поставщика — модели для claude (псевдоним cc) и github (псевдоним gh) всегда отображались независимо от того, было ли настроено соединение, поскольку ключи PROVIDER_MODELS являются псевдонимами, но соединения с БД хранятся под идентификаторами поставщика. Исправлено путем расширения идентификатора каждого активного провайдера, включив в него его псевдоним через PROVIDER_ID_TO_ALIAS. Закрывается #353. -fix(electron) #379: новые scripts/prepare-electron-standalone.mjs создают специальный пакет /.next/electron-standalone перед упаковкой Electron. Прерывается с явной ошибкой, если node_modules является символической ссылкой (построитель электронных средств будет отправлять зависимость времени выполнения на машину сборки). Кросс-платформенная очистка путей через path.basename. Автор @kfiramar.### ✨ New Features
-feat(kiro) #381: отслеживание кредитного баланса Kiro — конечная точка использования теперь возвращает данные о кредитах для учетных записей Kiro путем вызова codewhisperer.us-east-1.amazonaws.com/getUserCredits (та же конечная точка, которую Kiro IDE использует внутри себя). Возвращает оставшиеся кредиты, общую сумму, дату продления и уровень подписки. Закрывается #337.## [2.5.4] - 2026-03-15
Исправление запуска регистратора, исправление безопасности загрузки при входе в систему и повышение надежности dev HMR. Укреплена инфраструктура CI.### 🐛 Bug Fixes (PRs #374, #375, #376 by @kfiramar)
-fix(logger) #376: Восстановить путь к регистратору транспорта pino — formatters.level в сочетании с transport.targets отклоняется pino. Конфигурации с поддержкой транспорта теперь удаляют средство форматирования уровня с помощью getTransportCompatibleConfig(). Также исправлено сопоставление числовых уровней в /api/logs/console: 30→info, 40→warn, 50→error (сдвинуто на единицу). -fix(login) #375: страница входа теперь загружается из общедоступной конечной точки /api/settings/require-login вместо защищенной /api/settings. В настройках, защищенных паролем, страница предварительной аутентификации получала ошибку 401 и без необходимости возвращалась к безопасным настройкам по умолчанию. Публичный маршрут теперь возвращает все метаданные начальной загрузки («requireLogin», «hasPassword», «setupComplete») с консервативным возвратом 200 в случае ошибки. -fix(dev) #374: добавьте localhost и 127.0.0.1 в allowedDevOrigins в next.config.mjs — веб-сокет HMR блокировался при доступе к приложению через адрес обратной связи, вызывая повторяющиеся предупреждения о перекрестных источниках.### 🔧 CI & Infrastructure
-Исправление ESLint OOM: eslint.config.mjs теперь игнорирует vscode-extension/**, electron/**, docs/**, app/.next/** и clipr/** — ESLint аварийно завершал работу с OOM кучи JS при сканировании двоичных объектов VS Code и скомпилированных фрагментов. -Исправление модульного теста: удалено устаревшее ALTER TABLEProvider_connections ADD COLUMN "group" из 2 тестовых файлов — столбец теперь является частью базовой схемы (добавлено в #373), вызывая SQLITE_ERROR: повторяющееся имя столбца при каждом запуске CI. -Перехват предварительной фиксации: добавлен npm run test:unit в .husky/pre-commit — модульные тесты теперь блокируют неработающие коммиты до того, как они достигнут CI.## [2.5.3] - 2026-03-14
Критические исправления: миграция схемы БД, загрузка среды при запуске, очистка состояния ошибок поставщика и исправление всплывающей подсказки i18n. Улучшение качества кода после каждого PR.### 🐛 Bug Fixes (PRs #369, #371, #372, #373 by @kfiramar)
-fix(db) #373: добавление столбца provider_connections.group в базовую схему + обратная миграция для существующих баз данных — столбец использовался во всех запросах, но отсутствовал в определении схемы. -fix(i18n) #371: Замените несуществующий ключ t("deleteConnection") на существующий ключ providers.delete— исправляет ошибку выполненияMISSING_MESSAGE: поставщики.deleteConnection на странице сведений о поставщике. -**fix(auth) #372**: удаление устаревших метаданных ошибок (errorCode, lastErrorType, lastErrorSource) из учетных записей провайдеров после подлинного восстановления — ранее восстановленные учетные записи продолжали отображаться как неудавшиеся. -**fix(startup) #369**: унифицировать загрузку env в npm run start, run-standalone.mjsи Electron для соблюдения приоритетаDATA_DIR/.env → ~/.omniroute/.env → ./.env— предотвращает создание новогоSTORAGE_ENCRYPTION_KEY` в существующей зашифрованной базе данных.### 🔧 Code Quality
- Документированные шаблоны
result.successиresponse?.okвauth.ts(оба намерены, теперь объяснены) - Нормализован
overridePath?.trim()вelectron/main.jsдля соответствияbootstrap-env.mjs - Добавлен комментарий к порядку слияния
preferredEnvпри запуске Electron.
Политика квотирования учетных записей Кодекса с автоматической ротацией, быстрым переключением уровней, моделью gpt-5.4 и исправлением меток аналитики.### ✨ New Features (PRs #366, #367, #368)
-Политика квот Кодекса (PR № 366): Окно квоты на 5 часов в неделю для каждой учетной записи переключается на панели управления поставщика. Учетные записи автоматически пропускаются, когда включенные окна достигают порога 90 %, и повторно допускаются после resetAt. Включает quotaCache.ts с функцией получения статуса без побочных эффектов. -Переключение быстрого уровня Кодекса (PR № 367): Панель управления → Настройки → Уровень обслуживания Кодекса. Выключенный по умолчанию переключатель добавляет service_tier: "flex" только для запросов Кодекса, что снижает затраты примерно на 80%. Полный стек: вкладка пользовательского интерфейса + конечная точка API + исполнитель + переводчик + восстановление при запуске. -Модель gpt-5.4 (PR № 368): добавляет cx/gpt-5.4 и codex/gpt-5.4 в реестр моделей Кодекса. Регрессионный тест включен.### 🐛 Bug Fixes
-исправление №356: диаграммы аналитики (основные поставщики, по учетным записям, разбивка поставщиков) теперь отображают удобочитаемые имена/метки поставщиков вместо необработанных внутренних идентификаторов для поставщиков, совместимых с OpenAI.
Основной выпуск: стратегия строго случайной маршрутизации, управление доступом к ключам API, группы подключений, внешняя синхронизация цен, а также исправления критических ошибок в моделях мышления, комбинированном тестировании и проверке названий инструментов.### ✨ New Features (PRs #363 & #365)
-Стратегия строго случайной маршрутизации: колода Фишера-Йейтса перемешивается с гарантией отсутствия повторения и сериализацией мьютексов для одновременных запросов. Независимые колоды для каждой комбинации и для каждого провайдера. -Управление доступом к ключам API: allowedConnections (ограничивает соединения, которые может использовать ключ), is_active (включение/отключение ключа с помощью 403), accessSchedule (контроль доступа по времени), переключатель autoResolve, переименование ключей через PATCH. -Группы подключений: группируйте подключения поставщиков по средам. Представление «Гармошка» на странице «Ограничения» с сохранением localStorage и интеллектуальным автоматическим переключением. -Внешняя синхронизация цен (LiteLLM): трехуровневое разрешение цен (переопределяет пользователь → синхронизируется → значения по умолчанию). Подтвердите свое согласие через PRICING_SYNC_ENABLED=true. Инструмент MCP omniroute_sync_pricing. 23 новых испытания. -i18n: 30 языков обновлены с использованием строго случайной стратегии и строк управления ключами API. pt-BR полностью переведен.### 🐛 Bug Fixes
-исправление №355: время простоя потока увеличено с 60 до 300 с — предотвращает прерывание моделей расширенного мышления (claude-opus-4-6, o3 и т. д.) во время длительных фаз рассуждения. Настраивается через STREAM_IDLE_TIMEOUT_MS. -исправление №350: Комбинированный тест теперь обходит REQUIRE_API_KEY=true с использованием внутреннего заголовка и универсально использует формат, совместимый с OpenAI. Таймаут увеличен с 15 до 20 секунд. -исправление №346: инструменты с пустым function.name (пересланным Claude Code) теперь фильтруются до того, как вышестоящие поставщики получат их, предотвращая ошибки «Неверный ввод[N].name: пустая строка».### 🗑️ Closed Issues
-#341: раздел отладки удален — заменены /dashboard/logs и /dashboard/health.
Поддержка циклического перебора ключей API для настроек поставщика с несколькими ключами, а также подтверждение маршрутизации с использованием подстановочных знаков и уже существующей смены окон квот.### ✨ New Features
-Кругловой перебор ключей API (T07): соединения провайдера теперь могут содержать несколько ключей API (Редактировать соединение → Дополнительные ключи API). Запросы чередуются между первичными и дополнительными ключами через providerSpecificData.extraApiKeys[]. Ключи хранятся в памяти и индексируются для каждого соединения — никаких изменений схемы БД не требуется.### 📝 Already Implemented (confirmed in audit)
-Маршрутизация модели с подстановочными знаками (T13): wildcardRouter.ts с сопоставлением подстановочных знаков в стиле glob (gpt*, claude-?-sonnet и т. д.) уже интегрирован в model.ts с ранжированием специфичности. -Прокручивание окна квоты (T08): accountFallback.ts:isModelLocked() уже автоматически перемещает окно — если Date.now() > enter.until, блокировка немедленно удаляется (без устаревшей блокировки).
Доработка пользовательского интерфейса, дополнения к стратегии маршрутизации и корректная обработка ошибок для ограничения использования.### ✨ New Features
-Стратегии маршрутизации «Fill-First» и P2C: добавлены «Fill-First» (освобождение квоты перед тем, как двигаться дальше) и «p2c» (выбор «сила двух вариантов с низкой задержкой») в комбинированное средство выбора стратегии с полными навигационными панелями и цветными значками. -Предустановленные модели бесплатного стека: создание комбинации с шаблоном Free Stack теперь автоматически заполняет 7 лучших в своем классе моделей бесплатных поставщиков (Gemini CLI, Kiro, Qoder×2, Qwen, NVIDIA NIM, Groq). Пользователи просто активируют провайдеров и сразу же получают комбо стоимостью 0 долларов в месяц. -Более широкое модальное комбо: модальное окно создания/редактирования комбо теперь использует max-w-4xl для удобного редактирования больших комбо.### 🐛 Bug Fixes
-Страница ограничений HTTP 500 для Codex и GitHub: getCodexUsage() и getGitHubUsage() теперь возвращают удобное для пользователя сообщение, когда поставщик возвращает 401/403 (токен с истекшим сроком действия), вместо того, чтобы выдавать и вызывать ошибку 500 на странице ограничений. -MaintenanceBanner ложное срабатывание: баннер больше не отображает ложное сообщение «Сервер недоступен» при загрузке страницы. Исправлено путем вызова checkHealth() сразу при монтировании и удаления устаревшего закрытия show-state. -Подсказки для значков поставщиков: кнопки редактирования (карандаш) и удаления значков в строке подключения к провайдеру теперь имеют встроенные всплывающие подсказки в формате HTML — все 6 значков действий теперь самодокументированы.
Множество улучшений, связанных с анализом проблем сообщества, поддержкой новых поставщиков, исправлениями ошибок в отслеживании токенов, маршрутизации моделей и надежности потоковой передачи.### ✨ New Features
-Интеллектуальная маршрутизация с учетом задач (T05): автоматический выбор модели на основе типа контента запроса — кодирование → deepseek-chat, анализ → Gemini-2.5-pro, видение → gpt-4o, суммирование → Gemini-2.5-flash. Настраивается через настройки. Новый API GET/PUT/POST /api/settings/task-routing. -Поставщик HuggingFace: добавлен HuggingFace Router в качестве OpenAI-совместимого провайдера с Llama 3.1 70B/8B, Qwen 2.5 72B, Mistral 7B, Phi-3.5 Mini. -Поставщик Vertex AI: добавлен поставщик Vertex AI (Google Cloud) с Gemini 2.5 Pro/Flash, Gemma 2 27B, Claude через Vertex. -Загрузка файлов игровой площадки: загрузка аудио для транскрипции, загрузка изображений для моделей машинного зрения (автоматическое определение по названию модели), встроенный рендеринг изображений для получения результатов генерации изображений. -Визуальная обратная связь при выборе модели: уже добавленные модели в средстве выбора комбо теперь имеют зеленый значок ✓ — предотвращает повторную путаницу. -Совместимость с Qwen (PR № 352): обновлены настройки пользовательского агента и отпечатков пальцев CLI для совместимости с поставщиком Qwen. -Управление состоянием циклического перебора (PR № 349): улучшена логика циклического перебора для обработки исключенных учетных записей и правильного поддержания состояния ротации. -Пользовательский интерфейс буфера обмена (PR № 360): усиленные операции с буфером обмена с резервным копированием для незащищенных контекстов; Улучшения нормализации инструмента Claude.### 🐛 Bug Fixes
-Исправление №302 — OpenAI SDKstream=False отбрасывает Tool_calls: Согласование заголовка T01 Accept больше не приводит к принудительной потоковой передаче, когда body.stream явно имеет значение false. При использовании OpenAI Python SDK в непотоковом режиме вызывало автоматическое удаление Tool_calls. -Исправление №73 — Claude Haiku перенаправляется на OpenAI без префикса провайдера: модели claude-*, отправленные без префикса провайдера, теперь корректно маршрутизируются к провайдеру antigravity (Anthropic). Также добавлена эвристика gemini-*/gemma-* → gemini. -Исправление №74 — счетчик токенов всегда равен 0 для потоковой передачи Антигравитации/Клода: событие SSE message_start, которое переносит input_tokens, не анализировалось функцией extractUsage(), в результате чего все счетчики входных токенов уменьшались. Отслеживание токенов ввода/вывода теперь корректно работает для потоковой передачи ответов. -Исправление № 180 — Дубликаты импорта моделей без обратной связи: «ModelSelectModal» теперь показывает ✓ зеленую подсветку для моделей, уже находящихся в комбо, что делает очевидным, что они уже добавлены. -Ошибки создания медиа-страницы: результаты изображений теперь отображаются как теги <img> вместо необработанного JSON. Результаты транскрипции отображаются в виде читаемого текста. При ошибках учетных данных вместо тихого сбоя отображается желтый баннер. -Кнопка обновления токена на странице поставщика: для поставщиков OAuth добавлен пользовательский интерфейс обновления токена вручную.### 🔧 Improvements
-Реестр поставщиков: HuggingFace и Vertex AI добавлены в providerRegistry.ts и providers.ts (интерфейс). -Кэш чтения: новый src/lib/db/readCache.ts для эффективного кэширования чтения БД. -Кэш квот: улучшен кеш квот с вытеснением на основе TTL.### 📦 Dependencies
dompurify→ 3.3.3 (ПР №347)undici→ 7.24.2 (ПР №348, №361)docker/setup-qemu-action→ v4 (PR № 342) —docker/setup-buildx-action→ v4 (PR № 343)### 📁 New Files
| Файл | Цель | |
|---|---|---|
open-sse/services/taskAwareRouter.ts |
Логика маршрутизации с учетом задач (7 типов задач) | |
src/app/api/settings/task-routing/route.ts |
API конфигурации маршрутизации задач | |
src/app/api/providers/[id]/refresh/route.ts |
Обновление токена OAuth вручную | |
src/lib/db/readCache.ts |
Эффективный кэш чтения БД | |
src/shared/utils/clipboard.ts |
Защищенный буфер обмена с резервным копированием | ## [2.4.1] - 2026-03-13 |
🐛 Fix
-Модальный режим комбо: Free Stack виден и заметен— Шаблон Free Stack был скрыт (четвертый в сетке из трех столбцов). Исправлено: перемещено в позицию 1, переключено на сетку 2x2, чтобы были видны все 4 шаблона, зеленая рамка + подсветка значка БЕСПЛАТНО.## [2.4.0] - 2026-03-13
Основной выпуск— экосистема Free Stack, обновленная игровая площадка для транскрипции, более 44 поставщиков, полная документация по уровню бесплатного пользования и улучшения пользовательского интерфейса по всем направлениям.### Возможности
-Комбо: шаблон бесплатного стека— новый четвертый шаблон «Бесплатный стек (0 долларов США)» с использованием циклического перебора через интерфейс командной строки Kiro + Qoder + Qwen + Gemini. Предлагает предварительно созданную комбинацию с нулевой стоимостью при первом использовании. -Медиа/Транскрипция: Deepgram по умолчанию— Deepgram (Nova 3, 200 долларов США бесплатно) теперь является поставщиком транскрипции по умолчанию. AssemblyAI (50 долларов бесплатно) и Groq Whisper (бесплатно навсегда) показаны с бесплатными кредитными значками. -README: раздел «Начать бесплатно»— новая таблица из 5 шагов, представленная в ранних версиях README, показывающая, как настроить ИИ с нулевой стоимостью за считанные минуты. -README: Комбинация бесплатной транскрипции— Новый раздел с предложениями комбинации Deepgram/AssemblyAI/Groq и бесплатными кредитными данными для каждого провайдера. -providers.ts: флаг hasFree— NVIDIA NIM, Cerebras и Groq отмечены значком hasFree и freeNote для пользовательского интерфейса провайдеров. -i18n: ключи templateFreeStack— комбинированный шаблон Free Stack переведен и синхронизирован на все 30 языков.## [2.3.16] - 2026-03-13
Документация
-README: 44+ провайдера— обновлены все 3 появления «36+ провайдеров» на «44+», что отражает фактическое количество кодовой базы (44 провайдера в файлеProviders.ts). -README: новый раздел «🆓 Бесплатные модели — что вы на самом деле получаете»— добавлена таблица из 7 поставщиков с ограничениями скорости для каждой модели для: Kiro (Claude без ограничений через AWS Builder ID), Qoder (5 моделей без ограничений), Qwen (4 модели без ограничений), Gemini CLI (180 тыс. в месяц), NVIDIA NIM (~40 об/мин для разработки навсегда), Cerebras (1 миллион токов в день / 60 тыс. TPM), Грок (30 об/мин / 14,4 тыс. об/мин). Включает комбинированную рекомендацию /usr/bin/bash Ultimate Free Stack. -README: обновлена таблица цен— добавлен Cerebras на уровень API KEY, исправлена NVIDIA с «1000 кредитов» на «dev-forever free», обновлено количество и названия моделей Qoder/Qwen. -README: модели Qoder 8→5(названия: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2) -README: модели Qwen 3→4(названия: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, Vision-model)## [2.3.15] - 2026-03-13
Возможности
-Панель автоматического комбинирования (приоритет уровня): добавлен 🏷️ Уровень в качестве метки 7-го фактора оценки в отображении разбивки факторов /dashboard/auto-combo — теперь видны все 7 факторов оценки авто-комбинирования. -i18n — раздел autoCombo: добавлено 20 новых ключей перевода для панели управления Auto-Combo («title», «status», «modePack», «providerScores», «factorTierPriority» и т. д.) во все 30 языковых файлов.## [2.3.14] - 2026-03-13
🐛 Bug Fixes
-Qoder OAuth (#339): восстановлено допустимое значение по умолчанию clientSecret — ранее это была пустая строка, приводившая к появлению «Неверных учетных данных клиента» при каждой попытке подключения. Публичные учетные данные теперь являются резервными по умолчанию (переопределяемыми с помощью env var QODER_OAUTH_CLIENT_SECRET). -Сервер MITM не найден (#335): prepublish.mjs теперь компилирует src/mitm/*.ts в JavaScript с помощью tsc перед копированием в пакет npm. Раньше копировались только необработанные файлы .ts — это означало, что server.js никогда не существовал в глобальных установках npm/Volta. -GeminiCLI отсутствует идентификатор проекта (#338): вместо того, чтобы выдавать серьезную ошибку 500, когда projectId отсутствует в сохраненных учетных данных (например, после перезапуска Docker), OmniRoute теперь регистрирует предупреждение и пытается выполнить запрос, возвращая значимую ошибку на стороне поставщика вместо сбоя OmniRoute. -Несоответствие электронной версии (#323): версия electron/package.json синхронизирована с 2.3.13 (было 2.0.13), поэтому двоичная версия рабочего стола соответствует пакету npm.### ✨ New Models (#334)
-Киро: claude-sonnet-4, claude-opus-4.6, deepseek-v3.2, minimax-m2.1, qwen3-coder-next, auto -Кодекс: gpt5.4### 🔧 Improvements
-Уровень оценки (API + проверка): добавлен tierPriority (вес 0,05) в схему Zod ScoringWeights и маршрут API combos/auto — 7-й фактор оценки теперь полностью принимается REST API и проверяется на входе. Вес стабильности изменен с «0,10» на «0,05», чтобы общая сумма оставалась равной «1,0».### ✨ New Features
-Подсчет многоуровневой квоты (авто-комбо): добавлен «tierPriority» в качестве 7-го фактора оценки — учетные записи с уровнями Ultra/Pro теперь предпочтительнее уровней Free при равенстве других факторов. Новые необязательные поля accountTier и quotaResetIntervalSecs в ProviderCandidate. Обновлены все 4 пакета режимов («быстрая доставка», «экономия», «качество прежде всего», «офлайн-удобство»). -Откат внутрисемейной модели (T5): когда модель недоступна (404/400/403), OmniRoute теперь автоматически возвращается к одноуровневым моделям из того же семейства, прежде чем возвращать ошибку (modelFamilyFallback.ts). -Настраиваемое время ожидания моста API: переменная env API_BRIDGE_PROXY_TIMEOUT_MS позволяет операторам настраивать время ожидания прокси-сервера (по умолчанию 30 секунд). Исправляет ошибки 504 при медленных ответах восходящего потока. (#332) -Звездная история: виджет star-history.com заменен на starchart.cc (?variant=adaptive) во всех 30 файлах README — адаптируется к светлой/темной теме, обновления в реальном времени.### 🐛 Bug Fixes
-Auth — первый пароль: переменная env INITIAL_PASSWORD теперь принимается при установке первого пароля панели управления. Использует timingSafeEqual для сравнения в постоянное время, предотвращая атаки по времени. (#333) -Усечение README: исправлен отсутствующий закрывающий тег </details> в разделе «Устранение неполадок», из-за которого GitHub переставал отображать все, что находится под ним (технический стек, документация, дорожная карта, участники). -pnpm install: удалено избыточное переопределение @swc/helpers из package.json, которое конфликтовало с прямой зависимостью, вызывая ошибки EOVERRIDE в pnpm. Добавлена конфигурация pnpm.onlyBuiltDependities. -Внедрение пути CLI (T12): добавлен валидатор isSafePath() в cliRuntime.ts для блокировки обхода пути и метасимволов оболочки в переменных окружения CLI_*_BIN. -CI: пакет package-lock.json восстановлен после удаления переопределения, чтобы исправить сбои npm ci в действиях GitHub.### 🔧 Improvements
-Формат ответа (T1): response_format (json_schema/json_object) теперь внедряется как системное приглашение для Клода, обеспечивая совместимость структурированного вывода. -Повтор 429 (T2): повторная попытка внутри URL-адреса для 429 ответов (2 попытки с задержкой 2 секунды) перед возвратом к следующему URL-адресу. -Заголовки Gemini CLI (T3): добавлены заголовки отпечатков пальцев User-Agent и X-Goog-Api-Client для совместимости с Gemini CLI. -Каталог цен (T9): добавлены цены на deepseek-3.1, deepseek-3.2 и qwen3-coder-next.### 📁 New Files
| Файл | Цель | |
|---|---|---|
open-sse/services/modelFamilyFallback.ts |
Определения модельных семейств и внутрисемейная резервная логика | ### Fixed |
-KiloCode: время ожидания проверки работоспособности килокода уже исправлено в версии 2.3.11. -OpenCode: добавление открытого кода в реестр cliRuntime с тайм-аутом проверки работоспособности 15 секунд. -OpenClaw / Cursor: время ожидания проверки работоспособности увеличено до 15 секунд для вариантов с медленным запуском. -VPS: установите пакеты droid и openclaw npm; активировать CLI_EXTRA_PATHS для kiro-cli -cliRuntime: добавлена регистрация инструмента открытого кода и увеличено время ожидания продолжения.## [2.3.11] - 2026-03-12
Fixed
-Проверка работоспособности KiloCode: увеличьте значение healthcheckTimeoutMs с 4000 мс до 15 000 мс — kilocode отображает баннер с логотипом ASCII при запуске, вызывая ложное сообщение healthcheck_failed в средах с медленным или холодным запуском.## [2.3.10] - 2026-03-12
Fixed
-Lint: исправлена ошибка check:any-budget:t11 — замените as Any на as Record<string,known> в OAuthModal.tsx (3 вхождения).### Docs
-CLI-TOOLS.md: Полное руководство по всем 11 инструментам CLI (claude, codex, Gemini, opencode, cline, kilocode, continue, kiro-cli, курсор, droid, openclaw). -i18n: CLI-TOOLS.md синхронизирован с 30 языками с переведенным заголовком и вступлением.## [2.3.8] - 2026-03-12
[2.3.9] - 2026-03-12
Added
-/v1/completions: новая устаревшая конечная точка завершения OpenAI — принимает как строку Prompt, так и массив сообщений, автоматически нормализуется в формат чата. -EndpointPage: теперь отображаются все 3 типа конечных точек, совместимых с OpenAI: завершение чата, API ответов и устаревшее завершение. -i18n: добавлено completionsLegacy/completionsLegacyDesc в 30 языковых файлов.### Fixed
-OAuthModal: исправлено отображение [object Object] при всех ошибках подключения OAuth — правильное извлечение .message из объектов ответа на ошибку во всех трёх вызовах throw new Error(data.error) (exchange, код устройства, авторизация).
– Затрагивает Cline, Codex, GitHub, Qwen, Kiro и всех других поставщиков OAuth.## [2.3.7] - 2026-03-12
Fixed
-Cline OAuth: добавьте decodeURIComponent перед декодированием Base64, чтобы коды аутентификации в URL-адресе из URL-адреса обратного вызова анализировались правильно, исправляя ошибки «неверный или просроченный код авторизации» при удаленных настройках (LAN IP). -Cline OAuth: mapTokens теперь заполняет name = firstName + LastName || email, чтобы в учетных записях Cline отображались настоящие имена пользователей вместо «Account #ID». -Имена учетных записей OAuth: все потоки обмена OAuth (обмен, опрос, обратный вызов опроса) теперь нормализуют name = email, когда имя отсутствует, поэтому каждая учетная запись OAuth показывает свой адрес электронной почты в качестве отображаемой метки на панели поставщиков. -Имена учетных записей OAuth: удален последовательный резервный вариант «Учетная запись N» в db/providers.ts — учетные записи без адреса электронной почты/имени теперь используют стабильную метку на основе идентификатора через getAccountDisplayName() вместо последовательного номера, который меняется при удалении учетных записей.## [2.3.6] - 2026-03-12
Fixed
-Тестовый пакет поставщика: исправлена схема Zod, позволяющая принимать providerId: null (интерфейс отправляет значение null для режимов без поставщика); неправильно возвращал «Неверный запрос» для всех пакетных тестов -Модальный режим тестирования поставщика: исправлено отображение [object Object] путем нормализации объектов ошибок API в строки перед рендерингом в setTestResults и ProviderTestResultsView -i18n: добавлены отсутствующие ключи cliTools.toolDescriptions.opencode, cliTools.toolDescriptions.kiro, cliTools.guides.opencode, cliTools.guides.kiro в en.json -i18n: синхронизировано 1111 отсутствующих ключей во всех 29 неанглоязычных файлах с использованием английских значений в качестве запасных вариантов.## [2.3.5] - 2026-03-11
Fixed
-@swc/helpers: добавлено постоянное исправление postinstall для копирования @swc/helpers в node_modules автономного приложения — предотвращает сбой MODULE_NOT_FOUND при глобальных установках npm.## [2.3.4] - 2026-03-10
Added
- Интеграция с несколькими поставщиками и улучшения информационной панели.