Журнал змін
Что нового.
Все усовершенствования платформы, как только она будет запущена.
· kamo-internal
Наявність дроту Постачальник у PresenceWrapper
· kamo-internal
ВикористовуйтеAvailabilityWebSocket гак і доступністьContext
· SecurityService
Автоматична доступність користувачів AVAILABLE на логін, AWAY на логотипі
· MediaService
Додати НАТС→STOMP реле для статусу учасника
· SecurityService
Оновити наявність кінцевих точок для використання Статус на сервери
· SecurityService
Додавання оновлення статусу учасника
· InitializerService
Migrate членів.is Загружено гостем
· kamo-shared-library
Заміна єдоступним болеаном з учасником Статус на сервери
· kamo-asterisk-support
Збагачення завантаження проявляється з даними Asterisk CDR-ID
Додавання необов'язкового збагачення MySQL CDR, так що вкладка історії Softphone може дисплей, який називається (або був викликаний). Коли ASTERISK CDR DSN налаштовано як секрет Forgejo repo, помічник: - Queries asteriskcdrdb.cdr для унікального виклику - Parses CLID в callerIdNum і callerIdName - Директивний напрямок виклику (включний/вихідний) від src/dst проти розширення - Включає cdr{} блок в завантаженні проявляється Збагачення CDR оптимізується і витончено деградується: якщо DSN немає або зовнішній вигляд не вдається, не вдається, не втрачаючи ніякого повідомлення. Додає go-sql-driver/mysql v1.7.1; Dockerfile працює йти моду тиди для заселень go.sum під час створення Docker так не потрібна локальна установка Go.
· ConversionService
Парзе CDR caller-ID поля від завантаження
Коли kamo-asterisk-support включає в себе розділ cdr{} в завантаженні проявляється (наповнена при налаштуванні ASTERISK CDR DSN), КонвертерСервіс екстракти callerIdNum, callerIdName, callDirection, і розташування переходить через записMetadata, так що рядок запису зберігається з повний контекст виклику.
· InitializerService
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 relying on the FreePBX CDR pipeline being available.
· kamo-shared-library
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 the audio file. RecordingMetadata gains matching fields; a backwards-compatible constructor lets existing callers pass null for all four without change.
· kamo-internal
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 and AUTO_BILL were offered. Added COMP to the SubscriptionPaymentMethod union and exposed it as a radio option.
· kamo-internal
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.
· kamo-internal
Показати натиснути кнопку керування доменом для власників верхнього рівня та членів системи
· kamo-internal
Показати настроювання кнопки для власників org без облікового запису
Коли власник org відкриває рахунки-фактури та не оплачуючи рахунки існує, відображати піктограму завантажувача замість генериків "згодити ваш org власник" повідомлення. Кнопкові дзвінки POST /api/security/account/ bootstrap-billing (idempotent) потім перезавантаження рахунків на успіх.
· SecurityService
Додати кінцеву точку для передвиборчих orgs
POST ****************************************************************************************************************************************************************************************************************************************************************************** викликає той же Налаштування idempotent як під-орг створення гака (BillingSetupService .setupForSubOrgCreation) але може бути викликаний на вимогу власника org. Ця ручка оргів, які були створені перед рефактором векселя і Тому ніколи не отримав обліковий запис + Облік рахунків.
· kamo-internal
Хвиля 3 перетворення, фіксація пада, і автотранслат ТПП
- Замініть всі жорсткікодовані англійські рядки з t() дзвінки по хвилі 3 компоненти (чат, клуб, підтримка, ноти, трубопроводи, веде, нав тощо) - Захоплення хвилі 3 фрагменти в повідомлення/en.json (+19 ключів) - Виправлення значень власників будинку в en.json (welcome, tagline, текст нижнього колонтитула, облікові записиDesc/networkDesc інтерполяція ICU - Виправлено мобільний текст вітання на сторінці.tsx для використання t() замість жорсткихкодованих рядків - Виправлення запитів.ts: глибока англійська як основа для всіх локальних файлів так відсутні локальні файли (pre-translate-CI) слугують англійською замість аварійного завершення, і частково перевантажені локальні жителі знизилися на англійську мову для відсутніх ключів - Update ***********, щоб відповідати kamo-marketing's переклад-і-rebuild візерунок: початкове розгортання → ПерекладПослуги порт-форвард → перебудувати зображення з перекладами → redeploy
· kamo-register
Помістіть нік-лайн після того, як ім'я suffix на правому верхньому ряду імені
· kamo-internal
Дріт наступний з членом.language як локальне джерело
Додавання інтернаціоналізації на основі локальних даних через kamo-internal без URL локальні префікси. Активне локальне читання з кімо-локального печива, який дзеркала перевага автентифікованого члена `language` Регіональні налаштування карти в *********** Інфраструктура: - i18n/locales.ts, i18n/request.ts: 22 підтримуваних місцевих жителів, які відповідають кармо-маркетингу - /api/i18n/set-locale: пише файл cookie-locale - LocaleBootstrap: syncs cookie до членства.language on first автентичне навантаження - I18nПровідувачі: MUI ядро, x-data-grid, x-date-pickers локалізації та адаптер змінного струму до активної мови - useFormatters: дата локалізації / номер / відсоток / відносні помічники - MyAccountTab Регіональні налаштування зберегти: пише cookie + маршрутизатор.refresh() коли користувач змінює власну мову - скрипти/translate.ts: складання-time delta translation from TranslateService (маршрут кармо-маркетингу) - скрипти/merge-фрагменти.ts, **************** Інструмент для агрегація ключових фрагментів у повідомлення/en.json Покриття: - повідомлення/en.json засіяний спільним.*, nav.*, auth.* ключі плюс початкове вилучення по ~67 сторінок і компонентів (dashboard, веде, Торгівля, налаштування, обліковий запис, контакти, налаштування/пошуки, налаштування/член, компоненти / положення, компоненти/інструменти/аі-чат тощо. Багато функцій поверхні все ще потрібно слідкувати за вилученням.
· VOIPService
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/api/api/rest/voicemail 404s), and Asterisk's CDR pipeline is also non-functional here (ODBC DSN misconfig handled separately in KlusterServices). Without these the softphone tabs render empty even when call/VM recordings exist on the imaging side. When provider.getCallHistory or provider.getVoicemails returns nothing, fall back to listing rows from the kamo.recordings table scoped by (providerInstanceId, extension, isVm). Caller-ID metadata isn't carried on Recording today so we leave from/fromNumber blank — the row still plays back through the media-player tool via recordingId. Archive filtering is preserved across both paths so a row archived via the cache stays hidden in the fallback too.
· kamo-shared-library
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 no REST/GraphQL voicemail-message API, and on this install Asterisk's CDR pipeline is also broken (separate ODBC misconfig fix in KlusterServices).
· SecurityService
Авто-провізування сидіння KamoCRM на основі створення суборг; точка кінцевого пункту
EntitleService Walks АбонементМбер (не Обліковий записМебер) для складання імена учасників — об’єднання особливостей у діючих субстанціях, плюс Безкоштовна базова лінія. Редюсер отримує SUBSCRIPTION:<uid> обробник. Новий BillingSetupService працює в двох витратах: - створенняОрганізація (під-орг під KamoCRM): auto-creates a KamoCRM-org Учасник для творця, якщо немає, знаходить-або-відтворює обліковий запис KamoCRM з цим членом як первинний, відкриває Free-tier AccountSubscription налаштовує новий суборг, а також розміщує творець як ліцензія + субменеджер. - POST************************************************************************************************************************************************************************************************************************************************************* здивує свіжі КамоЦРМ Обліковий запис/підпис учасника існуючого суборгу, додатково передача іменних ліцензій. Org-owner-only. Нормативно-правові маршрути - Licensee UKRSIBBANK BNP Paribas Group відкрив можливість покупки валюти онлайн через UKRSIB online.
· InitializerService
Додати мову учасника + стовпчики за замовчуванням currency
Додавання двох стовпчиків НЕ NULL до таблиці членів, що задягають новий Учасник.language (VARCHAR DEFAULT 'ENGLISH') і член.defaultCurrency (VARCHAR(10) DEFAULT 'USD') поля. Витримані ряди заправляються до За замовчуванням, так що НЕ NULL обмеження задоволений без вікно.
· kamo-register
Додати мовний крок, заміський таймер, прокрутка + *** виправити
- Новий 'Моя мова' крок, призначений для майстра, дзеркала країни макет кроку. Списки 22 маркетопідтриманих місцевих жителів як флагманська плитка з рідним ім'ям + англійським інструментом; попередньо оберіть з навігації.languages. - 'Моя країна' крок зараз збирає часовий пояс поряд з країною, за замовчуванням від *********** і редагувати до Далі Обидва поля необхідно заздалегідь. - Реєстраційний орган тепер надсилає мову/timezone (плюс існуючої країни) до /регіструвати кінцеву точку так, що вони зберігаються на новому учаснику. - Виправлення: Стійкість Питання покрокового вмісту тепер може прокручуватися вертикально - крок був єдиним без переливу контейнера, тому довгі каталоги виштовхнув третій номер екрана. - Виправлення: Кінцева кнопка більше не залишається вимкнено, коли *** auto-verifies перед нашими слухачами прикріплюємо. Замініть 100ms setTimeout гонка з Прикріпіть пиломатеріали, що також зливає поточний стан віджету на прикріпити для пізніх слухачів.
· kamo-internal
Додати мову + валюту за замовчуванням на карту регіональних налаштувань
Карта регіональних налаштувань профілю Учасника тепер розширюється (22 підтримувані локальні дзеркала сайту маркетингу) та валюти за замовчуванням (пошукова автозаповнення) поряд з Timezone. Всі три заощаджуйте разом PUT /api/security/members/{id}. Режим перегляду показує назву рідної мови з англійською мовою в дужках, а також символом валют і ім'ям.
· SecurityService
Персистська мова / часовий пояс / валюта на реєстрацію
The /register endpoint тепер приймає мову, часовий пояс і за замовчуваннямCurrency поряд з існуючою країною. Статус на сервери і часовий пояс на новому Користувачі і поширюється на всі чотири регіональні поля до свіжо створений Учасник, який прибуває валюту за замовчуванням з країни первиннаКурентія картування, коли одна не подається (і падає назад в USD).
· kamo-shared-library
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 (SHIPPING/BILLING). Wire the helper into the four adapters whose customer endpoints expose address blocks: - ShopifyCustomerAdapter: default_address goes to both shipping+billing, remaining addresses[] become shipping records - WooCommerceCustomerAdapter: billing block -> BILLING, shipping block -> SHIPPING - BigCommerceCustomerAdapter: addresses[] split by address_type field - MagentoCustomerAdapter: addresses[] split by **************** ids Adapters with no address data in their customer payloads (Ecwid, Wix, Shift4Shop, PrestaShop, OpenCart, Squarespace) continue to compile unchanged.
· kamo-internal
/account/new copy-from-lead UX, повнорозмірні поля, подвійні телефони, адреса; управління адресним управлінням
Фронт: - /account/new: per-section "Копіювати з Провідника" гудзики + заголовок "Купити все з Провідника" гудзики (коли приводять парам) - розділ імен: префікс, перший, середній, останній, suffix - Двомісний телефон (особистий + робота) з розширенням та "Дозвоніть текст" - розділ адреси за допомогою форми EmbAddress (line1, деталі, місто, підрозділ, поштова, країна) з "Використовувати рахунки занадто" (за замовчуванням) - Відправлення відкладеного імені / електронної пошти/телефону - акаунтиApi: typed AccountName, AccountPhoneКількістьи, обліковий записAddress; нові методи: getAddresses, addAddress, updateAddress, removeAddress, setPrimaryAddress - AccountViewClient: надавати первинну адресу доставки з нового масиву адрес
· SecurityService
Підтримка вкладених імен/email/phoneКількістьи + кінцеві точки управління адресами
- AccountController приймає відкладеного імені/email/phoneNumbers JSON на POST/PUT - Початкова адреса на POST створює ДОСТАВКУ (і BILLING при використанніAsBillingToo set), встановлює первинні тостери - Додати 5 адресних кінцевих точок: GET, POST, PUT, DELETE адреси; PUT /addresses/{id}/primary - Облік об'єкта ім'я, телефонПерегляди об'єкта, список адресних адрес доставки, основні пункти - Поверніть облікові записки на рівні облікових записів (Account.notes було видалено раніше)

Твій всесвіт чекає.
Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.
Безкоштовно назавжди — не потрібна кредитна карта