OmniRoute/docs/i18n/ru/CHANGELOG.md

297 KiB
Raw Blame History

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.messagesjson.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

-Исправление №709system-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 в 510 раз быстрее, чем прямые подключения. 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_tokensprompt_tokens и output_tokenscompletion_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_tokensprompt_tokens, output_tokenscompletion_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/mp4audio/mp4, автоматическое определение языка, пунктуация -TTS— исправлено отображение ошибки [object Object] для вложенных ошибок в стиле ElevenLabs. -Ограничения на загрузку— транскрипция мультимедиа увеличена до 2 ГБ (nginx client_max_body_size 2g + maxDuration=300)---

🔧 Infrastructure & Improvements

Sub2api Gap Analysis (T01T15 + T23T42)

-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 сохраняются. Миграция базы данных 008010 запускается автоматически при запуске.---

[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.tsvalidateEnvPath использовался перед инициализацией при запуске модуля с помощью 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 (завершено T01T15).### 🆕 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 — T01T15)

-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_result blocks now converted to text instead of dropped
  • #532 — OpenCode GO API key validation now uses the correct zen/v1 endpoint (testKeyBaseUrl)
  • #489 — Antigravity: missing googleProjectId returns structured 422 error with reconnect guidance
  • #510 — Windows: MSYS2/Git-Bash paths (/c/Program Files/...) are now normalized to C:\Program Files\...
  • #492omniroute CLI now detects mise/nvm when app/server.js is 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) -Регулярное выражение защиты контекстного кэша отсутствует prefixCACHE_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/mp4audio/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): кросс-платформенный machineIdgetMachineIdRaw() переписан с помощью каскада 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 с guidemitm, чтобы на информационной панели отображались элементы управления запуском/остановкой 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 добавлена ​​отсутствующая зависимость split2pino-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 теперь правильно отправляется как дробь (01), а не в процентах (0100) (#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_nodesbuildDynamicEmbeddingProvider() с проверкой имени хоста (#422, @Regis-RCR) -feat(audio): маршрутизация TTS/STT к локальным provider_nodesbuildDynamicAudioProvider() с защитой 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-sqlite3 12.6.2 → 12.8.0
  • undici 7.24.2 → 7.24.4
  • https-proxy-agent 7 → 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-instructmeta/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-instructnvidia/meta/llama-3.3-70b-instruct, исправлен gemini/gemini-3.1-flashgemini/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

  • Интеграция с несколькими поставщиками и улучшения информационной панели.