İçeriye geçin
KAMOUniverse

Değişiklik Günlüğü

Yeni ne var?

Gemideki her iyileştirme.

  1. · kamo-internal

    Wire Availability PresenceWrapper

  2. · kamo-internal

    Add useAvailabilityWebSocket kanca ve Müsaitlik DurumuContext

  3. · SecurityService

    Auto-set üyesi girişte AVAILABLE, logout üzerinde AWAY

  4. · MediaService

    Üye kullanılabilirlik durumu için NATS→STOMP röyünü ekle

  5. · SecurityService

    ÜyeAvailability kullanmak için Güncelleme kullanılabilir uç noktaları Durum enum

  6. · SecurityService

    Üye statüsü güncelleştirmeleri için ErişilebilirlikPublisher ekleyin

  7. · InitializerService

    Migrate üyeleri.is kullanılabilirlik status enum

  8. · kamo-shared-library

    Değişim ÜyeAvailability ile Availability Durum enum

  9. · kamo-asterisk-support

    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 secret, the helper: - Queries asteriskcdrdb.cdr for the call's uniqueId before uploading - Parses CLID into callerIdNum and callerIdName - Derives call direction (inbound/outbound) from src/dst vs extension - Includes a cdr{} block in the upload manifest CDR enrichment is opt-in and gracefully degraded: if the DSN is absent or the lookup fails, uploads proceed without caller-ID (existing behaviour). Adds go-sql-driver/mysql v1.7.1; Dockerfile runs go mod tidy to populate go.sum during the Docker build so no local Go installation is needed.

  10. · ConversionService

    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 callerIdNum, callerIdName, callDirection, and disposition and passes them through RecordingMetadata so the Recording row is stored with full caller-ID context.

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

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

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

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

  15. · kamo-internal

    Show manage Domain düğmesine üst düzey org sahipleri ve sistem üyeleri için

  16. · kamo-internal

    Show Set Up Billing düğmesine org sahipleri için hesap yok

    Bir org sahibi plan-billing sekmesini açar ve fatura hesabı yok Var, genel olarak yerine bir bottrap sergileyin "işlev your org owner" mesajı. düğme POST /api/güvenlik/account / Bottrap-billing (idempotent) sonra başarı hesaplarını yeniden yükleyin.

  17. · SecurityService

    Pre-existing orgs için bottrap-billing endpoint ekleyin

    POST **************** Aynısı tetikler idempotent alt-org yaratım kancası (BillingSetupService .setupForSubOrgCreation) ancak bir org sahibi tarafından talep edilebilir. Bu, faturalama refaksiyonundan önce yaratılmış olan veya Bu nedenle asla bir Hesap + HesapSubscription almadı.

  18. · kamo-internal

    Dalga 3 dönüşümler, geri dönüşümler ve oto-translate CI

    - Tüm zor kodlanmış İngilizce dizeleri t() ile değiştirin dalga 3 bileşenler (chat, kulüp evi, destek, notlar, boru hattı, yol açar, nav, vb.) - Merge dalga 3 parça mesaj /en.json (+19 anahtarları) - Ev bölümü en.json (welcome, tagline, Ayak metin, hesaplarDesc/networkDesc ICU interpolasyon) - Find mobile sayfadaki metin.tsx kullanmak için t() zor kodlanmış dizeler yerine - Fix request.ts: tüm yerel dosyalar için temel olarak derin-merge İngilizce Kayıp yerel dosyalar (pre-translate-CI) kaza yerine İngilizce hizmet eder, ve kısmen-translated yereller eksik anahtarlar için İngilizceye geri düşer Update ******************** to match kamo-marketing's çeviri modeli: ilk dağıtma → yerel dosyaları → çevirilerle yeniden inşa edin → yeniden iş

  19. · kamo-register

    Ad adı altında yer takma adı, yasal isim sırasına ek olarak

  20. · kamo-internal

    Üye ile Wire next-intl. dili yerel kaynak olarak

    URL olmadan kamo-internal arasında bir sonraki uluslararasılaşma ekleyin locale prefixes. Aktif yerele, kamo-yerele kurabiyesinden okunur, ki bu Gerçekleştirilmiş üyenin “dil” tercihi aynalar (sonrası üzerinden başlangıç ******** Bölgesel Ayarlar kartı Altyapı: - i18n/locales.ts, i18n/request.ts: 22 yerel eşleme kamo-pazarlama - /api/i18n/set-locale: kamo-locale kurabiye yazıyor - LocaleBootstrap: Üyeliğe ilk otantik yük üzerinde kurabiye. - I18nProviders: MUI çekirdeği, x-data-grid, x-date-pickers yerel ve Date-fns adaptör aktif dil için yerel -Formatters: yerel-aware tarihi / numara / yüzde / göreceli zamanlı yardımcılar -AccountTab Bölgesel Ayarlarım kurtarır: kurabiye + yönlendirici.refresh() Kullanıcı kendi dillerini değiştirirken - scripts/translate.ts: TranslateService'e karşı zaman delta çevirisi (mirrors kamo-pazarlamanın deseni) - scripts/merge-fragments.ts, ************ araç için per-area anahtar parçaları mesajları /en.json Kapak: - mesajlar/en.json paylaşılan ortaklarla tohumladı.*, nav.*, auth.* anahtarları artı -67 sayfa ve bileşen arasında ilk ekstraksiyon (dashboard, yol açar, Ticaret, ayarlar, hesap, kontaklar, ayarlar/features, ayarlar/member, bileşenler/kesler, bileşenler/tools/ai-chat, vs.). Birçok özellik Yüzeyler hala takip kaldırma geçişine ihtiyaç duyar.

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

  22. · 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).

  23. · SecurityService

    Auto-provision KamoCRM koltuğu alt-org yaratımı; teşvik-ly sahibi endpoint

    EntitlementService, HesapMember'i hesaplamak için AbonelikMember'i yürür Üye Kazananlar - aktif lisans altlarında özelliklerin birliği, artı Free baseline. Redis dinleyicisi bir SUBSCRIPTION kazanır:<uid> handler. Yeni BillingSetupService iki akışta çalışır: - KamoCRM altındaOrganizasyon (sub-org): KamoCRM-org Mevcut değilse yaratıcı için üye, KamoCRM Hesapları Bu Üye ile birincil olarak, Free-tier HesapSubscription Yeni sub-org'u hedeflemek ve yaratıcıları lisans + alt yönetici olarak koltuklar. - POST ************************ Taze bir taze KamoCRM Mevcut bir alt-org üyesi için hesap/sub, isteğe bağlı olarak İsimli lisansları transfer edin. Org- sahibi sadece. Hesap Kontrolü rotaları düşüyorLicensee / CanManageSubscription from the Hesap seviyesi müşteri ücretleri - bu bayraklar şimdi AbonelikMember'de yaşıyor.

  24. · InitializerService

    Üye dili ekleyin + varsayılan currency columns

    Yeni üye masaya NULL sütunları eklemiyor Üye.dil (VARCHAR DEFAULT 'ENGLISH') ve Üye.defaultCurrency (VARCHAR(10) DEFAULT 'USD') alanları. Mevcut satırlar geri dolu Varsayılan olarak, NULL kısıtlaması bir kesinti süresi olmadan memnun değildir Pencere.

  25. · kamo-register

    Dil adımını ekleyin, ülke zaman bölgesi seçici, kaydırma +

    - Yeni 'Benim Dilim' adım büyücüye karşı çıktı, ülkeyi aynalamak adımın düzeni. 22 pazarlama destekli yerelleri bayrak parçaları olarak listeler Yerli adı + İngilizce aracıtip; navigator'dan önceden seçilmişler. - 'Ülkem' adım şimdi ülke yanında bir zaman bölgesi toplar, varsayılan olarak **************** ve daha önce düzenlenebilir Sonraki. Her iki alan da önceden ilerlemek için gereklidir. Kayıt vücudu şimdi dil / zaman bölgesi gönderir (artı mevcut ülke) Yeni Üye üzerinde devam ettikleri için / kayıt uç noktalarına. - Fix: Güvenlik Soruları adım içeriği şimdi dikey olarak dönebilir - Adım, aşırı bir konteyner olmadan tek kişiydi, bu yüzden uzun kataloglar Üçüncü soruyu ekrandan itti. - Fix: Hızlı düğme artık devre dışı kalır - otomatik olarak Dinleyicimiz eklemeden önce. 100ms, bir süre yarışını bir araya getirdi Ankete kadar, aynı zamanda widget'ın mevcut durumunu Widget'ın mevcut durumunu da yok eden bir ekin Geç dinleyiciler için ekleyin.

  26. · kamo-internal

    Dil ekleyin + Bölge Ayarları kartına varsayılan para

    Üye profilinin Bölgesel Ayarları kartı şimdi düzenlenebilir Dili açığa çıkarır (22, yerelleri pazarlama siteyi aynaya destekledi) ve Varsayılan Para Para Para Para Para Para Para Para Para Para Para Para Parasını destekledi (searchable Autocomplete) Timezone ile birlikte. Tüm üçü birlikte tasarruf PUT /api/güvenlik/members/{id}. View mode, ana dili adı gösterir Ebeveynlerde İngilizce ile, artı para sembolü ve tam adı.

  27. · SecurityService

    Persist üye dili/timezone/currency on signup

    / kayıt uç noktası şimdi dil, zaman bölgesi ve varsayılanCurrency Mevcut ülke alanının yanında. KayıtHizmetleri ülkeyi düzenler Yeni Kullanıcı üzerinde zaman bölgesi ve dört bölgesel alanı tüm alanlarına uygular Taze olarak, Üye'yi, ülkenin varsayılan parasını ülkenin İlkCurrency mapping, bir tanesi sağlandığında (ve USD'ye geri dönün).

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

  29. · kamo-internal

    /account/new copy-from-lead UX, full name fields, dual telefonlar, adresi; hesap seviyesi adres yönetimi

    Frontend: - /account /new: per-section "Copy from Lead" düğmeleri + başlığı "Copy all from Lead" düğmesine (ben leadId param) - Name section: prefix, first, orta, son, suffix - Dual telefonlar (kişisel + iş) uzatma ve "Allow text" toggle - EmbAddress şekli (line1, detaylar, şehir, altdivision, postal, country) kullanarak "ayrıca faturalama (default on) - Nested adı / e-posta /phoneNumbers ödeme yüklerini geri eşleştirin - hesaplarApi: tipd HesapName, HesapPhoneNumbers, HesapAddress; yeni yöntemler: GetAddresses, addAddress, updateAddress, deleteAddress, setPrimaryAddress - HesapViewClient: Yeni adreslerden birincil nakliye adresi oluşturma

  30. · SecurityService

    Destek nested name/email/phoneNumbers + adres yönetim uç noktaları

    - Hesap Kontrolüler, POST / PUT üzerinde nested adı / e-posta / telefonNumbers JSON kabul eder - POST'deki ilk adres SHIPPING (ve BILLING when useAsBillingToo set), birincil puanlayıcılar oluşturur. - 5 adres uç noktaları ekleyin: GET, POST, PUT, DELETE adresler; PUT /addresses/{id} /primary - Hesap Özeti/detail ad nesnesi, telefonNumbers nesnesi, nakliye/milleme adresi listeleri, birincil noktacılar - Dur hesap seviyesi notları alan referansları (Account.notes daha önce kaldırıldı)

Evreniniz sizi bekliyor.

Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.

Sonsuza kadar ücretsiz — kredi kartı gerekmiyor