Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · kamo-shared-library

    Tambahkan pemeriksaan keunikan global

    * * * * * * * * * * * * * scopes oleh penyedia, dan bahwa benar sementara alias hanya pernah diselesaikan sebagai (security _ provider _ id, alias) - pasangan dibelakang < alias >. < parentdomain > tuan rumah. Dua organ di bawah penyedia yang berbeda bisa berbagi satu tanpa ambiguitas. Sebuah organisasi sekarang dapat dinamai secara langsung oleh alias, dengan? org =, dan pencarian yang tidak memiliki penyedia untuk scope oleh. Sebuah alias berulang membuat referensi platform ambigu-lebar, sehingga Organ Resolusi Layanan menolaknya daripada memilih satu - yang membuat kedua organisasi tidak dapat dihubungi oleh alias. Real estate sudah berisi pengulangan (empat organ berbagi "acme- corp", dua berbagi "kia-kaha"), itulah sebabnya si pemecah menolak, ini adalah apa yang berhenti lebih diciptakan. excludeId memungkinkan sebuah organisasi menjaga alias sendiri sementara bidang lain disimpan; lewati kosong ketika membuat. 1597 tes lulus.

  2. · KlusterServices

    Kirim laporan bug ke Sage terbuka VS Code

    Penangan URI yang membuat percakapan dalam jendela RUNNING dan pre- fills masukan, yang merupakan satu-satunya cara untuk mencapai as penyunting telah terbuka daripada memulai yang kedua di sampingnya. URI membawa prompt dan tidak lain, jadi model dan usaha pergi melalui coderProcessWrapper - pembungkus yang memetakan sebuah enum validasi untuk tetap bendera dan tidak pernah mengambil argv dari berkas, sehingga berkas palsu dapat memilih berbeda Model dan tidak lebih. URI pre-fill tetapi tidak mengirimkan, jadi mengirimkan adalah Return sintetis dan agen kemudian menunggu transkrip sebelum melaporkan sukses. The jarum yang terlihat adalah JSON- lolos: transkrip adalah JSONL, dan pencarian untuk baris baru mentah akan menandai setiap pesan dikirimkan sebagai gagal.

  3. · InitializerService

    Buat Tabel Bugs Sistem

    Tidak ada batasan CHECK pada kolom ordinal: support _ ticket _ status _ check adalah apa yang terjadi ketika Hibernasi membeku satu pada ukuran enum dan enum kemudian tumbuh, dan SystemBugStatusType diharapkan untuk tumbuh. Terapan ke yb-tserver: 5433 dengan tangan juga, karena layanan ini tidak memiliki CI.

  4. · kamo-internal

    Mengelola domain gubahan dari pengaturan Perusahaan

    Domain yang digunakan untuk menjadi pintu masuk ke dalam organisasi: DNS harus menjadi dikonfigurasi sebelum siapa pun bisa masuk sama sekali, itulah sebabnya / setup / dns adalah meraih dari org- pembuatan wizard dan dari "membutuhkan setup" spanduk agak daripada dari pengaturan. Hal ini opsional sekarang, sehingga milik dengan sisa Berlabel putih. Tambahkan suatu daerah Domain Gubahan ke Pengaturan Perilaku & Labeling, antara Company Info dan Branding. Ini menunjukkan domain org saat ini, atau mengatakan jelas bahwa tidak ada satu, dan membuka / setup / dns untuk menambahkan atau mengubah itu. Tombol bertuliskan "Set up a domain" atau "Manage domain" tergantung pada yang mana dari itu. Salinan mengarah dengan ruang kerja sudah dapat dicapai di kamocrm.com, sehingga pemilik yang tidak pernah ingin alamat mereka sendiri tahu ini adalah sesuatu yang mereka bisa mengabaikan. Menggunakan orgldStr daripada organisasi. id: daerah itu adalah nomor JS dan pemotongan int64 org ids masa lalu MAX _ SAFE _ INTEGER, yang akan membuka DNS halaman untuk organisasi yang berbeda. Tombol dinonaktifkan sampai menyelesaikan daripada menavigasi dengan id yang salah. Salinan mendarat di kamo- terjemahan - kamus pertama (98ee7cb6) - Kloning CI itu unpinned di image- waktu membangun, sehingga app- pertama adalah bangunan merah. 2921 tes dan semua 8 penjaga lulus, i18n termasuk.

  5. · SecurityService

    Kirim pohon pada titik akhir katalog app- juga

    Branch Types Ilegal Apps membangun penyunting dari katalog / fitur / app-, bukan dari daftar fitur penyewa, jadi itu adalah satu permukaan yang bisa tidak melihat aplikasi mana yang anak-anak yang. Seorang orang tua memutuskan apa yang Anak-anak bahkan dapat ditawarkan, sehingga editor membutuhkan bentuk yang sama. 947 tes hijau.

  6. · kamo-internal

    Render pohon aplikasi, dan mengkonfirmasi apa yang orangtua switch-off dibutuhkan

    Anak-anak sekarang duduk di bawah orang tua mereka dalam daftar Apps & Features, masing-masing dengan switch sendiri. Sarang diekspresikan oleh ORDER ditambah sebuah indent daripada kontainer nested, sehingga kartu yang ada, gerak dan kode gating adalah tak tersentuh - dan anak yang orang tuanya disaring dari tab saat ini masih menghasilkan pada tingkat atas daripada menghilang. Dua perilaku yang dilakukan Cascade: Menjungkit sekarang berlaku seluruh fitur server daripada membalik baris klik. Mengaktifkan anak mengaktifkan induknya dan menonaktifkan Orang tua mematikan setiap anak, sehingga pembaruan baris lokal akan meninggalkan UI tidak setuju dengan server tentang segala sesuatu yang lain cascade menyentuh. Kedua titik akhir sudah kembali daftar lengkap; tidak ada yang baru adalah membutuhkan server- side. Jalur lama-baris tetap sebagai fallback untuk Keamanan Layanan yang tidak mengirimkan daftar. Mengaktifkan orang tua meminta terlebih dahulu, penamaan anak-anak akan mengambil dengan itu. Itu tindakan yang lebih besar dari yang terlihat. Pohon ini berasal dari fitur titik akhir daripada cermin TypeScript ServiceType - mereka telah melayang dari Java dua kali sudah, dan server adalah satu-satunya tempat yang tahu katalog operator. 203 berkas tes / 2921 tes hijau, membangun bersih.

  7. · InitializerService

    Harga anak-anak perdagangan dan EHR, dengan penjaga total

    Baik peta harga memiliki pemeriksaan total, dan dua mode kegagalan adalah berbeda dan keduanya diam. Hilang dari CATALOG, aplikasi negeri mana pun pada matriks harga. Hilang dari TIERS, setiap tingkat menulis adalah _ include = false - sebuah DENIAL eksplisit bahwa hak kegagalan-terbuka tidak TIDAK penyelamatan, karena fail-open hanya berlaku ketika sebuah rencana tidak memiliki baris sama sekali dan ini menulis satu. Jadi aplikasi yang terlupakan juga diberikan kepada semua orang atau padlocked untuk semua orang, dan yang satu tergantung pada detail tidak ada ingat pada saat itu. Lima vertikal perdagangan duduk tepat di telepon POS. Mereka tidak Dibeli secara terpisah sebelum pohon aplikasi - sesuatu org memegang POS bisa melakukan, itu bisa melakukan - sehingga menempatkan mereka di tempat lain akan retroaktif biaya untuk kemampuan orang sudah memiliki. Sebuah pin tes yang untuk POS agak daripada ke literal, sehingga bergerak POS bergerak mereka. EHR dinegosiasikan seperti sistem asal: tidak ada harga daftar, Rencana CUSTOM saja, absen dari setiap tingkat. Onboarding a PHI pelanggan artinya BAA dan peninjauan, bukan checkout. 159 tes hijau.

  8. · kamo-marketing

    Berhenti menghitung kunjungan anggota ke link mereka sendiri

    Seorang anggota memeriksa bahwa pekerjaan pelacakan mereka sendiri adalah yang paling umum pertama kunjungi setiap kode yang pernah diperoleh, dan itu lebih buruk dari tidak berguna: itu inflate nomor mereka diukur pada, itu tidak dapat dibedakan dari prospek nyata dalam pengunjung laci, dan itu membuat mereka memegang cookie pengunjung permanen jadi setiap kunjungan kemudian menghitung lagi. Sebuah kode menunjukkan tiga kunjungan, mereka semua orang yang minted itu, catatan pembayaran dengan kebohongan di dalamnya. Situs ini adalah satu-satunya asal yang dapat menjawab pertanyaan - tidak memiliki sesi dan tidak ada anggota, dan konsol internal tidak dapat mengatur cookie pada www. < apex > dari internal. < puncak >. Apa yang melintasi celah yang merupakan link: tiba dengan? mrt _ self = 1 mint exclusion, dan sejak saat itu pada browser tidak termasuk pada setiap kunjungan apakah atau tidak parameter ada. Tab Kode Pelacakan internal menumbuhkan kendali yang menghasilkan link itu. Tidak menambang tidak cukup, sehingga kunjungan dikeluarkan DELETES pengunjung dan sumber Kue juga. Seorang anggota yang preview link mereka sebelum ini dikirim, atau yang memilih keluar pada browser sudah dihitung, masih membawa GUID - dan api suar untuk siapa saja yang memiliki satu. Tanpa menghapus opt- out hanya akan pernah bekerja untuk orang-orang yang tidak membutuhkannya. Kekurangan ini sengaja TIDAK dalam TRACKING _ COOKIES: yang set adalah apa cookie menghapus kontrol kebijakan membersihkan, dan menyapu opt- OUT dengan identifier akan diam-diam mererol satu pengunjung yang meminta untuk tidak dihitung - pada kontrol kemungkinan besar akan ditekan oleh persis orang itu. check-discount- cookie tumbuh dari 50 cek ke 72, meliputi pencocokan nilai, pengejaan parameter, delegasi -set pengecualian, dan dua sumber invarian (Middleware harus menghapus identitas, suar harus jaminan lokal karena middleware berjalan pada permintaan dokumen ketika beacon berjalan pada setiap sisi client- navigasi).

  9. · kamo-internal

    Widget Papan Scoreboard Affiliate

    Satu kolom grid lebar dan dua baris tinggi: sepuluh orang dalam organisasi membawa paling banyak melalui link pelacakan mereka, lebih hari ini, bulan ini, ini tahun atau sepanjang waktu, pembukaan pada pengunjung bulan ini. Reorder adalah fitur. Setiap cara lain menunjukkan empat metrik lebih dari empat jendela adalah enam belas daftar terpisah; ini adalah salah satu daftar yang mengatur ulang sendiri. Baris yang dikuatkan oleh anggota dan membawa animasi tata letak, jadi beralih kategori slide orang yang sama melewati satu sama lain daripada mengosongkan panel - dan kait terus setiap papan telah diambil, sehingga pers yang memicu animasi yang data untuk animasi pada frame yang sama. Pemilih disimpan terhadap profil anggota, bukan localStorage, jadi papan seseorang diatur di meja mereka adalah papan mereka mendapatkan di laptop mereka. Keduanya pembaca downgrade sebuah nilai tidak dikenal ke baku daripada menolaknya - server menerapkan aturan identik dan gema kembali apa yang digunakan, sehingga preferensi ditulis oleh membangun yang lebih tua tidak pernah bisa meninggalkan anggota pada panel kosong. Seorang anggota di luar sepuluh besar mendapat baris mereka sendiri terjepit di bawah daftar, dan anggota dengan apa-apa belum mendapatkannya di peringkat nol. Sebuah papan yang hanya bisa mengatakan "Anda tidak di dalamnya "adalah satu hal papan skor tidak boleh dilakukan untuk orang-orang itu ada untuk memotivasi. Juga di sini, karena itu adalah masalah yang sama dari ujung lainnya: "preview" kontrol pada tab Codes Tracking yang membuka sebuah link TANPA menghitung kunjungan. Memeriksa dimana link tanah Anda sendiri adalah kunjungan pertama yang paling umum yang pernah mendapatkan kode, dan menghitung menempatkan klik anggota sendiri ke dalam catatan mereka diukur. buildTracking PreviewLink adalah link nyata ditambah penanda situs pemasaran membaca - kontrak cross- repo, sehingga pin tes nama parameter.

  10. · MediaService

    Penjualan Affiliate Endpoint

    GET * * * * * * * * * * * * * * * * * * jawab ini sepuluh besar organisasi untuk satu metrik di atas satu jendela, ditambah sendiri pemanggil berdiri ketika mereka tidak di atasnya. Counter pada MARKETING _ TRACKING _ CODES tidak dapat mendukung ini: mereka semua-waktu roll-ups tanpa dimensi waktu, dan tidak ada dalam total yang berjalan mengatakan ketika semua itu terjadi. Kebenaran jendela berada di baris - * * * * * * * * * * * * * untuk akuisisi, dan setiap konversi sendiri * _ AT cap di MARKETING _ VISITORS. Yang juga mengapa Semua Waktu setuju dengan kode kisi: data yang sama, dihitung dengan cara yang sama, bukan penjaga buku kedua. Empat keputusan yang layak dinyatakan: - Akuisisi adalah tanggal oleh kontak pertama, bukan oleh aktivitas. Menghitung pengunjung yang hanya aktif di jendela akan re- kredit orang yang sama setiap bulan, sehingga pekerjaan dilakukan sekali akan out-peringkat pekerjaan dilakukan sekarang, selamanya. - Peringkat penghianatan oleh trackingCodeId sendiri. Kolom yang membeku saat sebuah akun ada; terakhir Pelacak Codel terus bergerak, dan peringkat off itu akan membiarkan satu anggota mengambil lain tertutup konversi dengan klik ekstra. - Jendela dipotong dalam kalender MEMBER dan dibandingkan di UTC. "Bulan ini" berbeda hingga hari yang tergantung pada kalender yang ditanyakan, dan setiap kolom dalam skema ini adalah offset-free LocalDateTime yang berarti UTC. - Semua empat metrik dihitung per permintaan, jadi beralih kategori adalah instan bukan spinner. Gated on Affillate _ SCOREBOARD _ WIDGET dan tidak ada yang lain - lihat hak sendiri Javadoc. Ini membeli tidak ada bor-down: tidak ada kode id, tidak ada id pengunjung dan tidak ada anggota parameter pada titik akhir, dan setiap by- id analitik titik akhir masih berjalan melalui MarketingTracking Scope Resolver tidak berubah. Empat agreasi menggunakan koma- bergabung daripada JOIN.. ON karena keduanya kunci asing adalah asosiasi JPA dan bentuk koma parse pada setiap Hibernasi versi armada berjalan - MarketingTracking HqlTest sekarang parses keempat terhadap model entitas nyata pada 6.2.13, dan pin akuisisi, atligence dan penyewa memprediksi yang gagal diam-diam jika mereka hanyut.

  11. · kamo-shared-library

    Tambahkan hak-hak widget Affiliate Sales Scoreboard

    Lima hak, 234238, dalam kelompok Marketing dan menggantung di VIEW _ REFRAL _ CODES: sebuah papan referensi nomor pelacakan-kode data, dan anggota yang mungkin tidak melihat tab Codes Tracking tidak memiliki bisnis di atasnya. Widget yang benar - bukan VIEW _ ALL _ MEMBER _ TRACKING - adalah apa yang menghilangkan yang lain total anggota, dan yang disengaja. 200 / 201 gerbang ANALYTICS: yang pengunjung, yang alamat, yang jadwal, diselesaikan per anggota target oleh scope resolver. Sebuah papan skor membuang nama, pangkat dan satu angka, untuk Semuanya sekaligus. Perlu analisis org- lebar kanan akan meninggalkan terlihat hanya untuk administrator yang memegang satu, yang merupakan laporan daripada papan. Tidak sengaja dicari, untuk alasan yang sama 200 dan 201 tidak: bibit akan mempublikasikan rujukan setiap pemegang yang ada total untuk rekan-rekan mereka pada boot yang dikirim itu, yang merupakan keputusan pengungkapan dibuat oleh menyebarkan bukan oleh seorang administrator. 229 / 166 / 32 / 31 dalam bentuk audit - semua lima adalah anak-anak dan VIEW _ REFRAL _ CODES adalah sendiri seorang anak dari VIEW _ MARKETING, sehingga baik bucket root bergerak.

  12. · kamo-login

    Brand and scope the sign-in screen with? org =

    login.kamocrm.com adalah tanda-di layar untuk setiap organisasi yang tidak memiliki host sendiri, sehingga hostname tidak dapat mengatakan mana yang masuk.? org = tidak: nama organisasi oleh id atau alias, memilih branding ke cat, dan perjalanan dengan kredensial sebagai organisasi mereka Diperiksa melawan. Petunjuk, bukan kredensial. Keanggotaan terbukti sebagai pelayan. penamaan sebuah organisasi Anda tidak termasuk untuk mendapatkan penolakan yang sama sebagai penamaan Yang fiksi. Referensi terburuk adalah logo yang salah pada halaman publik. Branding berasal dari SecurityService 's / org / public / {ref}, relayed agak daripada diimplementasikan ulang sehingga aturan tentang apa acuan yang dapat diungkapkan dapat mengekspos tetap di satu tempat. Dasar tema kemudian mengikuti organisasi bukannya host, seperti yang diberikan: menjatuhkan label pertamanya cara jalur host tidak akan mengubah acme.kamocrm.com menjadi kamocrm.com dan melukis penyewa di Platform ini branding. Cat pertama selalu menggunakan branding host, karena referensi belum diselesaikan; KAO _ THEME _ REAPPLY lukisan kembali setelah memiliki. Kunjungan bahwa nama tidak ada organisasi membersihkan referensi kunjungan sebelumnya direkam dalam tab ini, sehingga platform sendiri layar tidak menyimpan orang lain logo.

  13. · SecurityService

    Layers-action

    Login, pendaftaran dan pertemuan lobby cat warna organisasi sebelum sesi apapun ada. Mereka tahu yang mana dari nama host, yaitu Apa sebenarnya sebuah organisasi tanpa nama host sendiri tidak bisa memasok. GET / api / Security / org / public / {ref} ternyata sebuah eksplisit? org = referensi -- id sebagai digit, atau alias - menjadi sesuatu untuk melukis. Branding HANYA: nama, logo, warna, lokal, host tema. Bukan fitur, bukan Hak, bukan domain, bukan anggota. Upaya pertama pada ini digunakan kembali diproyeksikan organisasi catatan dan titik akhir ratchet menolaknya, benar -- alias bisa menebak, jadi catatan lengkap di balik tebakan referensi menghitung konfigurasi setiap organisasi. Apa yang tersisa adalah apa ada yang membuka organisasi yang tanda-di halaman sudah melihat, dan nama tes yang dikecualikan secara individual jadi menempatkan satu kembali harus disengaja. Baca saja. Fitur app sobling / org / domain / {host} auto-ketentuan sebagai efek samping; titik akhir dapat dicapai dengan menebak tidak boleh menulis. Referensi 404s yang tidak diketahui, dan begitu juga alias ambigu -- byPublicRef sudah menolak satu penamaan beberapa orgs, dan pin ini bahwa penolakan Mencapai penelepon sebagai "tidak ada organisasi seperti itu" daripada sebagai orang lain Bermerek. Penelepon jatuh kembali ke platform sendiri. Domain tema membawa nilai yang sama dengan shell dan penggunaan penyedia tema, sehingga layar pra-sesi membaca merek org dari folder itu sebenarnya ditulis ke -- {alias} .kamocrm.com untuk org tanpa domain. 947 tes lulus.

  14. · MediaService

    Menolak rekaman pertemuan untuk penyewa yang menangani PHI

    Kemampuan split membuat ServiceType.MEET diizinkan - sebuah konferensi langsung pada self-hosted Meet tidak pernah meninggalkan cluster - sementara meeting _ RECORDING tetap diblokir, karena ini posting pipa seluruh transkrip ke multi- provider AI router dan kemudian email hasil untuk setiap peserta termasuk tamu luar. Itu adalah salinan ketiga yang tak dapat dibatalkan. Penjaga duduk di tertelan pribadi () kedua titik entri publik saluran melalui, sehingga menolak sebelum setiap byte mencapai MinIO, dan lagi di atas dari RunSummaryPipeline, yang publik dan @ Async. 200 tes hijau.

  15. · VOIPService

    Kemampuan diblokir sekarang outranks kanan, dan mode Tuhan

    PhiPlaybackauthorzer gated PHI call playback on VIEW _ CALL _ LOGS. Itu pemeriksaan seluruh karena ServiceType.VOIP dipetakan ke diblokir VOIP _ RECORDING modul, sehingga penyewa PHI tidak dapat memiliki sistem telepon di semua dan kelas ini tidak pernah berlari untuk satu. Kemampuan split membuat VOIP sendiri diizinkan - penanganan panggilan adalah in- cluster - sementara VOIP _ RECORDING tetap BLOCKED _ PENDING _ works untuk alasan yang belum berubah: pemutaran tidak melakukan pemeriksaan clearance, transkrip naik dalam metadata, dan tidak ada retention atau menghapus jalur. Pergi sendiri yang akan menjadi lemah lurus: penyewa PHI dapat memungkinkan sistem telepon dan, dengan satu hak diberikan, memutar kembali semuanya. Jadi PhiCapbility Penjaga berjalan pertama dan penolakan adalah final. Tidak perlu. parameter pemanggil, sehingga untuk penyewa PHI hak tidak mengangkat itu - dan baik melakukan sesi dewa aktif, yang merupakan properti yang paling penting. Sekarang * * * * * * * * * * * * * * * Tiga tes dikodekan kontrak lama dan ditulis ulang daripada dihapus, setiap rekaman mengapa harapan terbalik. Pesan penolakan pesan pesan suara tidak lagi menyalahkan hak yang hilang, yang Biasanya bukan alasan lagi. 152 tes hijau.

  16. · SecurityService

    Sajikan pohon aplikasi, dan perbaiki otomatis yang tidak dijaga -enable

    FeatureController now sends parents / children / isParent on every serialized aplikasi sehingga klien dapat membuat anak bersarang di bawah orang tua mereka. Disajikan daripada dicermin dalam TypeScript dengan sengaja: Cermin ServiceType telah melayang dari Java dua kali sudah dan salinan kedua pohon akan menjadi satu hal lagi untuk melayang. Tidak ada bentuk respon baru yang diperlukan untuk cascade - / aktifkan dan / non-aktifkan telah men-serialisasi seluruh daftar fitur, jadi perubahan telah tiba tanpa klien mendamaikan apapun. Kedua loop auto- penyediaan sekarang melewatkan anak yang induk platform tidak tidak menawarkan, karena enableFeature cascades orangtua pada dan sebaliknya menyalakan orang tua tidak ada yang diterbitkan. Loop Kontroller Organisasi memiliki NO PHI cek sementara FeatureController ekuivalen lakukan, pada publik tidak dikonfirmasi titik akhir. Untuk penyewa Phi modul pertama diblokir melemparkan, menangkap sekitarnya login peringatan, dan efektivisasi Features diam-diam jatuh kembali ke baris mentah dengan tidak ada applied- model proyeksi. Sekarang ini meminta daripada menangkap, persis sebagai fitur daftar tidak. / api / keamanan / ehr terdaftar. Prefiks perdagangan tetap dipetakan ke POS: orang tua adalah gerbang kasar kanan dan * * * * * * * * * * * * * Sudah ada di setiap pasar. 938 tes hijau.

  17. · kamo-internal

    Cermin enam aplikasi anak perdagangan, dan menghentikan cermin melayang

    Kedua TS cermin sekarang diterima dari ServiceType.java daripada Terjaga. Mereka telah melayang buruk dari Jawa dan dari satu sama lain: "Integrasi RAG" dan "Falls kembali ke organisasi induk SMTP" salin bahwa Java dihapus pada 2026-08, POS ditandai PLANNING dalam ServiceType.ts sementara AppType.ts mengatakan COMPLETED, dan deskripsi yang berbeda untuk yang sama aplikasi di setiap berkas. Perlu diketahui sebelum mempercayai mereka: display Nama dan deskripsi di sini dibaca oleh NOTHING. Setiap konsumen menggunakan konstanta ini hanya untuk identitas - Hasfeature () cocok pada id, appServiceIcons kunci pada nama. Salinan berasal dari GET / api / keamanan / fitur, yang menghormati PLATFORM _ APP _ CATALOG overrides cermin tidak bisa melihat. String disinkronkan sehingga pembaca tidak menyesatkan, dan kepala berkas mengatakan tidak untuk mulai merender mereka. Pohon induk / anak tidak dicermin - fitur titik akhir mengirim induk / anak / IsParent per aplikasi, dan salinan kedua dari bentuk akan menjadi satu hal lagi untuk melayang. Juga: sebuah ikon per vertikal baru daripada meminjam orang tua toko depan, dan organisasi getters termasuk isEhr.

  18. · kamo-internal

    Satu scrollbar, tiga kali lebih lebar, turun setiap percakapan

    Bar di samping pesan adalah 8px dalam anggota chat dan SMS, 6px dalam tiket dukungan dan sosial, dan dalam percakapan AI tidak ada sama sekali: daftar yang dideklarasikan 'scrollbar-width' inline di samping aturan:: -webkit-scrollbar, dan sejak Chrome 121 sebuah bukan-inisial 'scrollbar-width' atau 'scrollbar-color' membuat peramban mengabaikan seluruh blok -webkit- - sehingga ia meminta 12px dan mendapat platform garis rambut. dokumen globals.css yang aturan untuk scroller halaman; tidak ada Dipaksa, dan percakapan Al telah diam-diam berada di sisi yang salah itu. Semua lima sekarang membaca satu CHAT _ SCROLLBAR konstan: 24px selokan - tiga kali anggota chat 's lebar lama - dengan thumb inset 6px kedua sisi oleh batas transparan, sehingga bar yang lebar masih dibaca sebagai pil dalam palung daripada lempengan dilas ke tepi jendela. Percakapan Al properti standar pindah ke '@ supports not selector (: -webkit- scrollbar)', dimana tempatnya globals.css menempatkan mereka dan satu-satunya tempat Firefox membaca mereka tanpa biaya Chrome aturan. Tes ini adalah sumber-tingkat karena subjek adalah stylesheet dan implementasi jsdom tidak ada scrollbar: ini pin bahwa tidak ada ukuran jendela batang dari literal, dan bahwa tidak satupun dari mereka menetapkan standar properti tidak dijaga lagi.

  19. · InitializerService

    Memperluas pasar yang tumbuh menjadi pohon app-

    kakek Existing GatedMarkets sudah berjalan di pasar aktif org, menyelesaikan getRequireService () dan mengaktifkan aplikasi yang hilang - itu hanya terbatas pada kata kerja, yaitu MORTGAGE dan PERSONAL-LOANS. Sekarang bahwa setiap nama CommerceType sendiri aplikasi anak hilang, sehingga loop yang sama biji RETAIL / RENTAL / PELAYAN / SUBSCRITION / Baris PROCUREMENT. Tidak ada migrasi baru yang diperlukan. Juga benih RETAIL untuk orgs yang memegang POS tanpa pasar sama sekali, yang telah bekerja perdagangan di depan pohon karena eceran tidak membutuhkan aplikasi sendiri. Orgs tingkat atas tidak lagi dilewati, dan itulah memperbaiki yang penting. Pembebasan itu benar ketika ini hanya diberikan dua pinjaman aplikasi - sebuah platform-operator org seharusnya tidak diam-diam memperoleh MLOS - tapi itu salah bagi pohon aplikasi, karena iisEfektivektivyDiaktifkan memerlukan Fitur Organisme ROW dan tidak memiliki pengecualian tingkat atas. Yang pertama berjalan dilaporkan sukses sementara Meninggalkan KamoCRM, yang menjalankan RETAIL aktif dan pasar SUBSCRIPSI, dengan tidak ada baris untuk baik; itu akan kehilangan baik dari / perdagangan pada berikutnya Keamanan Layanan menyebar. Tertangkap dengan menanyakan basis data, bukan dengan membaca log. enableFeature now cascades a child to its parents, so seeding a child also jaminan baris POS. Lari melawan prod 2026-08-24. Diverifikasi: setiap baris _ pasar perdagangan aktif sekarang memiliki anak aktif Organ baris, nol hilang.

  20. · SecurityService

    Entitled- periksa setiap vertikal, bukan hanya gated dua

    Setiap CommerceType kini menamakan sendiri aplikasi anaknya di bawah POS, jadi isGated () sirkuit pendek yang melambai ritel, penyewaan, layanan, subscriptions Dan pengadaan lurus melalui hilang. Pasar tersebut sekarang diperiksa terhadap aplikasi mereka sendiri - yang merupakan titik: vertikal dapat dijual, dan dimatikan, sendiri. Tergantung pada backfill KamoInitializer yang telah dijalankan.

  21. · kamo-internal

    Pencarian toolbar adalah sebuah glif yang membuka ke dalam sebuah bidang

    Percakapan anggota membawa kotak pencarian permanen di atas jendela - lebar dari seluruh bilah alat, dihabiskan untuk kontrol yang kosong hampir semua waktu dan digunakan dalam semburan. Ini sekarang sebuah pembesaran 28px yang membuka ke lapangan pada klik, dan toolbar dibaca sebagai empat Tulisan dan udara. Ide itu dibangun di sekitar: pembesar tidak pernah bergerak dan tidak pernah bertukar. Tergulung, pil 28px dan ikon duduk di pusatnya, 14px dari tepi kiri; terbuka, pil memiliki 6px padding sebelum ikon 16px, yang menempatkan tengah ikon di 14px lagi. Karena itu pil tumbuh keluar dari belakang glyph yang memegang masih, dan kontrol berbunyi sebagai salah satu objek membuka agak dari dua negara bagian yang saling berhadapan. Lebar mata air dengan sedikit overshoot dalam perjalanan terbuka dan tidak ada dalam perjalanan ditutup; placeholder trails pertumbuhan oleh 60ms sehingga teks tiba dalam kotak yang sudah memiliki ruang untuk itu; jelas kontrol mata air hanya sekali ada sesuatu untuk membersihkan. Penutupan selalu membersihkan permintaan, dan bidang tidak dapat disingkirkan sementara memegang satu: runtuh pembesar masih menyaring percakapan akan menjadi jendela berbohong tentang apa itu Tampilkan. Blur daun itu terbuka dengan teks di dalamnya, dan klik menyimpang pada glyph memfokuskan field daripada mengabaikan pencarian. Gerakan reduced dihormati seluruh, glif membawa cincin fokus untuk Tab serta klik, dan jarak 50px yang diperlukan kotak tua itu hilang bersamanya.

  22. · kamo-shared-library

    Setiap nama vertikal aplikasi anak sendiri

    layanan Sampel menjadi total sekarang bahwa masing-masing vertikal memiliki aplikasi anak di bawah ServiceType.POS, yang menghapus "null berarti POS saja sudah cukup" Kasus khusus dan penuh dengan itu. Setiap vertikal sekarang dapat diaktifkan, lisensi dan PHI- diklasifikasikan secara independen - yang adalah apa yang memungkinkan medis praktek menggunakan perdagangan sama sekali, karena RETAIL tetap diblokir untuk penyewa PHI Sementara sisa perdagangan tidak. HEALTHCARE (ServiceType.EHR) adalah apa yang membuat EHR muncul di * * * * * * * * * * * * * * ketika aplikasi sedang aktif, tanpa gating baru kode: assertCommertCommerceTypeAllowed, getAllchoidCommerceTypes, alloud- tipe titik akhir di balik kedua pemetik pasar, * * * * * * * * * * * * * * dan filter daftar pasar semua Sudah diselesaikan melalui getRequireService (). TIDAK DIPUTAKAN sampai backfill KamoInivalizer telah berjalan. assertCommerceTypeAllowed membaca getqueedService () secara langsung, sehingga saat SecurityService melihat ini setiap org dengan pasar ritel atau sewa membutuhkan sebuah baris Organ anak yang diperlukan belum.

  23. · MediaService

    Biarkan konfigurasi publik ditangani oleh id org, tidak hanya dengan host

    The bertemu sescar mencari sebuah org bertemu config untuk memutuskan apakah tamu membutuhkan password pertemuan. Ini ditanyakan oleh hostname, yang pada pertemuan bersama host memecahkan ke organisasi platform - sehingga penyewa yang membutuhkan sandi akan memiliki persyaratan yang diam-diam menjatuhkan untuk setiap tamu bergabung dengan link. Seorang tamu tidak memiliki sesi, sehingga satu-satunya penamaan penyewa mereka adalah ruangan, yang sekarang membawa token org. Kedua titik akhir publik oleh karena itu menerima eksplisit orgId dan kembali ke pencarian domain ketika tidak diberikan, jadi tidak ada yang meminta oleh host perubahan hari ini. Ids tiba sebagai digit dan parse sebagai panjang: mereka melewati 2 ^ 53, jadi satu Dijalankan melalui nama ganda organisasi yang berbeda. 200 tes lulus.

  24. · kamo-shared-library

    Fitur Cascade aktif / non-aktifkan di seluruh tree aplikasi

    Mengaktifkan anak memungkinkan orang tuanya; menonaktifkan orang tua mematikan setiap anak; menonaktifkan anak terakhir mematikan orang tua. Mengaktifkan induk Meninggalkan anak-anak sendiri, sehingga orangtua sengaja beralih dengan sengaja tidak anak-anak tetap di. Cascade adalah event- didorong dan sengaja tidak ada rekonsiliasi Sapu. Itu adalah properti keselamatan: secara terus menerus-dipaksa "orangtua dengan tidak ada anak yang difungsikan mati "invariant akan beralih perdagangan off untuk setiap org yang ada saat ini dikirim, karena baris anak tidak ada sampai backfill KamoInitializer berjalan. Seorang anak menegaskan pengawal PHI pada modul induknya serta sendiri, sebelum menulis apapun - jika tidak anak diizinkan di bawah orangtua diblokir akan terdampar atau akan diam-diam beralih orangtua diblokir pada.

  25. · kamo-shared-library

    Tambahkan PhistabilityGuard untuk call- time kapability checks

    PhiTenantGuard berjalan di feature- memungkinkan waktu dan tempat lain - tiga panggilan Situs, semua di FeatureService. Sekarang bahwa PhiModule adalah capability- beruban, aplikasi yang inti diizinkan masih dapat berisi kemampuan yang tidak, dan memeriksa sekali waktu tidak bisa melihat perbedaannya. Tanda tangan yang sama seperti PhiTenantGuard: fungsi murni dari (status, module) dengan tidak ada penelepon, benar atau mode parameter god-, jadi ada Tidak ada yang bisa meningkatkan. Kelas sederhana daripada stereotip - sebuah shared- lib @ Komponen membutuhkan sebuah repositori tidak terpindai memiliki layanan crash- loopped empat kali; setiap layanan mengkonsumsi mendeklarasikan sendiri @ Bean. CATATAN: MEETING _ RECORDING dan VOIP _ RECORDING sekarang tidak terikat dari apapun ServiceType tetapi belum dijaga pada situs panggilan mereka - yang berikutnya lakukan menyentuh MedidiaService dan VOIPService. Ini adalah inert dalam produksi Sementara itu karena setiap org saat ini memiliki handlesPhi = salah, tetapi panggilan situs harus mendarat sebelum setiap penyewa ditandai.

  26. · kamo-shared-library

    Pecah PhiModule dari app- beruban ke capability- beruban

    POS dipetakan ke ECOMPERCE _ SYNC (BLOCED _ NO _ BAA) dan seluruh perdagangan permukaan hang off POS, sehingga org dengan handlesPhi = true tidak dapat switch sama sekali - tidak ada pasar, tidak ada / perdagangan, dan tidak ada vertikal klinis dibangun di atasnya. Adaptor sepuluh eceran sync adalah hal yang meninggalkan batas, bukan tulang belakang perdagangan. POS sekarang memetakan ke PERINTAH _ CORE (diijinkan) dan ECOPERCE _ SYNC scopes bawah kepada anak RETAIL. Koreksi yang sama untuk MEET (live conference vs ringkasan baris pipa yang surat-surat transkrip ke inferensi eksternal) dan VOIP (Telepon vs disimpan rekaman dan transkrip). Meting _ RECORDING dan VOIP _ RECORDING sekarang tidak memiliki ServiceType sama sekali: mereka adalah kemampuan hanya dapat dicapai melalui kode, dan Javadoc PhiModule kini menyatakan aturan Bahwa Musti konstan tersebut akan diperiksa oleh PhiCapabilityGuard pada panggilan situs. Memulihkan aplikasi seperti yang diijinkan tanpa menjaga kemampuan Di dalamnya tertulis sebagai compliant sementara menegakkan apa-apa. AI _ ASSISTANT dan RAG _ SEARCH sengaja tetap diblokir: KlusterServices memiliki penggelapan, bisikan-asr dan terjemahan tetapi tidak ada LLM generatif, dan RAG saham satu koleksi Qdrant terisolasi oleh filter muatan. Memisahkan itu akan menjadi perubahan kertas. Dua tes dikodekan app- grained model dan diperbarui daripada extended: PhiServiceTypeMapping Test 's blocked- app assertion, and FeatureServicePhiGateTest, yang diblokir pengecualian bergerak dari VOIP ke RETAIL - VOIP tidak lagi dapat dibantah pada waktu aktif.

  27. · kamo-internal

    Daratan di dalam org yang baru dibuat daripada di setup DNS

    Membuat sebuah org mengarahkan pencipta ke / setup / dns, dan alasannya adalah nyata: ending berarti sebuah OTK redirect ke internal. < new-domain >, dan brand- baru org tidak memiliki DNS, jadi host itu tidak dapat dihubungi. Mengkonfigurasi DNS karenanya harga membuka hal yang baru saja Anda buat - dinding yang tepat ini pekerjaan dihapus. Panggilan penciptaan sudah kembali satu-waktu kunci; penyihir hanya punya tempat untuk menghabiskannya. Sekarang menghabiskan pada saat asal, di mana sesi names the org, so there is no host to wait. Domain masih layak dimiliki dan Pengaturan adalah tempat tinggalnya sekarang: sebuah Pilihan langkah white- label daripada pintu. Peringatan percabangan adalah dilakukan melalui cara baik, dan jika tidak ada kunci datang kembali org masih ada, jadi wizard mendarat di pemandangan perumahan daripada gagal. check- client- navigasi benar ditandai window.location.hrefre. Its sendiri nama dokter / validate dengan satu waktu kunci sebagai batasan sesi asli melompat, jadi ini allowlisted dengan alasan itu daripada bekerja di sekitar - router akan menyimpan sesi OLD pencipta, yang tepatnya apa sedang diganti. 2857 tes dan semua 7 penjaga lulus.

  28. · kamo-shared-library

    Berikan ServiceType sebuah dua- level induk / anak pohon

    Enam anak-anak perdagangan pada ID baru 26- 31, ditransfer ke POS dalam blok statis pada Pola RoleRightType (sebuah konstanta enum tidak dapat mereferensi lain dari yang banyak membenarkan lagi: MLOS dan LOS reparent tanpa mengubah id, karena ORG _ FETURES mempertahankan id melalui ServiceTypeConverter dan bergerak satu akan menugaskan kembali setiap baris yang ada. Salinan POS menjadi "Garis Bisnis" sekarang bahwa orang tua meminjamkan dan catatan pasien; nama konstan tetap POS karena * * * * * * * * * * * * * * * Tetap nama sebagai string. Its tua keterangan bergerak ke RETAIL, dimana itu akurat dan sudah diperiksa ServiceTypeCustomer Test. Konstanta baru kapal PLANNING / disabled sehingga FeatureController.list 's loop auto- penyediaan tidak dapat mengaktifkan mereka untuk setiap org. PhiServiceTypeMapping Uji gagal oleh desain sampai komit berikutnya memetakan konstanta baru; kedua tanah dalam satu dorongan.

  29. · kamo-internal

    Membuat org tanpa domain dapat digunakan

    Memasuki sebuah org berarti navigasi ke * * * * * * * * * * * * * * * * * * Tanpa domain yang URL diberikan sebagai literal * * * * * * * * * * * * * * * Jadi Enter dinonaktifkan dan pemilik dialihkan ke / setup / dns sebagai gantinya - DNS adalah pintu, bukan Pilihan label putih. Area kerja sekarang dibuka pada asal CURRENT ketika tidak ada gubahan langsung host, dan sesi nama org. Penyewa dengan domain yang bekerja masih terbuka pada inangnya sendiri, sehingga tidak ada perubahan untuk siapa pun putih dilabeli. Sebuah domain kustom yang belum selesai diperlakukan seperti tidak ada domain: bahwa HOST tidak dapat melayani belum, yang tidak sama dengan org yang tidak dapat dihubungi. canEnterOrg karena itu kunci pada hal yang selalu nyata Sebelum kondisi -- keanggotaan yang dapat digunakan -- bukan pada domain. Butuh DomainSetup dan OrgStatus sengaja terus melaporkan yang belum selesai domain: itu tidak lagi penghalang, tetapi masih seseorang yang luar biasa tugas, dan tampilan real adalah di mana yang akan diperhatikan. Shell juga harus berhenti meminta hostname yang org itu masuk Akar tata letak dilucuti "internal". dan melihat host up, yang menjawab "yang memiliki nama ini "-- pertanyaan yang sama dengan" area kerja mana aku "hanya sementara setiap penyewa memiliki inang untuk dirinya sendiri. Pada host platform itu mengembalikan pemilik platform, sehingga anggota memasuki sebuah domainless org akan ditampilkan KamoCRM Inc 's branding, features and rights. Sekarang meminta sesi pertama via / api / org / saat ini dan kembali ke host ketika tidak ada sesi, yang membuat sinyal keluar rendering shell. * * * cookie adalah apa yang membuat Yang dapat dicapai sama sekali -- Penyimpanan sementara tidak terlihat oleh permintaan dokumen. 2857 tes dan semua 7 script penjaga lulus.

  30. · SecurityService

    Biarkan shell mengambil org nya dari sesi, bukan host

    tata letak root internal membaca header Host, strip "internal". dan fetches / org / domain / < that >. Pada tuan rumah melayani satu penyewa yang sama pertanyaan sebagai "org am I"; pada host bersama itu adalah pertanyaan yang berbeda dengan jawaban yang salah - itu kembali siapa pun yang memiliki tuan rumah, jadi anggota yang Memasuki Domainless org akan diserahkan KamoCRM Inc. 's branding, features dan bendera. Tambahkan GET / api / keamanan / org / saat ini, mengembalikan projected record untuk organisasi Penelepon apos; s SESI masuk Tata letak dapat mencapainya karena sudah meneruskan header Cookie dan cookie * * ada, sehingga server dapat melihat sebuah sesi meskipun sesionStorage tidak terlihat oleh sebuah dokumen permintaan. Tanpa parameter, dengan sengaja. Draft pertama menerima id atau alias dan... benar menolaknya: bentuk itu membuat catatan org dapat dihitung dengan menebak alias, dan alias Bisa kutebak. Sesi ini sudah tahu org mana yang masuk, jadi parameter hanya bisa bertanya tentang yang berbeda. Dengan sesi diselesaikan ratchet melewati sendiri daripada membutuhkan entri baseline. Proyeksi diekstrak daripada disalin. Dua titik akhir kembali dua bentuk dari catatan yang sama adalah kegagalan yang patut di cegah -- klien tidak dapat mengetahui mana yang memegang, dan mereka drift pertama kalinya hanya satu adalah diperbarui. 928 tes lulus.

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