Skip to content

MikoPBX 2026.3.40

Pre-release
Pre-release

Choose a tag to compare

@miko-service-bot miko-service-bot released this 03 Aug 03:41
bb83f3e

Pre-release build. Not recommended for production use until promoted to a release.

Предрелизная сборка. Не рекомендуется для продуктивного использования до перевода в релиз.

MikoPBX 2026.3.40 — Pre-release

Дата: 2026-08-03 · База: 2026.2.118 · Коммитов: 71 · Файлов: 351

Кратко

Модули теперь устанавливаются и включаются атомарно — откат при любом сбое, защита от потерянных соединений, восстановление после перезагрузки страницы. Исправлены критические регрессии: сохранение привязки провайдера у входящих маршрутов, применение запрета записи звонков, переключение SSH-порта и паролей без перезагрузки, долгожданная работа с YubiKey. Защита обновлений однодисковых систем от случайного форматирования раздела хранилища.

🆕 Новое

  • Операции с модулями (установка, обновление, включение, выключение, удаление) выполняются в изолированном фоновом процессе: прогресс сохраняется в журнал, сбой откатывает изменения до прежнего состояния, прогресс-бар восстанавливается после обновления страницы.
  • Автоматический сторожевой таймер веб-интерфейса: если события от сервера теряются, интерфейс опрашивает журнал и разблокирует кнопки, даже если веб-сервер был убит.
  • Открыт доступ к проверке сложности паролей для ограниченных ролей — можно создавать сотрудников без прав администратора.
  • Встроенные очереди DNS-кеша провайдеров для транков на SRV-записях: Asterisk теперь использует системный резолвер с кешированием и не блокируется на каждом исходящем вызове.

🐛 Исправлено

  • Входящий маршрут терял привязку к провайдеру при сохранении — теперь сохраняется корректно.
  • Запрет записи звонков отдельного сотрудника игнорировался — теперь применяется.
  • Изменение SSH-порта или пароля не вступало в силу до перезагрузки — теперь сразу.
  • Вход по ключу YubiKey не работал — теперь работает (регистрация требовала хранение ключа на устройстве).
  • Список заблокированных адресов некорректно сортировался — теперь по дате, как ожидается.
  • История регистраций провайдера показывала ложные офлайн-события после перезапуска или кратковременные сбои окрашивали весь день в красный — теперь регистрация Asterisk не производит шум, краткий сбой не закрашивает сутки, цвет едино отображается везде.
  • Активный модуль после выключения продолжал перезапускаться — теперь останавливается сразу.
  • Выборка номера или CallerID входящего вызова через неверную функцию возвращала «1» вместо реального значения — теперь через отдельный скрипт.
  • Обновление образа на однодисковой системе могло переформатировать раздел хранилища — теперь раздел пересоздаётся на исходном смещении без форматирования, все данные сохраняются.
  • Настройка файрвола из веб-интерфейса не применялась до перезагрузки — теперь сразу.
  • Хост, заблокированный только по AMI, попадал в SIP-запреты и не мог зарегистрироваться — теперь списки раздельны.
  • Docker-окружение не подхватывало настройки NetworkFilters из Redis до перезагрузки — теперь подхватывает мгновенно, утечка старых ключей исправлена.
  • Сохранение провайдера не отправляло отмену регистрации на сторону оператора связи — теперь отправляет.
  • Запись звонков обрывалась после неудачного перевода через очередь — теперь продолжается в те же файлы.
  • История параллельного звонка агентам сливалась с ответившим агентом при переводе через очередь — теперь строки разделены.
  • Серийный порт виртуальной машины замораживал загрузку — теперь обнаружение не блокируется.
  • Перетаскивание исходящих маршрутов вызывало зависание Asterisk — теперь обработано атомарно, приоритеты сортируются числами.
  • Рост памяти Asterisk до сотен мегабайт на простое — встроен jemalloc, возврат памяти системе даже без звонков.
  • Веб-интерфейс обновлений показывал пустую таблицу — ответ парсился по неверному ключу.
  • Мобильный номер сотрудника нельзя было сохранить, если короче 8 цифр — маска переработана, короткие номера и переопределение строки вызова сохраняются.
  • Логотипы и скриншоты модулей не загружались в веб-интерфейсе — добавлен российский зеркальный хост в политику безопасности.

⚙️ Улучшения

  • Переключатель статуса модуля в списке показывает промежуточное состояние (жёлтый трек, крутящаяся кнопка) пока операция выполняется.
  • Новая установка получает современный набор кодеков по умолчанию (opus, g722, alaw, ulaw, g729 для аудио; h265, h264, vp9, vp8 для видео).
  • Регулярные обновления модулей и патчи безопасности раздельно помечены в веб-интерфейсе, предупреждение о патче снимается автоматически при его установке.
  • Логи модулей ротируются без потери данных (truncate вместо rename).
  • Прогресс-бары и сообщения об ошибках операций с модулями переведены на все 26 языков.
  • Улучшена обработка сбоев при полной файловой системе — перезапуски больше не уходят в петлю.

