Skip to content

MikoPBX 2026.3.13-dev

Pre-release
Pre-release

Choose a tag to compare

@miko-service-bot miko-service-bot released this 24 Jun 04:47

Nightly DEV build. Not recommended for production use.

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

MikoPBX 2026.3.13-dev — Nightly DEV

Дата: 2026-06-24 · База: 2026.2.118 · Коммитов: 31 · Файлов: 205

Кратко

Системная стабильность: устранён рост памяти при простое, исправлен дедлок при перезагрузке диалплана, добавлен проброс SRV-записей провайдеров. Входящая маршрутизация теперь безопасна к внедрению в контекст. Запись разговора: сохраняется выбор сотрудника «не записывать», устранена потеря аудио при возобновлении после неуспешного перевода. Исправлено некорректное отображение обновлений модулей и ошибки в выпадающих списках веб-интерфейса. Отключенные модули больше не возвращаются к жизни через перезапуск служебных процессов. Усилена защита установщика модулей против атак через архивы.

🆕 Новое

  • Резолвер провайдеров теперь распознаёт SRV-записи: автоматическое переключение на резервные адреса вместо ручного перечисления IP.
  • Защита от утечки памяти при простое: на VPS и больших серверах потребление памяти Asterisk перестаёт расти без нагрузки (64 МБ вместо прежних 350+ МБ за сутки).
  • При ошибке сохранения галочки «Отключён» у модуля (например, заблокированная база данных) система больше не сбрасывает счётчик аварийных перезапусков — модуль будет отключён повторно при следующей попытке, а не зациклится бесконечно.

🐛 Исправлено

  • Галочка «Не записывать разговоры» для сотрудника снова работает на PHP 8.1+ — звонки сотрудника, для которого запись отключена, действительно не записываются.
  • Входящий номер и CallerID на принимающей стороне определяются корректно — исправлена ошибка в парсере регулярных выражений, вызывавшая неправильную маршрутизацию звонков.
  • Список доступных обновлений модулей теперь показывается в веб-интерфейсе — раньше таблица оставалась пустой из-за ошибки в обработке ответа сервера.
  • Выпадающий список «Выберите группу меню» при настройке модуля теперь кликабелен и отображает выбранные значения.
  • Короткие внутренние номера (5–7 цифр) сохраняются в поле мобильного телефона сотрудника без преобразования в международный формат.
  • При смене мобильного номера пользовательская строка дозвона больше не затирается — система перезаписывает только пустое поле или совпадающее со старым номером.
  • Продолжение записи разговора после неудачного перевода теперь пишет в те же дорожки, что и начало — финальная запись больше не теряет аудио второй половины вызова.
  • Закрытие записи звонка при параллельном обзвоне агентов очереди: теперь случайно не закрывается запись только что ответившего оператора (раньше финал разговора помечался как «нет ответа» и терялась его запись).
  • Бесконечная перезагрузка диалплана при изменении порядка маршрутов устранена — маршруты сортируются по номерной позиции, а не лексикографически, и система больше не отправляет лавину перекрывающихся команд перезагрузки.
  • Пропавшие из списка активных подсказки по активным вызовам (hints) при застрявшей перезагрузке диалплана: мониторинг здоровья Asterisk дополнен проверкой hints, так что зависший процесс будет перезапущен автоматически.
  • Отключенный модуль больше не воскресает через перезапущенные служебные процессы — супервизор теперь прекращает мониторинг и убивает остаточные процессы модуля сразу после его отключения, даже если супервизор ещё не перезапустился сам.
  • Логотипы модулей в маркетплейсе снова отображаются — разрешён новый российский зеркальный хост для статики модулей в политике безопасности браузера.

⚙️ Улучшения

  • Сообщения об ошибках модулей: теперь всегда включают идентификатор модуля, даже когда тот не предоставил текста ошибки.
  • Лог установщика модулей содержит название используемого распределителя памяти (jemalloc или glibc), что ускоряет диагностику проблем памяти на разных конфигурациях серверов.
  • Усилена защита установщика модулей: проверка архивов на абсолютные пути, backslash-разделители и символические ссылки до распаковки — дополнение к прежней проверке после распаковки.
  • При массовой смене приоритета маршрутов система теперь отправляет одно событие вместо десятков — быстрее для оператора и меньше нагрузка на конфигурацию.
  • Временные файлы больших ответов REST API теряются при сбое реже — добавлена автоматическая очистка забытых файлов старше их времени жизни.
  • Счётчик аварийных перезапусков модуля теперь атомарно сбрасывается с его временем жизни, что предотвращает бессрочный счётчик после падения процесса между командами.

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

  • Область: Входящие звонки с нестандартными номерами, регулярными выражениями в маршрутизации DID/CallerID; запись с переводом на очередь с параллельным обзвоном; продолжение записи после неудачного перевода; настройка записи отдельных сотрудников; установка и обновление модулей при дисковой/памятной нагрузке; массовое изменение порядка маршрутов (10+ строк); провайдеры с SRV-записями; короткие внутренние номера в поле мобильного телефона; включение и немедленное отключение модуля (проверить отсутствие остаточных процессов); просмотр логотипов модулей в маркетплейсе.
  • Регрессии: Проверить, что счётчик памяти Asterisk стабилен при длительном простое (несколько часов). Убедиться, что модули, однажды отключённые оператором, не включаются сами и их процессы не появляются вновь. Проверить корректность финальных записей при переводе на очередь с отклонениями агентов. Воспроизвести установку модуля при исчерпании места на диске и убедиться, что процессы не уходят в бесконечный перезапуск. Проверить, что быстрое отключение нескольких модулей подряд не оставляет висящих процессов.

