Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · kamo-internal

    Kawat Ketersediaan Menyediakan ke PresenceWrapper

  2. · kamo-internal

    Tambahkan kait WebSocket useavabilitySocket dan Konteks Avalability

  3. · SecurityService

    Auto- set anggota ketersediaan AVAILABLE pada login, AWAY pada log keluar

  4. · MediaService

    Tambahkan relay NATS STOMP untuk status anggota ketersediaan

  5. · SecurityService

    Perbarui ketersediaan titik akhir untuk memakai Keanggotaan Status enum

  6. · SecurityService

    Tambahkan Penerbit Status Availilisasi untuk pemutakhiran status anggota

  7. · InitializerService

    Migrage members.is _ availability _ status enum

  8. · kamo-shared-library

    Ganti boolean Tersedia dengan Dapat Dihitung Status 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

    Tampilkan tombol Manage Domain bagi pemilik org tingkat atas dan anggota sistem

  16. · kamo-internal

    Tampilkan tombol Tata Tagihan bagi pemilik org tanpa akun

    Ketika pemilik org membuka tab plans-billing dan tidak ada rekening penagihan ada, tampilkan bootstrap prompt daripada umum "kontak anda Pesan pemilik "org. Tombol memanggil POST / api / keamanan / akun / bootstrap- penagihan (idempoten) kemudian mengisi ulang akun tentang sukses.

  17. · SecurityService

    Tambahkan bootstrap--billing titik akhir untuk format yang telah ada

    POST * * * * * * * * * * * * * * * * memicu yang sama setup idempoten sebagai pengait penciptaan sub-org (Pengatur BilingSetupService .setupForSubOrganity Penciptaan) tetapi dapat dipanggil on- permintaan oleh pemilik org. Ini menangani orgs yang dibuat sebelum refactor penagihan dan Oleh karena itu tidak pernah menerima Rekening + AccountSubscription.

  18. · kamo-internal

    Wave 3 conversions, fallback fix, and auto- translate CI

    - Ganti semua hardcode string Inggris dengan t () panggilan melintasi gelombang 3 komponen (chat, clubhouse, dukungan, catatan, pipeline, lead, nav, dsb.) - Merge gelombang 3 fragmen ke pesan / en.json (+ 19 tombol) - Perbaiki placeholder bagian rumah dalam en.json (selamat datang, tagline, teks footer, akuntsDesc / networkDesc interpolasi ICU) - Perbaiki teks selamat datang mobile dalam pages.tsx untuk menggunakan t () daripada string hardkode - Permintaan Fix. hilang berkas lokal (pre- translate-CI) layani bahasa Inggris daripada menabrak, dan secara khusus - terjemahan locales kembali ke Inggris untuk kunci yang hilang - Update * * * * * * * * * * * * * * * * untuk mencocokkan kamo- pemasaran translate- dan- buat kembali pola: menyebarkan awal Layanan Penerjemah port-forward Commit berkas lokal menyeberangi berkas salinan asli dengan terjemahan

  19. · kamo-register

    Tempatkan nama panggilan inline setelah akhiran nama pada baris nama legal

  20. · kamo-internal

    Wire next-intl dengan member.language sebagai sumber lokal

    Tambahkan internasionalisasi berbasis selanjutnya ke kamo- internal tanpa URL locale prefix. Lokal aktif dibaca dari kamo- lokal cookie, yang mirror the authenticated member 'language' preference (set via Kartu pengaturan regional dalam * * * * * * * * * * * * * * * * * * * * * Infrastruktur: - i18n / locales.ts, i18n / request.ts: 22 locales didukung cocok dengan kamo- pemasaran - / api / i18n / set-locale: menulis kamo- locale cookie - LocaleBootstrap: syncs cookie to Menmber.language pada load dikonfirmasi pertama - I18nProviders: penggunaan inti MUI, x-data- grid, x- date- pickers locales dan date- fns adapter lokal ke bahasa aktif - Useformatters: locale-aware date / number / percent / relative- time assisters - Pengaturan Regional MyAccountTab save: tulis cookie + router.fresh () ketika pengguna mengubah bahasa mereka sendiri - script / translate.ts: build-time delta terjemahan terhadap Layanan Penerjemah (Cermin kamo- pola pemasaran) - skrip / merge- fragments.ts, * * * * * * * * * * * * * * * toolling untuk menggabungkan fragmen kunci daerah per ke pesan / en.json Coverage: - pesan / en.json berkumpul dengan kesamaan bersama. *, nav. *, auth. * kunci plus ekstraksi awal seluruh ~ 67 halaman dan komponen (dashboard, lead, commerce, settings, account, contations, settings / features, settings / member, komponen / pengaturan, komponen / alat / ai- chat, dsb.). Banyak fitur Permukaan masih perlu diikuti-up ekstraksi melewati.

  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

    Otomatis-penyediaan kursi KamoCRM pada penciptaan sub-org; promot- billing-pemilik titik akhir

    Layanan Entitlement berjalan Anggota Berlangganan (bukan Anggota Akuntasi) untuk menghitung anggota hak - serikat fitur di subs lisensi aktif, ditambah Baseline Bebas. Pendengar Redis memperoleh sebuah SUBSCRIPSI: < uid > handler. Layanan BillingSetupService baru mengalir dalam dua aliran: - createOrganization (sub-org under KamoCRM): auto- create a KamoCRM-org Anggota untuk pencipta jika tidak hadir, cari-atau-membuat Akun KamoCRM dengan Anggota sebagai primer, membuka sebuah Akuntasi Freetier menargetkan sub- org baru, dan kursi pencipta sebagai lisensi + sub- manajer. - POST * * * * * * * * * * * * * * * * {Y: i} membelai segar KamoCRM Akun / sub untuk anggota dari sub- org yang ada, mungkin mentransfer lisensi bernama. Organ-pemilik saja. AkuntController rute drop isLicensee / canManageSubscription dari rekening -level pelanggan payloads - bendera-bendera sekarang hidup di Timber Subscription.

  24. · InitializerService

    Tambah kolom _ mata uang dari bahasa anggota + baku

    Tambahkan dua kolom TIDAK KOSONG ke tabel anggota yang baru Anggota. Bahasa (VARCHAR DEFAULT 'ENGLISH') dan Member.default Mata Uang (VARCHAR (10) ruas DEFAULT 'USD'). baris yang ada di backfilled ke baku sehingga batasan NOT NULL dipenuhi tanpa waktu singkat jendela.

  25. · kamo-register

    Tambah langkah bahasa, batas waktu negara picker, gulungan + * * * perbaikan

    - New 'My Language' langkah mendahului kepada wizard, mencerminkan negara tata letak langkah. Batasi 22 pasar yang didukung lokal sebagai ubin bendera dengan nama asli + tooltip Inggris; pre- select dari navigator.lubang.s. - 'My Country' langkah sekarang mengumpulkan zona waktu bersama negara, digulingkan dari * * * * * * * * * * * * * dan editable sebelum Berikutnya. Kedua bidang diperlukan untuk maju. - Tubuh pendaftaran sekarang mengirimkan zona bahasa / waktu (ditambah negara yang ada) ke titik akhir register sehingga mereka bertahan pada Anggota baru. - Perbaiki: Pertanyaan Keamanan langkah konten sekarang dapat menggulung vertikal - langkah adalah satu-satunya tanpa overflow kontainer, katalog begitu panjang mendorong pertanyaan ketiga dari layar. - Perbaiki: Tombol Selesai tidak lagi tetap dinonaktifkan ketika * * * auto- verifikasi Sebelum pendengar kita menempel. Mengganti ras setTime 100ms dengan penyerbukan-until- dipasang melampirkan yang juga menguras keadaan widget saat ini pada melampirkan untuk pendengar akhir.

  26. · kamo-internal

    Tambahkan mata uang bahasa + baku ke kartu Pengaturan Regional

    Kartu Pengaturan Anggota profil Regional sekarang menampilkan Bahasa yang dapat disunting (22 lokal didukung mencerminkan situs pemasaran) dan Mata Uang Baku (searched Autocomplete) bersama Zona Waktu. Semua tiga menyimpan bersama-sama melalui PUT / api / keamanan / anggota / {id}. Mode tampilan menampilkan nama bahasa asli dengan bahasa Inggris dalam tanda kurung, ditambah simbol mata uang dan nama lengkap.

  27. · SecurityService

    Persist anggota bahasa / zona waktu / mata uang pada sign up

    Endpoint / register sekarang menerima bahasa, zona waktu, dan dulunege bersama dengan negara yang ada. Negara set Layanan Registrasi dan zona waktu pada pengguna baru dan menerapkan semua empat bidang regional ke Baru dibuat Anggota, mengambil mata uang baku dari negara pemetaan utama mata uang ketika salah satu tidak diberikan (dan kembali ke USD).

  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

    / akun / salinan baru dari -lead UX, ruas nama lengkap, dua ponsel, alamat; akun-level manajemen alamat

    Frontend: - / akun / baru: per- daerah "Salin dari Lead" button + header "Salin semua dari tombol Lead" (ketika leadId param) - Bagian nama: awalan, pertama, tengah, terakhir, akhiran - Telepon dual (kerja pribadi +) dengan ekstensi dan "Ijinkan teks" menala - Bagian alamat menggunakan bentuk EmbAddress (line1, rincian, kota, subdivisi, pos, negara) dengan "Gunakan sebagai penagihan terlalu" toggle (baku) - Kirim nama / email / telepon payloads yang cocok - AkuntApi: mengetik AccountName, AkuntPhoneNumbers, AccountAddress; metode baru: getAddresses, address, updateAddress, deleteAddress, setPrimaryAddress - AccountViewClient: render alamat pengiriman primer dari array alamat baru

  30. · SecurityService

    Support nested name / email / phoneNumbers + address management endpoint

    - AccountController menerima nama / email / telepon Nomor JSON pada POST / PUT - Alamat awal pada POST menciptakan SHIPPING (dan BILLLLING ketika useAsBillingToo diset), set pointer primer - Tambahkan 5 titik akhir alamat: GET, POST, PUT, DELETE alamat; PUT / address / {id} / primary - Ringkasan akun / detail mengekspos objek nama, objek nomor telepon, daftar alamat pengiriman / penagihan, pointer primer - Jatuhkan akunt- level catatan daerah referensi (Akunt.note telah dihapus sebelumnya)

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit