Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-marketing
Tambah / permintaan link langsung nav, daerah homepage, dan fitur rencana perbandingan baris
- Tajuk: Permintaan ditambahkan sebagai link langsung tingkat atas antara Harga dan Perusahaan - Kaki: Permintaan ditambahkan ke Kolom Produk untuk visibilitas langsung - Halaman harga: banner gubahan dev callout antara bundles dan perbandingan fitur - Halaman fitur: permintaan permintaan callout sebelum CTA - Laman rumah: Bagian FeatureReReRequests baru antara Harga dan FAQ menampilkan akses plan- tier - JumpToBar: Permintaan link lompat ditambahkan antara Harga dan FAQ - DB: FEATURE _ REQUESS yang dikumpulkan dalam kategori dukungan dengan nilai teks per- rencana (Bebas: Suara komunitas, Starter: Vote & permintaan, Bisnis: Permintaan prioritas, Enterprise: Gubahan dev termasuk) - KamoCRMPricingLoader: diperbarui dengan FEMETURE _ REQUESTS fitur definisi dan pembuatan fitur
· kamo-internal
Alur-perjalanan Appligs + permukaan yang berlaku - model pengaturan + private -org toggle
- BranchSetupManager: mapBackenModel sekarang hydrates sustable appligs dikembalikan oleh backend (ketersediaan + alloedCommerceTypes per layanan tipe) alih-alih menset ulang mereka ke TIDAK _ AVAILABLE pada load. Simpan payloads untuk kedua model anak-anak dan mahak- model arus termasuk appligs sehingga per- app ketersediaan dan CRM komersial - tipe pembatasan round-trip. Guru editor model reuses mapBackenModel sehingga berperilaku identik. - kait useAppliedModel: tipe respon diperluas sekarang membawa terapan Pengaturan skalar model (allowowownersViewOtherOrgs, allowowownersPrivateOrgs, allowSubChildOrgs, usia berkisar, identityProviderSetting, Tim UmberPayFeesSetting), peta appcigs, dan orgisPrivate - jadi apapun penyunting masa depan (manajer fitur, config OAuth, pasar perdagangan) dapat mem-gerbang Unforly tanpa mengambil kembali. - Private-org toggle: rute proksi baru * * * * * * * * * * * * * * * * (PATCH) dan kartu visibility muncul pada tipe tab percabangan, digated oleh Semua Pemilik PrivateOrgs. Ketika diaktifkan, pemilik org lain tidak akan melihat ini org dalam daftar. Optimistik UI berdamai dengan selanjutnya-model Segarkan.
· BillingService
Enforce team-member pay-fees setting at Stripe customer creation
Bumps kamo-shared-library dependency to 1.5.0 so BillingService can resolve the new AppliedModelEnforcementService, and wires team-member vs org pay-fees enforcement into **************** - teamMemberPayFeesSetting == NOT_AVAILABLE: creating a member-specific billing customer (self-pay) is rejected — the org must cover fees. - teamMemberPayFeesSetting == FORCE_ENABLE: creating an org-level customer that would cover team-member charges is rejected — team members must pay themselves. - OPTIONAL: either flow is permitted. Enforcement is best-effort when the org can't be resolved (tooling contexts, legacy data) — falls through to the legacy behavior instead of blocking.
· SecurityService
Wire applied-model enforcement across every controller
Every non-role setting on the applied security model is now enforced at the exact controller boundary it governs, and the scalar settings round-trip cleanly through the master/child model editors so the UI can gate on them. - **************** when branchTypeID is set, look up the branch type to derive the parent org; call assertSubChildOrgAllowed and assertAgeRangeAllowed for both member and team-member age slots before committing. New PATCH /{id}/visibility endpoint lets owners flip Organization.isPrivate, gated by assertCanSetPrivate. getAllOrganizations applies filterVisibleOrgsForViewer so results respect both allowOwnersViewOtherOrgs on the viewer's model and the isPrivate flag on candidates. - **************** call assertAppEnableAllowed / assertAppDisableAllowed so NOT_AVAILABLE apps can't be enabled and FORCE_ENABLED apps can't be disabled. - OAuthConfigController POST/PUT: assertCanManageIdentityProvider blocks provider CRUD when identityProviderSetting == NOT_AVAILABLE. - CommerceMarketController POST/PUT: assertCommerceTypeAllowed rejects a commerce type not listed in the model's appConfig for CRM. - SecurityModelController + MasterModelController: round-trip appConfigs through create/update payloads and the GET responses. New processAppConfigs helper accepts the list form used by the frontend editor. - AppliedModelController: response now includes the full scalar settings block (allowOwnersViewOtherOrgs, allowOwnersPrivateOrgs, allowSubChildOrgs, age ranges, identityProviderSetting, teamMemberPayFeesSetting) and the appConfigs map so frontend editors can gate uniformly. Also surfaces orgIsPrivate so the privacy toggle stays in sync.
· kamo-shared-library
Memaksakan setiap pengaturan bukan peran pada ChildOrgans SecurityModel
Tambahkan penegakan akhir-to-end bagi pengaturan yang tersisa pada org yang diterapkan Model keamanan. Setiap pengaturan yang sebelumnya hanya dibaca (atau dijatuhkan pada save) now has a persistensi path, a runtime penegakan, and a UI kait untuk mengkonsumsi itu. Lapisan data: - Organisasi .isPrivate (kolom boolean, default false) - org sendiri tanda visibility, diatur melalui MasterModelController-gated PATCH baru titik akhir. - Serviceavability Tipe enum (OPTIONAL _ DEFAULT _ ENABLED / OPSIONAL _ DEFAULT _ DISABLED / NOT _ AVAILABLE / FORCE _ ENABLED). - ChildOrganiceSecurityModelAppConfig Entitas + layanan + repo + - persts per-app ketersediaan (dan CRM 's alloedCommerceTypes) sebelumnya jatuh pada penyelamatan. - * * * * * * * * * * * * * * perjalanan entitas baru. Penegakan Runtime: - AppliedModelEnforceService mengkonsolidasikan setiap cek yang digunakan oleh penelepon: astetSubChildOrganity Allowed, assertAgeRangeAllowed, * * * * * * * * * * * * * * * Dibutuhkanidentitas, astetCanSetPrivate, filterVisibleOrgans ForViewer, Anggota Tim CanselfPayFees, adalah Tim Gabungan / Dihalangi, assertApPEnableAllowed, assertDisableAllowed, getApparability, getDefaultEnabledAppsForChild, menegaskan CommerceTypelowed, getAlloedCommerceTypes. Nall-aman: "tidak ada model terapan" memungkinkan semuanya. - ChildOrganm Templar SeedingService diperluas juga baris benih Organ dari apconfig induk baku (FORCE _ ENABLED dan OPSIONAL _ DEFAULT _ ENABLED) pada orgs anak baru, sehingga newly-provisioned orgs Datang dengan permukaan default yang tepat.
· kamo-internal
Kunci peran sistem wajib dalam anggota tugas UI
- PublicProvider: akui branchTypeID / masterModelID pada yang masuk muatan organisasi sehingga tipe tab percabangan dapat diandalkan gerbang Tombol "Edit Master Model" (sebelumnya mengandalkan Jackson serialisasi Mengalir melalui jenis cek prop). - Rel PermissionsTab: jaringan checkbox sekarang menandai sistem yang diperlukan peran sebagai dicentang dan dinonaktifkan berdasarkan tipe anggota dan bendera pemilik: * Anggota - anggota diketik: "Anggota" diperlukan. Tim - Anggota - anggota diketik: "Anggota Tim" diperlukan. * Team- Anggota -typed pemilik: "Administrator (Akses penuh)" adalah tambahan dibutuhkan. Sebuah chip "Diperlukan" dan petunjuk penjelasan membuat kendala terlihat ke Editor. Mencoba menjungkitkan suatu peran wajib adalah sebuah no- op; backend rekonsiliasi di Menmber SecurityController akan kembali menambahkannya.
· SecurityService
Enforce system-role assignment and auto-admin for team-member owners
MemberSecurityController now enforces the three assignment invariants defined in the brainstorm spec: - saveMemberSecurity: before persisting the caller's requested roleIds, augments the set with the mandatory system role(s) based on member type: Member-typed members always get roleMemberID; Team-Member-typed members always get roleTeamMemberID; Team-Member owners additionally always get roleAdminID. LinkedHashSet preserves caller ordering while deduping. - updateMemberAccess: when the owner flag toggles, the Administrator role is added or removed on the team-member to keep role assignments in sync with ownership. Rights-applied recalculation runs in the same transaction so downstream reads see the updated effective permissions immediately.
· kamo-shared-library
Terapkan aturan gaya template dan BALAS fallback ke resolusi hak anggota
* * * * * * * * * * * * * * * sekarang overpales yang diterapkan model 4 default-role template di atas dari cascade yang ada (org peran Descendants: - Role- jenis spesifik FORCE _ GRANTED / FORCE _ NUKE menang atas semua tingkat cascade. Templat dipilih oleh tipe anggota: pemilik anggota tim menggunakan ADMINISTATOR, anggota tim menggunakan TEAM _ MEMBER, anggota biasa menggunakan MEMBER. - Templat DEFAULT FORCE nilai menang atas cascade ketika tipe template role- (Tidak ada hak bagi kalian terhadap apa yang kalian khilaf padanya) dalam hal tersebut (tetapi) yang berdosa itu ialah (apa yang disengaja oleh hati kalian) sesudah adanya larangan. - DEFAULT nilai gaya tidak (GRANTED / NUKE) bertindak sebagai baris-terakhir -of-pertahanan untuk hak yang diselesaikan untuk TIDAK _ Specterified setelah cascade penuh. AppliedModelResolverService disuntikkan sebagai @ Autowired (dibutuhkan = false) jadi unit- test ada wiring yang hanya membangun dua konstruktor- wajib repositori terus bekerja, merendahkan ke jalur legacy no-force-rules.
· kamo-internal
Tambahkan master model penyunting, templat peran, dan durasi aturan
Permukaan jenis cabang baru model keamanan di UI: - tipe percabangan tab memperoleh sebuah tombol "Edit Master Model" (tersembunyi ketika org memiliki branchTypeID ditugaskan) yang membuka editor model pada master mode: tidak ada nama daerah, tidak ada branch-tipe chip, menyimpan hits / master- model. - Editor model (baik add-child- model dan edit- master- model) memperoleh baru "Aturan Keamanan Baku" setelah "Ijin Apps", dengan tab untuk Pengaturan Administrator / Anggota Tim / Anggota / DEFAULT dan nilai 5 (FORCE _ GRANTED, GRANTED, NOT _ SPECIFIED, FORCE _ NUKE, NUKE). - Model UseApliedModel () kait fetches / api / keamanan / appeed- model sekali dan ekspose dipaksa (nama kanan, roleType) untuk mengkonsumsi editor. - Peran keamanan, departemen, pekerjaan judul, dan per- anggota role- izin halaman menyembunyikan hak-hak force-terkunci oleh template yang diterapkan: * security- roles: peran sistem menggunakan template yang cocok dengan mereka + DEFAULT; peran gubahan hanya menggunakan DEFAULT (Q11 jawaban A). * departemen + pekerjaan-judul: DEFAULT saja (bukan-role- spesifik). * halaman anggota: template tipe anggota (TEAM _ MEMBER vs MEMBER) + DEFAULT (Q8 menjawab C, ketik urutan evaluasi pertama). Rute proksi baru: / api / keamanan / mahak- model (GET / PUT), / api / keamanan / peralatan model (GET).
· SecurityService
Master-model + applied-model endpoints and template-aware org seeding
Adds the controllers that surface the new branch-type security flow: - /api/security/master-model (GET/PUT) manages the current org's master model; only writeable when Organization.branchTypeID is null. - /api/security/applied-model (GET) resolves which model governs this org and returns per-template force-rule maps for frontend gating. - SecurityModelController round-trips the 4 default-role templates as part of its existing create/update payloads. - OrganizationController propagates the new branchTypeID from the request body and seeds the new org's 3 system roles from the applied model's templates via ChildOrgTemplateSeedingService.
· kamo-shared-library
Tambahkan model utama, templat peran baku, dan peresmian model
Memperkenalkan lapisan data untuk percabangan baru model keamanan aliran: - Organisasi mendapatkan branchTypeID dan kolom MasterModelID. - Pengaturan Templat Kanan Baru Tipe enum dengan nilai 5 (FORCE _ GRANTED, GRANTED, NOT _ SPECIFIED, FORCE _ NUKE, NUKE) untuk mencoba-lapis pengaturan. - New DefaultRoleType enum (ADMINISTATOR, TEAM _ MEMBER, MEMBER, DEFAULT) untuk 4 contoh peran melekat pada masing-masing ChildOrgans SecurityModel. - Entitas baru * * * * * * * * * * * * * * * * * * dan Dan DTOs. - AppliedModelResolverService memecahkan model yang mengatur org yang diberikan (BranchType- warisan atau master) dan mengekspos paksa-aturan pencarian. - ChildOrganm Templar SeedingService biji anak baru orgs '3 sistem peran dengan Nilai GRANTED / NUKE dari template model terapan; nilai gaya tetap dalam template dan dipaksa pada waktu-jalan. End- user OrganRoleRight terus menggunakan RoleRightSettingType - nilai gaya adalah konsep template-lapisan.
· kamo-internal
Tambahkan tipe cabang chip-input ke model penyunting keamanan
- BranchTypeChipField dengan warna dot toggle, edit- on- klik label, dan X delete - BranchTypeEditDialog untuk menyunting nama / deskripsi - Dropdown komplit otomatis menarik dari tipe GET / api / keamanan / branch, termasuk tipe model saat ini, menampilkan model sumber untuk tipe-model cross- - Handle SaveModel mengirimkan branchTypes dan menghapus BranchTypeids dalam muatan PUT / POST - Daftar tabel mendapat Branch Types kolom dengan berwarna dot chip - peta loadModels branchTypes dari respon backend
· kamo-login
Hapus Pengg _ atan _ una kanan dari RoleRightType
· kamo-register
Hapus Pengg _ atan _ una kanan dari RoleRightType
· kamo-internal
Hapus Manusire _ Users kanan dari seluruh referensi frontend
· kamo-shared-library
Hapus Mangage _ USERS kanan (id = 19) dari RoleRightType enum
· kamo-internal
Tambahkan rute API jenis cabang
· SecurityService
Wire branch types into security model CRUD endpoints
· kamo-shared-library
Expand ChildOrganity SecurityModelDTO dengan bidang penuh dan branchTypes
· kamo-shared-library
Tambah Layanan TypeService BranchOrganik
· kamo-shared-library
Tambahkan Organik BranchTypeRepositori
· kamo-shared-library
Tambah Organik BranchTypeDTO
· kamo-shared-library
Tambah Entitas Organ BranchType
· kamo-internal
Mutakhirkan subjudul BranchSetupManager untuk mereferensikan tipe label percabangan dinamis
· kamo-internal
Ubah nama tab Branch Setup ke dinamis {branchLabel} Types dan update URL ke tipe branch -type
· kamo-login
Reset Capcha * * * setelah setiap percobaan log masuk yang gagal
Pengguna harus kembali memverifikasi mereka adalah manusia setelah setiap kata sandi yang salah. Panggilan widget-reset () dan membersihkan kondisi CapchaVerified / payload pada Keduanya kegagalan kredensial dan kesalahan jaringan.
· EmailService
Auto-inject logoUrl, logoSimpleUrl, and orgName variables at send time
EmailTemplateService now merges base variables (logoUrl, logoSimpleUrl, orgName) derived from the org's primary domain before rendering, so all transactional templates can reference {{logoUrl}} and {{logoSimpleUrl}} without callers needing to pass them explicitly. Caller-supplied vars still take precedence.
· kamo-internal
Tambahkan gerbang izin untuk ruas tingkat pengguna dan bagian perubahan sandi di MyAccountTab
· kamo-internal
Tambahkan penjaga tab akses dan ANGKA _ MEMBER _ KEAMAN ke halaman pengaturan anggota
· kamo-internal
Tambahkan perubahan -password Next.js API proxy route

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