github mikopbx/Core 2026.3.11-dev
MikoPBX 2026.3.11-dev

pre-release7 hours ago

Nightly DEV build. Not recommended for production use.

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

MikoPBX 2026.3.11-dev — Nightly DEV

Дата: 2026-06-18 · База: 2026.2.118 · Коммитов: 29 · Файлов: 204

Кратко

Системная стабильность: устранён рост памяти при простое, исправлен дедлок при перезагрузке диалплана, добавлен проброс 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.11-dev — Nightly DEV (English)

Date: 2026-06-18 · Base: 2026.2.118 · Commits: 29 · Files: 204

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

⚙️ 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.
  • Regressions: Verify that Asterisk memory counter is stable during prolonged idle (several hours). Ensure modules disabled by the operator stay disabled and do not self-enable. 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.

Docker

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

docker pull mikopbx/mikopbx:2026.3.11-dev
docker pull mikopbx/mikopbx:dev

Don't miss a new Core release

NewReleases is sending notifications on new releases.