Değişiklik Günlüğü
Yeni ne var?
Gemideki her iyileştirme.
· kamo-internal
Production-grad History + Voicemail tabs with media-player araç
Tarih sekmesi (SoftphoneTarihTab.tsx): - PanelObserver in the Panel's kaydırma konteyneri - Filtre cipsi: All / Inbound / Outbound / Missed / Recorded - Ekran tarafında kayıt ikonu bir kayıt sırasına sahip olduğunda - Per-row overflow menu (Add to contact) - Mevcut arama ile Click-to-call back via existing callpad Sesmail sekmesi (SoftphoneVoicemailTab.tsx): Sonsuz kaydırma, filtre cipsi (All / Unread / Has audio) - Per-row Play / Call back / More actions - Auto-mark-read on play - Two-option delete dialog: Archive (yumuşak-hide, tüm kullanıcılar) ... Kalıcı olarak silinmiş ( VOIP VOICEMAIL PERMANENT DELETE haklı; olmadan kullanıcılar için devre dışı bırak) - Mark-all-read düğmesi no-op- when-zero karşı MediaPlayer popup aracı **************** - Audio: sentezlenen dalgaform-style Groundber, click-to-seek, Replay10 /Forward10, oyun geri oranı (0.5x-2x), döngü, hacim + mute, çıktı cihazı AV ayarlarından onurlandırıldı Video: viewport, PiP, fullscreen, aynı zeminber + kontrolleri içeriyordu - Multi-track kayıt aramak için (master + her per-channel leg) - Download - Download - İki kaynak modları: voipApi kaydı (call/ VM) veya ImgId - Araçlar /registry/.s.ts as multi-instancence Hook + zayıflama: - useSoftphone paginated date + voicemails (loadMore, hasMore, isLoading) ve arşiv /permanent-delete actions - voipApi kazançları göz önüne alındığında, Metadata, arşivVoicemail, paginated getVoicemails - /api/voip proxy, ses / video /octet-stream vücutlarını ************ bozulmamış (buffering) bu yüzden medya elementleri zemin - New ************ forwards to DocsService's new streaming endpoint with Range - VOIP VOICEMAIL PERMANENT DELETE, önteki RolRightType kaydına ekledi, böylece silin UI kapılarını kontrol edin
· InitializerService
Kayıt sağlayıcı sütunları için Göç koşucusu + VM arşiv sütunları
RECORDINGS.provider instance id (UUUID) ve sağlayıcı external id (VARCHAR(64) artı kompozit idx recordings provider lookup index used by softphone History sekmenin uç noktası. Ayrıca PHONE VOICEMAIL.is archived + date archived for the new soft-archive flow. Wipes any pre-existing RECORDINGS / RECORDING EXTS rows in the same pass - natural idempotent (bir zamanlar sağlayıcı external id hala NULLService olmayacak olan sadece maç satırları listeliyor). 35 sipariş - **************** (30) sonra kayıt masaları ALTERs arazisinden önce var.
· ConversionService
Persist sağlayıcıInstanceId + sağlayıcıPlanId on Record at ingest
Risk destekli X-Phone-Server-Id ve X-Asterisk-Unique-Id (already in Un processingedRecording) Yeni KayıtMetadata alanları üzerinde bu yüzden arama / fatura posta satırları kaynak sağlayıcı sırasına geri taşır. Sesli postalar için yardımcı ham dosya adı adı (örneğin, msg0000) gönderir; msg prefix ve lider sıfırları şerit ederiz, böylece FreePBX'in sesmail REST API'si mesajı olarak geri döndürür.
· DocsService
Add ******************** with HTTP Range support
Genric ses/video görüntüleme varlıkları için son noktayı taşır, kamo-internal MediaPlayer aracı tarafından kullanılır. Reuses ImageService permission (same as /download/...) ancak Kabul edilen Ranges + Content-Range bu kadar medya elementleri tam dosyayı yüklemeden zeminde tutabilir.
· VOIPService
Kayıt playback, sesmail arşivi, paginated voicemail, tarih zenginleştirme
- Yeni Kayıt Master + per-channel parçaları için toplu arama, aralıksız ses ve metadata medya-player araç penceresi için CallController.getCallHistory / getVoicemails her satırı yeni kayıt bakımı ile zenginleştiriyor - tek yuvarlak gezi, N+1 - TelefonProvider.getVoicemails now takes (memberId, page, boyut); FreePBX paginates müşteri tarafı tek bir hediyeden faydalanıyor, RingCentral yerli şaka kullanıyor, KamoPBX desteklenmeye devam ediyor - Voicemail archive endpoint (soft-hide via PhoneVoicemail.isArchived) ve VOIP VOICEMAIL PERMANENT DELETE -Active hem GD uygunluk hem de aktif toggle gerektirir - TelefonProvider kazançları InstanceId() bu yüzden kontrolörler ikinci bir fabrika çağrısı olmadan kayıt aramalarının anahtarını çözebilir
· kamo-shared-library
Sağlayıcı Kayıt Anahtarları, sesmail arşivi, MinIO serisi akış
Kayıt: SağlayıcıInstanceId + sağlayıcıDreamId for join sağlayıcı call-history / voicemail rows back to display properties. TelefonVoicemail: ekleArchived + dateArchived for soft-hide from softphone listeleri RolRightType: VOIP VOICEMAIL PERMANENT DELETE (Mutfaklar yıkıcı silinir; arşiv her şeye kullanılabilir) - MinIOStorageService: add openRange() + RangeStream so audio/video endpoints can onur HTTP Range Kayıt HayaliHizmet: thread sağlayıcı id + out id via RecordMetadata on the Record row at in ingest
· kamo-internal
Tarih sekmesini ekleyin - arama ve filtrelerle denetim zaman çizelgesi
- LeadHistoryPanel: bary filtre aracıbar with debd search, ************ filtreler, MUI table with pagination, color-coded event cips, member-name solution for assignment/account fields - leadApi: getLeadHistory() and getLeadHistoryFilters() with full query-param support support support - LeadHistory, LeadHistory,, LeadHistoryFieldMeta, LeadHistoryPageResponse, LeadHistoryFiltersResponse types - Next.js proxy rotaları ************ ve /filters - LeadViewClient, Tarih sekmesi aktif olduğunda LeadHistoryPanel'i oluşturmak için kablolandı
· SecurityService
GET /{id}/history ve /{id}/history/filters endpoints
Paginated, filtrelenebilir, gözlemlenebilir liderlik-history endpoint with public actor Load (no N +). Filtre uç noktası farklı kullanım alanları, tüm kayıt alanları, farklı aktörler ve tüm etkinlik türleri döndürür. All mutating endpoints now pass the call member as actor to LeadHistoryService for specifyion.
· kamo-shared-library
Lead-history denetim logunu ekleyin - varlık, kayıt, hizmet, DTO, LeadService kancas
- LeadHistory entity (UUUUID PK, düz Uzun FKs – liderlik / çelişkilerine izin vermek için FK kısıtlamaları yok) - LeadHistorytType insan hazır etiketlerle enum - LeadHistoryFieldRegistry: ~55 takip edilen liderlik alanları için tek bir gerçek kaynağı; bir alan eklemek bir çizgidir - LeadFieldDescriptor record (key, etiket, kategori, alıntı) - LeadHistoryService: snapshot/diff pipeline, ************ paginated+filtered findHistory, separateFields /Actors for filter dropdowns - LeadHistoryDTO, nested AktörDTO ile; tüm uzun kimlikler CockroachDB JS hassas güvenlik güvenliği güvenlik güvenliği için serileştirildi - LeadService: tarih kancaları oluşturmak, güncelleme, silmek, Lead, LeadAccount, unassignLeadAccount, unassignLeadAccount
· SecurityService
Wire LeadHistoryService aktör LeadController'i takip ediyor
· kamo-internal
Lead-account assignment UI, para sistemi, atama / yeni hesap sayfaları, ayarlar para alanı
· SecurityService
Lider hesap atama uç noktaları ekleyin, ParaType için Hesap Kontrolü
· kamo-shared-library
ParaType enum, CountryType'ı birincil para ile güncelleyin, Hesap /Organizasyona para ekleyin, hizmet etmek için görev ekleyin
· kamo-internal
Hesabım başlığında dinamik üye türü etiketi
Şimdi "My {Member|Team Member} Hesap" org yapılandırılmış kullanarak okur. Davranış etiketleri, üyenin tipi yüklenene otomatik olarak geçiş.
· kamo-internal
Doküman düğmesine DocManager araç çubuğuna taşıyın
Düğme sadece /doc/manager'da eylemlerin ortaya çıkmasıyla mevcuttu. Tüm mantığı (devlet, eller, DOC TYPES, menü) DocManager'a taşır Her gömülü örnek üzerinde görünür. Basitleştirilmiş sayfa.tsx sadece Doc,Manager'ı hiçbir eylem teklifinde bulunmamıştır.
· kamo-internal
Mailing Adresi 3column sırasına Lead Info ve Primary Contact ile geçin
· kamo-internal
Uluslararası destek - Ülke Seç, Dil Seç, Subdivision Tüm formlar boyunca alan
- Yeniden kullanılabilir Ülke Seçilebilir (207 ülke, bayrak simgeleri), Dil (26 dil, bayrak ikonları) SubdivisionField (US state dropdown with Flags; diğer ülkeler etiketli metin alanını gösteriyor) - Ülke sabitlerini ekleyin (bölgeler.ts, diller.ts, usStates.ts, timezones.ts) - Lead view Details sekme: per-card in-place editing with ******** fields - Lead form yaratır: tam ülke/subdivision/timezone dropdowns Sınırlı Inline listelerini değiştirir EtiketManager ayarları: veya bölüm 8'de varsayılan dil, Ülke Seç+Subdivision Field in address İletişimInfoStep (network create wizard): Ülke Seç+SubdivisionFieldChange sınırlı seçmeleri değiştirme - BenimAccountTab: Ülke Seç+SubdivisionField düz metin alanları değiştirme - tip/leads.ts: ülke ekleyin ve subdivision alanları
· kamo-shared-library
Uluslararası destek ekleyin - ülke/subdivision/timezone, Org dili, CountryType isProvince
- CountryType: PROVINCE NAMES set,Province(), getSubdivisionLabel() - Organizasyon: dil ekleyin (El Türü) alanı - Lead: ülkeyi (CountryType), subdivision (String), zaman bölgesi (TimezoneType) alanları ekleyin. - ************ add country, subdivision, timezone String fields - LeadService.createLead: Yeni alanları ele alalım; varsayılan dil + ülke veya ayarlar - LeadService.updateLead: Yeni alanları ele alın - ************ Ekle dili dokunduKey handler
· kamo-internal
ASSIGN LEADS doğru, ajan filtre imzalanmamış seçenek, grid sütunu temizlendi
- Gate 'Unassigned Leads' ajan filtre seçeneği ASSIGN LEADS right - 'Tüm Liderleri', doğru olmayan üyeler için yol açar - İndir Street, Ürün, Kaynak sütunları; Ürün/Kaynak filtre damlaları kaldırmak - İndir Şirket sütunu; İletişim sütunu şirket adını gösterir, bağlantı adına geri döner - Satış sütunu Ürünle alettip gösterir - Kaynak detayı - Tarih sütunları hafta öncesi ek, 170px'den 140px'ye kadar küçülür - DateTimeDisplay: showWeekday prop (default false)
· kamo-shared-library
ASSIGN LEADS right (ID 137) under CRM bölümü
· kamo-internal
Add Assign Market & Assignment bölümü /leads /new
- Fetches aktif takım üyeleri ******** Dağın Dağında - Grup üyeleri alfabetik olarak sıralanan bölümler ve üyelerle - "Son, First" olarak formlar; ilk seçenek "Auto Assign / Unassigned" - Reorders bölüm alanları: Lead Market, Assign To, Best Time to Contact, Vendor, Product, Prospect Type (all lg=4) Fixes, Api.ts'a, ölü Kullanıcı alanı alanının yerine TeamMemberId göndermek için yol açıyor - Takımyıldız'a atanan Takımları ekle
· kamo-asterisk-support
Emit, yüklemede + per-file uzantısında kaydedildi
- Watcher: Her yaygın kayıt Kayıt Kayıt Kayıtta bulunur, türetilmiştir Yönetilen **************** Dosya adı, sesmail / miras dosyaları için mtime'ya geri dönün. - Grouper: CallBatch şimdi FileExctions[] (bir dosya başına, paralel paralellik Files[]) ve partinin genel kayıtları (en iyi bacak başlangıç). Bacaklar için sıra anahtarı FinalizedAt as tiebreaker so the master bacağı deterministic. - Uploader: artık en üst düzey kaydedilenAt ve per-file içerir uzatma. Dönüşüm Hizmeti hem Kayıtları yazmak için tüketiyor (tarih, ffprobe'den uzun süre) ve per-leg RecordsExt satırları.
· ConversionService
Pass Record metadata to display - ffprobe uzunluğu + açık parsing
- ******************** run ffprobe -show entries format=duration Usta Opus/WebM'de, ms döndürür. 0 = Bilinmeyen (Ölümsüz değil). - **************** Şimdi: * kayıt uzunluğu elde etmek için master'da probeDurationMs çalışır; * Açıklığa (parçalı risk destekli risk-support) kaydolun ve per-file uzantı / kanal verileri, sıraya geri dönüyor dateCreated and kanal-name parsing for older maaşloads; * bir **************** tarihRecorded'i geçer, uzunMs, katılımcıExvos) Kayıt Fikrini Kayıt Etmek için Yeni Kayıt + KaydıExt sıralarını yazabilirsiniz.
· kamo-shared-library
Kayıt + KaydıExt varlıklar, Kayıt Fikri onları yazar
Yeni Kayıt varlığı (UUUID id, IMG ID, IS MASTER, IS VM, EXTENSION, MEMBER ID, LENGTH, DATE RECORDED, DATE CREATED [DB-defaulted via @CreationTimestamp). Nihai ses e-postasında bir satır veya görüntülemeye yüklenen kayıt arama. - Yeni Kayıt Kuruluşu (UUUID id, RECORDING ID, EXTENSION, MEMBER ID, IS MASTER). Kayıta katılan kanal başına bir satır; kayıtta bulunan bir satır; Usta bacağı bayraklı IS MASTER = gerçek, diğer her bacağı yanlış. - **************** Şimdi bir KayıtMetadata (phoneServerInstanceId, dateRecorded, uzunMs, Katılanlar) ve Kayıt + KayıtÖrnek sıraları devam ediyor Img/ImgDat gibi aynı işlem. üyeId bacak başına çözüldü via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via via **************** VOIP örneğinden (nell when unassigned).
· kamo-internal
Update Platform Yönetimi kartları birleşik sekme yapısını eşleştirmek için
İki merdiven kartlarını değiştirin (Organizasyonlar standalone sayfası + Build) ile Gerçek sekmeleri eşleşen beş kart: Genel, Organizasyonlar, VOIP & SMS, Sistem Kullanıcı ve Gelişmiş - her bağlantı doğrudan doğruya mı bağlanır?tab= param.
· kamo-internal
Tam geniş ağ düzeni ve Gelişmiş sekmeden senkronizasyonu hareket ettirin
- Tam içerik alanı genişliği kullanmak için VOIP & SMS sekmesi: boru hatları Üst sıra, Kayıt İşleme ve Global Sync Schedule yan yana oturuyor lg+ breakpoint - Borulu istatistik kartları, sıfır devlet kontrol işaretleri ve hata ile canlı sayılarını gösterir Renk kodlaması; alt başlıkta her 30s otomatik-refresh - Global Sync kartı program ayarlarını konsolide eder, son keztamp satır, ve manuel tek bir panele dönüşür; arka planda kullanılan çipler - Gelişmiş sekmeden "Force global VOIP senkronizasyonu" hareket edin (duplicate of trigger) zaten VOIP ve SMS'de mevcut; Gelişmiş sekme şimdi yer sahibi metin gösterir
· kamo-internal
Merge Organizasyonları, birleşik sekme nav
- Formlar Ekle'de bir sekme olarak ekleyin**************** (General · Organizasyonlar · VOIP & SMS · Sistem Kullanıcı · Gelişmiş sipariş) - Delete ************ standalone sayfası - Update Platform Management nav in SettingsStatusWindow to list all 5 sekmes as sub-items editing to configuration?tab=... - Tüm sekmelerdeki düzeltme düzeni: tutarlı p: {xs:2, sm:3} padding o kadar içerik artık kart duvarlarına girmiyor - Para arka planları ve sıkı tipografi ritmi ile GeneralTab stat kartlarını geliştirin Update SettingsView adı /subtitle for the Whole page
· kamo-marketing
Add Go logo to BUILT WITH banner
· kamo-internal
Surface PHONE SERVER ID on phone-instance overview sekmesi
Operatörler, bir FreePBX ev sahipliğinde kamo-asterisk-support'i yapılandırıyor Oylama VoipProviderInstance UUUID to the helper's yapılandırma dosyası as PHONE SERVER ID. Şimdiye kadar URL barı veya URL barı aracılığıyla veya Veritabanı. Yeni "Phone Server ID" bölümü / sıralamalar / features/phone/{id} Genel bakış, UUID'yi bir tek tıkla monospace alanında tek tıkla gösterir kopya düğmesi (CopyableIdField helper, aynı zamanda benzer gelecek için yeniden kullanılabilir tanımlayıcılar).
· kamo-internal
Interaction Center'daki Clickable VOIP uzantıları, tamamlanmamış numara ile yumuşakphone açar

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