Показать Создать кнопку Документ для всех зарегистрированных членов
Функция проверки флага (isDocsEditor → isDocs → hasFeature DOCS) возвращался ложным, потому что функции организации используют устаревшие типы ключей. Кнопка те...
Удалите фильтры полевого уровня Datagrid и плавающий ряд фильтров
Отключили все колоночные фильтры и вводную строку плавающего фильтра, чтобы Сетка показывает только заголовки колонок и строки данных. Также убрали фильтры пане...
Переместить кнопку Upload в панель инструментов DocManager
Триггер загрузки был только в реквизите действий страницы /doc/manager. Это делает его невидимым, когда DocManager встроен в другие страницы. перенесенный Кнопк...
Разрешить загрузку опций для прокрутки во встроенном DocManager
Загрузка контейнера вкладки была переполнена: скрыта, вырезаны варианты для каждого файла (описание, папка, тип документа, уровень доступа) в ограниченном росте...
Исправьте ошибку подачи 400 и добавьте подзадачи связи с парамами URL
Исправить двойное? ошибка в MediaStream, где feedEndpoint уже содержал запрос парамс, но приведённый приём ?page=... вместо &page=..., вызывающий Неправильный U...
Сделайте «All Leads» реальным пунктом меню с иконками в фильтре агентов
- Заменить элемент с пустым значением на ALL , чтобы выпадал Никогда не показывается пустым, когда все лиды выбраны Добавить групповую иконку ко всем лидерам...
Потребляйте *** секретно, чтобы X-Internal-Auth соответствовал службам ниже по течению
DaemonService -> Конверсионная служба ********************** 401 Unauthorized возвращается, потому что DaemonService Заголовок X-Internal-Auth от INTERNAL AUTH ...
Use @CreationTimestamp(source=DB) on ****************
The DB is the single source of truth for timestamps in this codebase. The canonical Hibernate pattern is @CreationTimestamp(source = SourceType.DB), which makes...
Let DB fill **************** via @Generated(INSERT)
INSERTs were failing with: null value in column "date_created" violates not-null constraint @ColumnDefault only declares the DB-side default for new rows; Hi...
Drop the [from-internal-custom] _X. catch-all that broke softphone calls
The catch-all exten => _X.,1 in [from-internal-custom] was intercepting every internal dial — softphones started reporting "phone is not registered" / calls wou...
Enable JPA repos for commerce + email + dao.repositories packages
ConversionService new pod CrashLoopBackOff with the same error DaemonService hit earlier: Parameter 0 of constructor in **************** required a bean of ...
Carve /api/voip/recordings/** out of the wildcard VOIP forwarder
The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...
Write managed config files 0644 so the asterisk daemon can read them
The kamo-asterisk-support pod runs as root and writes to host-mounted **************** Asterisk inside the FreePBX pod runs as user "asterisk" and could not rea...
Используйте Envsubst-совместимый синтаксис \${VAR} в шаблоне конфигураций + повторное воспроизведение на устаревших заполнителях
CrashLoopBackOff с ошибкой конфигурирования: API KEY отсутствует или слишком коротка потому что в шаблоне конфигураций используются буквальные API KEY марке...
Drop unused watcher import
uploader.go only uses CallBatch (declared in grouper.go in the same package), not anything from internal/watcher directly. Go rejects unused imports.
Включить репозитории JPA для торговли + электронная почта + пакеты dao.repositories
DaemonService разбился о стартап с: Параметр 0 конструктора в **************** необходимый Блюдо типа ****************, которое невозможно найти. Недавно добав...
Захват нового ExtNumber в качестве окончательного захвата лямбды в контроллере MemberVoipConfigController
newExtNumber условно переназначен внутри if (isVoipEnabled & & ...) Блок, что делает его не совсем окончательным. Блок синхронизации TeamMember читает лямбда Op...
Обновление OrgThemeProvisionServiceTest для параметра описания buildConfigJson
Обнаружение голосовой активности для обхода отсутствующего типа TS DOM
voiceActivityDetection является действительным свойством WebRTC MediaTrackConstraints. отсутствует в DOM-либе TypeScript, вызывая ошибку типа во время сборки.
Настройте STUN, чтобы ICE браузера мог выполняться двунаправленно
Двусторонние вызовы браузер-браузер, подключенные на уровне SIP, но не имеющие аудио в любом направлении. Работала голосовая почта (one-way Asterisk → браузер) ...
Живой звук, который выживает при перебоях нагрузки, центрированный спиннер, исходящий рингбек
Три согласованных исправления для входного звукового пути: 1. AbortError on remoteAudio.play() (видимая на консоли) «Запрос на игру был прерван новым запросом ...
Hangup tears down ALL live sessions, not just the primary
Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...
Instant connecting feedback on outbound dial
Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...
Подключение анимации + аудио, которое на самом деле играет + разблокировка рингтона
Три согласованных фикса для пути входящего вызова: 1.Визуальная обратная связь при принятии. Щелчок Ответ оставил обе кнопки отзывчивый, но не отзывчивый — пер...
Маунт SoftphoneProvider над ToolDock, чтобы окна инструментов могли читать
Всплывающее окно Softphone разбило страницу с надписью «Эта страница не могла загрузиться» потому что окна инструментов устанавливаются внутри ToolDock, который...
Используйте реквизит размера сетки, чтобы AV панели заполняли строку
Сетка MUI v7 основана на флексбоксе, поэтому я использовал GridColumn sx был нерабочим — предметы отображались на их естественной ширине и оставляли пустыми Про...
Migrate stale ringtone ID по умолчанию
Если сохраненные AV предпочтения пользователя ссылаются на рингтон, который больше не существует в каталоге (например, «классика» до того, как каталог был Обрез...
Цифры Dialpad теперь регистрируются на сенсорных устройствах
Кнопки dialpad, называемые e.preventDefault(), как в OnTouchStart, так и OnTouchEnd. Это останавливает браузер от запуска синтетического события щелчка что след...
Хостинг браузера SIP WSS на internal.kamocrm.com (реальный сертификат)
Браузеры отказались от подключения к WebSocket **************** с близким кодом 1006, потому что Traefik обслуживал свою самоподписанную сертификацию по умолчан...
Отдельное присутствие в мире для маркетинга в чате против участников
Публикация Билеты на виджет чата сохраняют заполнитель в качестве запрашиваемого; используйте только Присутствие СМИ для этих строк. Внутренние и другие билеты ...
Периодическое сердцебиение присутствия STOMP для общественной поддержки
Обновите Redis TTL для публичного присутствия на сессии, чтобы агенты видели точное состояние в Интернете.
Globe использует присутствие в медиасессии для маркетинговых посетителей
Запросить сеанс публичных чатов GUIDs при наличии снимка; лечить онлайн, если Сессия или участник запроса подключены. Обработка конверта и СеансGuid deltas on /...
Отслеживайте чат общественной поддержки сеанса GUID в Redis
Маркетинговые посетители используют /ws / public-chat-native без членства; билеты по-прежнему ссылаться на члена-заполнителя организации в качестве запрашивающе...
Не стирайте задание участника на синхронизацию от поставщиков, которым не хватает метаданных
**************************** безоговорочно переписанный PhoneExtension.assignedMemberId с любым возвратом провайдера. FreeBX (и любой провайдер, который не отсл...
Показать имя провайдера в режиме просмотра + собственное расширение в ред
Два бага на **************** 1. Режим просмотра сбросил необработанный UUID — «Instance 32f520b0-347a-...» — потому что Список экземпляров был загружен только ...
Serialize ExtensionDto.assignedMemberId в виде строки
переполнение безопасного целого диапазона JS (например, 1168485658174423046 туда-обратно как 1168485658174423000 как только номер JSON попадает в браузер. фронт...
WebRTC выживет после перезапуска
Предыдущий подход (http custom.conf с [общим] override) не На самом деле вступает в силу, потому что INI-парсер Asterisk не чтит множественные [Общие] разделы в...
Включить встроенный HTTP-сервер Asterisk на :8089 для WebRTC /ws
Транспортный маршрут Chan pjsip 'protocol=ws' поверх res http websocket Что, в свою очередь, требует запуска встроенного HTTP-сервера Asterisk. The FreePBX 17 п...
Приоритет реального имени / фамилии пользователя для отображения
usernameAlias - это функциональная ручка входа (часто равная имени пользователя), Не отображаемое имя. Настоящие человеческие имена живут на User.name (EmbNameF...
Scope Добавить свинцовый свиток и нижний колонтитул в область контента
Форма использовала minHeight: 100vh внутри родителя. calc (100vh - 56px), заставляя внешнюю полосу прокрутки, даже когда контент подходит. В экшн-баре также исп...
Умный многоколонный макет для формы Add Lead
Перестройте страницу в сетку верхнего уровня, чтобы разделы составляли горизонтально. Вместо растяжки отдельных полей: - Market & Assignment использует 3-цветн...
Использование /api/security/members/names для разрешения имени назначенного члена
Фильтры конечных точек для активных членов команды, отсутствуют Задания членам базы или неактивным членам. Переключитесь на имена, которые возвращает всех члено...
Полная ширина Добавить форму свинца и клиренс для липкого футера
Бросьте 1200px max-ширину на /leads/new, чтобы форма охватывала область страницы. и ударная нижняя обшивка, чтобы липкая панель действия больше не перекрывала П...
Решите имя дисплея с правильным приоритетом в конечной точке отдела
Приоритет: member.usernameAlias → user.name.formatFull() → user.alias → user.username
Добавить недостающее поле isDisplayOnIntake в интерфейс FormField и новое поле
Используйте тип строки для назначенногоMemberId для предотвращения потери точности
Сериализация длинной строки для предотвращения потери точности JS на больших идентификаторах CockroachDB
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.