MikoPBX 2026.3.11-dev
Pre-releaseNightly 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