MikoPBX 2026.3.13-dev — Nightly DEV (English)

Date: 2026-06-24 · Base: 2026.2.118 · Commits: 31 · Files: 205

TL;DR

System stability: eliminated idle memory growth, fixed dialplan reload deadlock, added provider SRV resolution. Inbound routing is now safe from context injection. Call recording: per-employee "do not record" choice now respected, fixed audio loss on resume after failed transfer. Fixed module update display and web UI dropdowns. Disabled modules no longer resurrect via service process respawn. Hardened module installer against archive-based attacks.

🆕 New

  • Provider resolver now honors SRV records: automatic failover to backup addresses instead of manually enumerating IPs.
  • Idle memory leak protection: on VPS and large servers Asterisk memory consumption stops growing under no load (64 MB vs previous 350+ MB per day).
  • When saving a module's "Disabled" flag fails (e.g. locked database), the system no longer resets the crash-loop counter—the module will be retried for disable on the next pass instead of looping indefinitely.

🐛 Fixed

  • The "Do not record calls" checkbox for an employee now works on PHP 8.1+—calls for employees with recording disabled are actually not recorded.
  • Incoming DID and CallerID on the receiving side are now correctly identified—fixed a regex parser bug that caused incorrect call routing.
  • The available module updates list now appears in the web interface—previously the table stayed empty due to a response-parsing error.
  • The "Select menu group" dropdown when configuring a module is now clickable and displays selected values.
  • Short internal numbers (5–7 digits) are saved in the employee's mobile phone field without conversion to international format.
  • Changing the mobile number no longer overwrites a custom dial string—the system only refills an empty field or one matching the old number.
  • Resumed call recording after a failed transfer now writes to the same tracks as the original—the final recording no longer loses the second-half audio.
  • CDR row closure for parallel queue ring: no longer accidentally closes the just-answered agent's row (previously marked "no answer" and lost its recording).
  • Infinite dialplan reload loop when reordering outbound routes eliminated—routes are now sorted by numeric position, not lexicographically, and the system no longer fires overlapping reload commands.
  • Disappeared active call hints during stuck dialplan reload: Asterisk health check now also probes hints, so a deadlocked process is restarted automatically.
  • A disabled module no longer resurrects via respawned service processes—the supervisor now stops monitoring and kills residual module processes immediately after disable, even if the supervisor itself has not yet restarted.
  • Module logos in the marketplace are visible again—the new Russian mirror host for module assets is now allowed in the browser security policy.

⚙️ Improvements

  • Module error messages: now always include the module ID, even when the module provided no error text.
  • Module installer log records which memory allocator is in use (jemalloc or glibc), speeding up memory issue diagnosis on different server configurations.
  • Hardened module installer: archives are now checked for absolute paths, backslash separators, and symlinks before extraction—in addition to the existing post-extraction check.
  • Bulk outbound-route priority change now emits one event instead of dozens—faster for the operator and less config load.
  • Orphaned large REST API response files are now less likely after a crash—automatic sweep of files older than their TTL added.
  • Module crash counter is now atomically reset with its TTL, preventing an indefinite counter after process death between commands.

🧪 QA Focus

  • Area: Inbound calls with non-standard DIDs, regex-based DID/CallerID routing; recording with transfer to parallel-ring queue; resume recording after failed transfer; per-employee recording settings; module install and update under disk/memory pressure; bulk outbound-route reorder (10+ rows); providers with SRV records; short internal numbers in the mobile phone field; enable and immediately disable a module (verify no residual processes); view module logos in the marketplace.
  • Regressions: Verify that Asterisk memory counter is stable during prolonged idle (several hours). Ensure modules disabled by the operator stay disabled, do not self-enable, and their processes do not reappear. Check correctness of final recordings on queue transfer with agent rejections. Reproduce module install when disk is full and verify processes do not enter infinite restart loop. Verify that rapid successive disable of multiple modules leaves no hanging processes.

Docker

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

docker pull mikopbx/mikopbx:2026.3.13-dev
docker pull mikopbx/mikopbx:dev