Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· SecurityService
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
· ConversionService
Add image resize and favicon generation endpoints
· InitializerService
Add migration runner for logo_full_ext column on orgs
· kamo-shared-library
Tambahkan daerah LogoFull Ext ke entitas Organisasi; tambahkan listObjects ke MinIOStorageService
· kamo-internal
Gantikan ikon emoji dengan ikon SVG padat pada pembuat uskup penyihir
· kamo-shared-library
Tambahkan pencarian findByBranchTypeID ke Repositori Organisasi
Mendukung jenis baru / branch / {id} / usages titik akhir dalam Layanan SecurityName untuk memeriksa apakah suatu tipe percabangan memiliki organ anak yang aktif sebelum penghapusan.
· SecurityService
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns the count and summary of orgs created under a given branch type, used by the frontend to block hard deletion.
· kamo-internal
Penghapusan tipe percabangan terhadap usages org aktif
Sebelum menghapus sebuah chip tipe cabang, frontend sekarang memanggil * * * * * * * * * * * * * * * Jika ada orgs ada itu menunjukkan dialog informasi yang mendaftar dan menginstruksikan admin ke non-aktifkan tipe daripada menghapusnya.
· kamo-internal
Lencana tiket dukungan langsung di NavTop - Pendukung Konteks subscripters ke NATS melalui StoMP, lencana menunjukkan hitungan tertunda
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
Tambahkan ruas count yang tertunda ke SupportAgagentNotificationDTO dan hitungan query ke SupportTicketRepositori
· kamo-internal
Tambahkan nama domain ke wizard pembuatan org
Tambahkan field domain yang diperlukan ke langkah Basics dengan www otomatis. stripping. Validasi, termasuk dalam muatan API, dan ditampilkan dalam tahap peninjauan.
· kamo-marketing
Tambahkan pemanggilan modifikasi API ke halaman referensi kamo- api-
Shown hanya pada referensi / kamo-api-, mendorong pengguna untuk mengirimkan perubahan API permintaan melalui / permintaan atau menjangkau via / kontak.
· SecurityService
Add GET /branch-types/creatable endpoint with creator-type filtering
Returns only the branch types the calling member is permitted to create a child org under, based on their OWNERS/TEAM_MEMBERS/MEMBERS classification against the current org's applied security models. Mirrors the exact same getBranchTypesCreatableBy enforcement the POST /org endpoint applies at submission time, so the frontend can pre-filter the pick list and avoid showing options that would produce a 403. Response includes allowedMemberAgeRanges and allowedTeamMemberAgeRanges from each branch type's security model so the UI can gate AgeReqType options in the same request, without a second round-trip.
· kamo-internal
Gantikan Organisasi Ketik langkah wizard dengan branch Type / SecurityModel pilihan
- Ganti Organ TypeStep (Organisasi Tipe dropdown konfigurasi +) dengan BranchTypeStep that fetches * * * * * * * * * * * * * tipe percabangan yang diijinkan untuk membuat titik akhir yang baru anak di bawah, disaring oleh OWNERS / TEAM _ MEMBERS / MEMBERS klasifikasi terhadap model keamanan terapan org - Hapus Tipe Organisasi dari muatan seluruhnya; konfigurasi adalah sekarang auto- berasal dari model keamanan 's alleedUmberAgeRanges (KIDS _ ONLY KIDS _ CLUB, 16 - range CLUB, lain ENTERPRISE) - AgeRestrictionStep sekarang filter tersedia Pilihan AgeReqType ke mereka diijinkan oleh model keamanan terpilih, dengan sebuah banner ketika gating adalah aktif; null usia (Tidak dispesifikasikan) tetap sebuah aman no- op setiap backend - Setelah sukses penciptaan direct ke / setup / dns? orgId = & orgName = dari CURRENT org (bukan anak baru org) - DNS harus dikonfigurasi sebelum org baru dapat diakses - Tambah * * * * * * * * * * * * * * * * * * * * Next.js proxy route - Review Step menunjukkan nama tipe percabangan + yang diijinkan untuk lingkup usia daripada lama tipe org / config tipe lencana
· kamo-internal
/ network create affordance adalah gated by member- type + right
- BranchSetupManager: baru "Who Can Create Child Orgs Under This Model" kartu dengan tiga toggles (Anggota / Anggota Tim / Pemilik). Nilai round-trip melalui mapBackenModel dan keduanya menyimpan arus (model anak + master model). Keadaan kosong semua tiga ke false - sebuah model tidak menawarkan penciptaan kepada siapa pun sampai admin memilih mereka masuk - / halaman jaringan: fetches * * * * * * * * * * * * * * * on mount dan menyembunyikan setiap "Create New Organization" diberikan (header tombol, tombol empty- state, kartu bawah) kecuali server definitif return canCreateChildOrg = true. Sementara cek adalah dalam penerbangan (kosong) harga tetap tersembunyi jadi kami tidak pernah flash itu untuk anggota yang tidak seharusnya melihatnya. - Baru... proksi rute ke depan Sampai ke titik akhir SecurityService yang baru.
· SecurityService
Gate /network child-org creation by right + member-type applicability
Wires the applied-security-model child-org creation gate end-to-end: - SecurityModelController + MasterModelController round-trip the three new apply-to flags (appliesToMembers / appliesToTeamMembers / appliesToOwners) through create and update payloads. - New GET **************** resolves — for the caller's session — the creator-type bucket they fall into, whether their role carries CREATE_CHILD_ORG, the list of branch types available to them, and a combined canCreateChildOrg boolean the /network page uses to hide the create affordance when false. - **************** now rejects with 403 when the caller lacks CREATE_CHILD_ORG or picks a branch type that isn't among those their creator-type is offered — defense in depth against a client that bypasses the UI gate.
· kamo-shared-library
Tipe anggota gerbang + CREATE _ CHILD _ ORG tepat untuk pembuatan anak-org
Tambahkan lapis data untuk gating / network child-org pembuatan oleh tipe anggota: - New CREATE _ CHILD _ ORG tepat di RoleRightType (id 131). - Tiga kolom boolean baru di ChildOrganm SecurityModel: appliesToMember / appliesToTeamMember / tooOwners Ketika benar, jenis cabang model akan ditawarkan ke ember jenis anggota on / network. Sebuah model dengan ketiga palsu tidak pernah muncul sebagai penciptaan pilihan untuk siapa pun - itu hanya mengatur organ yang ada. - ChildOrvors SecurityModelService memperoleh 13- arg membuat / update overload yang terima bendera baru; warisan 10-arg tanda tangan delegasi melalui. - ChildOrvorSecurityModelDTO melakukan perjalanan tiga bendera. - AppliedModelEnforceService mengekspos logika gerbang bahwa setiap penelepon share: enum ChildOrganm CreattorType {MEMBERS, TEAM _ MEMBERS, OWNERS} getBranchTypesCreatableBy (org, creatorType) Aba daftar tipe percabangan yang dimiliki oleh model yang berlaku untuk tipe pencipta dan memiliki di Setidaknya satu jenis cabang. * * * * * * * * * * * * * * * kreatType) None bool predicate. Creator-type klasifikasi: AWNERS = anggota tim-dengan Organisasi Pemilik = true, TEAM _ MEMBERS = anggota tim-lain, MEMBERS = orang lain. Benar-cek (CREATE _ CHILD _ ORG) sengaja TIDAK dipanggang ke pembantu ini - pemanggil menggabungkan baik cek sehingga pembantu juga dapat Kembali baca-hanya queries.
· InitializerService
Master model applies to all three member types on init
provisionMaxedOutMasterModel now sets appliesToMembers, appliesToTeamMembers, and appliesToOwners all true so every member type sees the master model's branch types as creation options on /network. The Administrator template continues to GRANT every RoleRightType including the new CREATE_CHILD_ORG right (id 131) by virtue of iterating RoleRightType.values().
· kamo-marketing
Tambah milidetik untuk hitungan mundur peluncuran, centang setiap 50m
· kamo-marketing
Ganti tanggal peluncuran statik dengan hitung mundur langsung ke 2PM PST Apr 20 2026
Tick setiap detik menampilkan Xd XXh XXm XXs; jatuh kembali ke tanggal statis sampai hydrates klien, menunjukkan "Sekarang" ketika target dicapai.
· InitializerService
Administrator default role template starts with all rights GRANTED
provisionMaxedOutMasterModel now populates the Administrator template with every RoleRightType set to GRANTED. The other three templates (Team Member, Member, DEFAULT) still materialize with zero rights (NOT_SPECIFIED for everything), matching the intended blank baseline for non-admin roles. Why GRANTED (not FORCE_GRANTED): at child-org creation time ChildOrgTemplateSeedingService copies non-force template values into the new org's OrgRoleRight rows, so a GRANTED admin template gives every new child org a ready-to-use admin role with full permissions that the owner can still edit. FORCE_GRANTED would lock rights at runtime and hide them from the security-roles editor, which we don't want for the admin template baseline.
· InitializerService
Provision a maxed-out master security model for KamoCRM on init
DataLoader now creates and assigns a master ChildOrgSecurityModel to KamoCRM immediately after the org is created, with every setting maxed out to the most permissive / force-enabled value: - allowOwnersViewOtherOrgs / allowOwnersPrivateOrgs / allowSubChildOrgs = true - identityProviderSetting = ENABLED - teamMemberPayFeesSetting = FORCE_ENABLE - allowedMemberAgeRanges / allowedTeamMemberAgeRanges = every AgeReqType - appConfigs = every non-deprecated ServiceType at FORCE_ENABLED, with CRM's allowedCommerceTypes containing every CommerceType - Organization.masterModelID set to the new model The four default role templates (Administrator / Team Member / Member / DEFAULT) are materialized with zero rights so the UI renders tabs for each — every right stays NOT_SPECIFIED at runtime, the intended blank baseline. Admins can edit specific force rules later via the branch-types tab. Also bumps kamo-shared-library to 1.5.0 so the new ChildOrgSecurityModelService / AppConfigService / DefaultRoleService and related types resolve at compile time.
· kamo-internal
Present Manejer applied- model keadaan-diaktifkan
Menerima model baru + ruas terkunci dari FeatureController dan permukaan mereka di UI: - Fitur yang modelifibility adalah FORCE _ ENABLED membuat toggle dalam pada keadaan, dinonaktifkan, dengan tooltip menjelaskan - admins dapat melihat Mereka ada tapi tak bisa membalikkannya. - Menjungkit fitur model pendek sirkuit dengan roti panggang yang jelas dari kesalahan generik dari backend 403. - Tidak ada fitur yang pernah dicapai klien (server filter) sehingga daftar UI sudah tampilan gated.
· SecurityService
Applied-model is the read-time source of truth for feature availability
Closes the "stale DB leaks a disabled feature" gap by gating every surface that touches OrgFeature / ServiceType through the applied security model. - **************** (the primary feeder of the frontend OrgContext): replaces the raw features serialization with **************** org.getFeatures()). The auto- provisioning loop now also skips apps the model marks NOT_AVAILABLE so we never create DB rows for blocked apps. - FeatureController.list: returns each feature with modelAvailability + locked metadata. NOT_AVAILABLE rows are filtered out, FORCE_ENABLED rows are reported as enabled=true + locked=true regardless of their DB state. The available list is also filtered down to apps the model permits. - New AppAvailabilityInterceptor + WebMvcConfig: installs a HandlerInterceptor on every service-scoped URL prefix (/api/security/pos, /api/security/commerce-markets, /api/security/leads*, /api/security/lead- imports, /api/security/lead-markets, /api/security/lead-vendors, **************** **************** **************** Each request is matched to a ServiceType, resolved against the caller's applied model, and rejected with HTTP 403 if the app is effectively off. This is the final line of defense: even with stale client state, a forgotten controller guard, or a direct API call, a blocked app returns 403. Net effect: the applied security model now wins at read time everywhere the org's features or apps are exposed — navigation, home page, settings slide-out, FeaturesManager, per-service endpoints. When the admin flips CRM to NOT_AVAILABLE on the model, the CRM UI disappears from the frontend and CRM endpoints start 403'ing — regardless of whether the DB still has OrgFeature.isActive=true for CRM.
· kamo-shared-library
Effective- fitur resolver untuk applied- model baca-waktu duting
Tambahkan gerbang baca-waktu yang membuat model keamanan diterapkan akhir sumber kebenaran untuk fitur ketersediaan, sehingga keadaan DB basi tidak dapat bocor non-aktif fitur melalui dan sebuah fitur force-enabled selalu terlihat bahkan ketika DB belum tertangkap. Metode baru pada AppliedModelEnforceService: - ComputeAvabiIIalesMap (org) - satu - lulus resolusi setiap ServiceType tersedia untuk org dalam pencarian tunggal. Servis sebagai batch primitif metode baru lainnya membangun pada. - Adalah AppectivetyEnabled (org, serviceType, features) - canonical "adalah aplikasi ini pada "cek. Layanan inti selalu menyala, tak berlaku lagi, FORCE _ ENABLED always on, NOT _ AVAILABLE always off; OPSIONAL _ * defers to Negara bagian Organ Aktif. - * * * * * * * * * * * * * fitur) - Set < ServiceType > pendamping untuk penelepon yang membutuhkan "semua efektivitas-pada aplikasi" sebagai set. - computeEffectiveFeatures (org, fitur) - mengembalikan ArrayList yang segar dari Bentuk-bentuk organ yang diproyeksikan melalui gerbang: TIDAK _ AVILABLE dijatuhkan, FORCE _ ENABLED dipaksa untuk aktif (bahkan pada baris DB dinonaktifkan), dan FORCE _ ENABLED aplikasi dengan tidak ada DB baris belum diwakili oleh baris sementara (organisasi-scoped, tidak pernah bertahan). Panggilan serialisasi fitur org ke klien sekarang rute melalui computeEffectiveFeatures daripada membaca koleksi mentah, jadi antarmuka melihat appeed- model-gated tampilan secara baku.
· kamo-internal
Tambahkan pengaturan docs tipe perastide tab dengan tipe doc, perintah menumpuk, dan panel konfigurasi
Mengganti Tab ComingSoonTab pada / pengaturan / fitur / docs dengan antarmuka pengaturan penuh: - Secara umum overview tab + satu tab per Tipe ImageAsnt (Akun, Aplikasi Layanan, Layanan Order, Panggilan Rekaman, Docs saya, Temui Rekaman, System- Wide) - Setiap tab Tipe Assot memiliki 3 sub- tab: Konfigurasi (folder / docType toggles), Doc Types (full CRUD), Mengurutkan Perintah (CRUD dengan laci pipa visual) - Next.js API proxy route untuk semua pengaturan pencitraan titik akhir - AsplyConfigPanel, DocTypesManager, StackingOrdersManager, StackingOrderwer, Moderer Typesetting komponen
· DocsService
Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD
· kamo-shared-library
Tambahkan Entitas Konfigurasi ImgAssec, repositori, dan SortOrder ke ImpgStacking OrderDt
· InitializerService
Add FEATURE_REQUESTS to Support category and all plan-feature mappings
Free: Community vote, Starter: Vote & request, Business: Priority requests, Enterprise: Custom dev included

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