⚠️ Внимание

  • Обновление образа на однодисковой системе теперь показывает предупреждение перед перезагрузкой (раздел хранилища пересоздаётся). Данные сохраняются, действий не требуется.

🧪 Фокус тестирования

  • Область: установка/обновление/включение/выключение модулей; повторные попытки при потере соединения; восстановление после убийства worker-процесса; входящие маршруты с общим провайдером; запрет записи у сотрудника; изменение SSH-порта; вход по YubiKey; блокировки файрвола в Docker; перевод через очередь; обновление образа на однодисковой системе
  • Регрессии: корректность телефонии после изменения настроек файрвола, перезапуск служб после смены паролей, запись после неудачного перевода, память Asterisk через 24 часа, список заблокированных IP

MikoPBX 2026.3.40 — Pre-release (English)

Date: 2026-08-03 · Base: 2026.2.118 · Commits: 71 · Files: 351

TL;DR

Module operations (install, update, enable, disable, uninstall) are now atomic—rollback on failure, resilient to lost connections, restore progress after page reload. Fixed critical regressions: incoming route provider binding, per-employee call recording opt-out, SSH port/password changes without reboot, long-awaited YubiKey login. Single-disk .img update now safeguards the storage partition against accidental reformat.

🆕 New

  • Module operations run in a detached background orchestrator: progress persisted to journal, failures roll back to prior state, progress bar restored after page reload.
  • Automatic UI watchdog: when server events are lost, the interface polls the operations journal and unfreezes buttons even if the web worker was killed.
  • Password strength validation now accessible to restricted roles—non-admin users can create employees.
  • Built-in DNS resolver with SRV-record support: Asterisk now uses system-level caching and doesn't block on every outbound call to hostname-based trunks.

🆕 Fixed

  • Incoming route lost its provider binding on save—now preserved.
  • Per-employee call recording opt-out was ignored—now enforced.
  • SSH port or password changes did not take effect until reboot—now immediate.
  • YubiKey passkey login failed—now works (registration now requires resident credential storage).
  • Banned-IP list sorted incorrectly—now by date as expected.
  • Provider registration history showed false offline events after restarts, or a brief blip painted the whole day red—now Asterisk registration doesn't generate noise, brief blip doesn't paint the day, colour is unified everywhere.
  • Disabled module kept respawning—now stops immediately.
  • Incoming call DID/CallerID extraction via wrong function returned "1" instead of real value—now via dedicated script.
  • Single-disk .img update could reformat the storage partition—now recreates at original offset without reformatting, all data preserved.
  • Firewall changes from web UI didn't apply until reboot—now immediate.
  • Host blocked only for AMI landed in SIP deny ACL and couldn't register—now lists are separate.
  • Docker environments didn't pick up NetworkFilters changes from Redis until reboot—now instant, stale-key leak fixed.
  • Provider save didn't send unregister upstream—now does.
  • Call recording stopped after failed attended transfer via queue—now continues into same tracks.
  • Parallel queue call history merged with answered agent on attended transfer—now rows separate.
  • VM serial port froze boot—now detection is non-blocking.
  • Drag-reorder of outbound routes caused Asterisk deadlock—now handled atomically, priorities sorted numerically.
  • Asterisk memory climbed to hundreds of MB at idle—jemalloc integrated, memory returned to OS even without calls.
  • Updates web UI showed empty table—response parsed by wrong key.
  • Employee mobile number couldn't be saved if shorter than 8 digits—mask reworked, short numbers and dial-string override preserved.
  • Module logos and screenshots didn't load in web UI—Russian mirror host added to content-security policy.

⚙️ Improvements

  • Module status toggle in list shows in-progress state (amber track, spinning knob) while operation runs.
  • Fresh install gets modern codec set by default (opus, g722, alaw, ulaw, g729 for audio; h265, h264, vp9, vp8 for video).
  • Regular module updates and security patches separately labelled in web UI; patch warning auto-expires after install.
  • Module logs rotate without data loss (truncate instead of rename).
  • Operation progress bars and error messages translated to all 26 languages.
  • Improved handling of out-of-disk failures—restarts no longer loop indefinitely.

⚠️ Heads-up

  • Single-disk .img update now shows a warning before reboot (storage partition recreated). Data is preserved; no action required.

🧪 QA Focus

  • Area: module install/update/enable/disable/uninstall; retry after lost connection; recovery after worker kill; incoming routes with shared provider; per-employee recording opt-out; SSH port change; YubiKey login; Docker firewall blocks; attended transfer via queue; single-disk .img update
  • Regressions: telephony correctness after firewall changes, service restart after password changes, recording after failed transfer, Asterisk memory after 24h, blocked-IP list

Docker

Docker Hub: https://hub.docker.com/r/mikopbx/mikopbx

docker pull mikopbx/mikopbx:2026.3.40