Используйте Live AvailabilityContext для обновления статуса в режиме реального времени
Добавить ключи для перевода статуса доступности, удалить статус Недоступно
Замените переключатель доступности с выпадением статуса 4 государства
Доступность автоматического набора участников Доступно при входе в систему, Дорога при выходе из системы
Обновление конечных точек доступности для использования MemberAvailability Статус
Enrich upload manifests with Asterisk CDR caller-ID data
Adds optional MySQL CDR enrichment so the softphone history tab can display who called (or was called). When ASTERISK_CDR_DSN is configured as a Forgejo repo se...
Parse CDR caller-ID fields from upload manifest
When kamo-asterisk-support includes a cdr{} section in the upload manifest (populated when ASTERISK_CDR_DSN is configured), ConversionService extracts callerIdN...
Add CDR caller-ID columns to recordings table (order 40)
Adds caller_id_num, caller_id_name, call_direction, and call_result columns to the recordings table so the softphone history tab can display who called without ...
Add CDR caller-ID fields to Recording entity
Adds callerIdNum, callerIdName, callDirection, and callResult columns to the Recording entity so kamo-asterisk-support can store Asterisk CDR metadata alongside...
Add COMP payment method option to subscription order wizard
COMP is a valid backend PaymentMethod enum value for complimentary platform-admin grants, but was missing from the frontend type and wizard UI — only INVOICE an...
Show platform kamocrm domain on custom domain entry
Surface the active *.kamocrm.com hostname on the add-domain flow and detect custom domains by excluding kamocrm URLs instead of default-flag alone.
Кнопка «Управление доменом» для владельцев организаций верхнего уровня и членов системы
Настройка кнопки Billing для владельцев организаций без учетной записи
Когда владелец организации открывает вкладку для выставления счетов и не ведет счета существуй, отобрази подсказку бутстрапа вместо общего "свяжитесь со своим С...
Добавьте конечную точку загрузки для уже существующих оргов
POST **************** триггеры одинаковые idempotent setup as the sub-org creation hook (англ.) (недоступная ссылка — история). .setupForSubOrgCreation) но може...
Конверсии Wave 3, исправление резервного копирования и автоперевод CI
Замените все жестко закодированные английские строки на t() вызовы по волне 3 компоненты (чат, клуб, поддержка, заметки, трубопровод, провода, нав и т.д.) Объед...
Место никнейм inline после суффикса имени на строке юридического имени
Wire next-intl с файлом Member.language в качестве источника
Next-intl-интернационализация через kamo-internal без URL локальные префиксы. Активная локализация считывается из камо-локального печенья, которое Отражает пред...
Fall back to imaging recordings for call history + voicemails
FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/a...
Paginated Recording lookup by (instance, extension, isVm)
Used by the softphone tabs as the canonical source of truth for call recordings and voicemails when the upstream provider can't list them — e.g. FreePBX 17 has ...
Авто-предоставление кресла KamoCRM для создания суборгов; конечная точка владельца рекламного биллинга
EntitlementService использует SubscriptionMember (не AccountMember) для вычислений членские права — объединение функций между активными сублицензиатами, плюс Св...
Добавить язык участника + столбцы default currency
Добавляет две колонки NOT NULL в таблицу участников, поддерживающую новую Member.language (VARCHAR DEFAULT 'ENGLISH') и Member.defaultCurrency (VARCHAR(10) DEFA...
Добавить языковой шаг, выборку часового пояса страны, прокрутку + *** исправления
Новый шаг «Мой язык» подготовлен к волшебнику, отражающему страну макет шага. 22 региона, поддерживаемых маркетингом, указаны как флаговые плитки с родным имене...
Добавьте язык + валюту по умолчанию на карту региональных настроек
Карта региональных настроек профиля участника теперь отображает редактируемый язык (22 поддерживаемых сайта, отражающих маркетинговый сайт) и валюта по умолчани...
Постоянный язык/временная зона/валюта при регистрации
Конечная точка /register теперь принимает язык, часовую зону и частоту по умолчанию. Наряду с существующим регионом. Регистрационный сервис устанавливает страну...
Map external customer address blocks into AccountAddress on pull
Add AdapterAddressMapper helper that converts a JSON address node from any provider into an EmbAddress and attaches it to an Account as a typed AccountAddress (...
/account/ new copy-from-lead UX, полные имена, двойные телефоны, адрес; управление адресами на уровне учетной записи
Фронтенд: - /account/new: кнопка «Copy from Lead» на секцию + заголовок «Copy all from Lead» (при использовании leadId param) - Раздел имени: префикс, первый, с...
Поддержка вложенного имени/электронной почты/телефонаЧисла + конечные точки управления адресами
- AccountController принимает вложенное имя/email/phoneNumbers JSON на POST/PUT Начальный адрес на POST создает SHIPPING (и BILLING при использовании набора AsB...
История производственного класса + вкладки голосовой почты с инструментом медиаплеера
Закладка истории (SoftphoneHistoryTab.tsx): Бесконечная прокрутка через IntersectionObserver внутри контейнера прокрутки панели - Фильтровые чипы: Все / Входящи...
Миграционный бегун для колонок Recording provider-lookup + колонки архивов VM
Добавляет RECORDINGS.provider instance id (UUID) и provider external id (VARCHAR(64)) плюс составной индекс idx recordings provider lookup, используемый основно...
Persist providerInstanceId + providerExternalId на записи при глотании
Потоки X-Phone-Server-Id и X-Asterisk-Unique-Id (уже в UnprocessedRecording) на новых полях RecordingMetadata, поэтому строки вызова / голосовой почты в системе...
Добавить ******************* с поддержкой HTTP Range
Общие конечные точки потоковой передачи для аудио/видеоизображения, используемые внутренним инструментом MediaPlayer. Повторное использование авторизации ImageS...
Запись воспроизведения, архив голосовой почты, выделенная голосовая почта, обогащение истории
- Новая запись Контроллер с объемным поиском, потоковое аудио для треков master + per-channel и метаданные для окна инструмента медиаплеера CallController.getCa...
Ключи поиска провайдера на Записи, архив голосовой почты, потоковая передача диапазона MinIO
- Запись: добавить провайдераInstanceId + провайдерExternalId для присоединения провайдера call-history / voicemail строки обратно к средствам визуализации - Ph...
Добавить вкладку «История» — выделенный график аудита с поиском и фильтрами
- LeadHistoryPanel: липкая панель инструментов фильтра с дебюнсированным поиском, фильтры ****************, таблица MUI с пагинацией, цветные чипы событий, разр...
Добавить GET /{id}/history и /{id}/history/filters конечные точки
Назначенная, фильтруемая, доступная для поиска конечная точка с лид-историей с загрузкой пакетного актера (без N + 1). Конечная точка фильтра возвращает различн...
Добавить журнал аудита истории лидов - сущность, реестр, сервис, DTO, крючки LeadService
- LeadHistory entity (UUID PK, простые длинные FK - никаких ограничений FK для удаления / преобразования свинца) - LeadHistoryEventType enum с читабельными этик...
Добавить интерфейс назначения свинцового счета, валютную систему, страницы назначения / нового счета, настройки валютного поля
Добавить конечные точки назначения свинцовой учетной записи, обновить AccountController для CurrencyType
Динамическая этикетка типа участника в заголовке страницы моей учетной записи
Заголовок теперь гласит «Мой аккаунт участника команды», используя сконфигурированный этикетки поведения, автоматически переключающиеся после загрузки типа учас...
Переместить кнопку Create Document в панель инструментов DocManager
Кнопка была доступна только на /doc/manager. Перенес всю логику (состояние, обработчик, DOC TYPES, меню) в DocManager Он появляется на каждом встроенном экземпл...
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.