Değişiklik Günlüğü
Yeni ne var?
Gemideki her iyileştirme.
· kamo-marketing
Add /requests doğrudan nav bağlantıları, ana bölüm ve plan özelliği karşılaştırma satırları
- Header: Talepler fiyat ve şirket arasındaki üst düzey doğrudan bağlantı olarak eklendi - Footer: İstekler doğrudan görünürlük için Ürün sütununa eklendi - Fiyat sayfası: paketler ve özellik karşılaştırması arasındaki özel çağrı pankart Özellikler sayfası: CTA'dan önce arama isteği - Anasayfa: Fiyat ve SSS arasında yeni özelRequests bölümü plan-tier erişim gösteren JumpToBar: Fiyatlama ve SSS arasında eklenen bağlantı – DB: FEATURE REQUESTS per-plan metin değerleri ile destek kategorisinde tohumlandı (Free: Community oylaması, Start: Oy & istek, İş: Öncelik talepleri, Enterprise: Custom included) - KamoCRMPricingLoader: FEATURE REQUESTS özelliği tanımı ve plan-feature haritaları ile güncellendi
· kamo-internal
Round-trip appConfigs + yüzey uygulamalı modeller + özel-org toggle
- BranchSetupManager: haritaBackendModel şimdi devam eden appConfigs Geri dönüş tarafından geri döndü (availability +,TicaretTypes per service Tür) onları yük üzerinde /AVAILABLE için yeniden tanımlamak yerine. Paraloads Kaydet Hem çocuk model hem de master-model akışları uygulamaConfigs'i içerir, böylece per-app accessibility and CRM trade-type constraint round-trip. Master Master Master Master Model editörü yeniden haritaBackendModel bu yüzden aynı şekilde davranır. -UseAppliedModel kanca: genişletilmiş yanıt türü şimdi uygulanıyor Modelin ölçeksel ayarları (allowOwnersViewDiğerOrglar,OwnersPrivateOrgs, izin veriyor Sub childOrgs, yaş aralıkları, kimlikProviderSetting, TakımMemberPayFeesSetting), appConfigs haritası ve orgIsÖzel - bu yüzden herhangi bir şey Gelecekteki editör (başlangıç yöneticisi, OAuth yapılandırılmış, ticaret pazarı) kapı açabilir Tamamen re-fetching olmadan. - Private-org toggle: yeni proxy rotası **************************** (ATCHP) ve bir görünürlük kartı, şube tipi sekmede yüzeylendi, kapıdan alındı. OwnersÖzel Organlara izin verin. etkinleştirildiği zaman, diğer veyag sahipleri bunu göremeyecek Ya da listelerde. Optimistic UI bir sonraki uygulamalı modele karşı uzlaştı yenileme.
· 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
ÇocukOrgGüvenlik Modeli'nde her non-role ayarı
Geri kalan ayarlar için bir org'un uygulanması için son uygulama ekleyin. Güvenlik modeli. Daha önce okuyan her ayar sadece okunur (veya geri çekildi) kurtarma) artık kalıcı bir yol var, bir runtime apps helper ve bir UI Onu tüketmek için kanca. Data katmanı: - Organizasyon.isÖzel (boolean sütunu, varsayılan false) - org's own görünürlük bayrağı, yeni MasterModelController-gated PATCH endpoint. HizmetAvailability Tür enum (OPLY DEFAULT ENABLED / OPence DEFAULT DISABLED / NOT AVAILABLE / FORCE ENABLED). - ÇocukOrgGüvenlik ModeliConfig varlık + yenidenpo + hizmet - per-app devam ediyor Kullanılabilirlik (ve CRM’in daha önce tasarrufa izin verdi). - ******************** Yuvarlak tren yeni varlık. Runtime Execution: Uygulamalı ModelEnforcementService callers tarafından kullanılan her çeki konsolide eder: , , , , **************** IdentityProviderRequired, ThinkCanSetPrivate, filtreVisibleOrgsForViewer, TeamMemberCan SelfPayFees,TeamMemberPayFeesForced / Blocked, De ki: , , , , çocuk için enabledAppsFor Kids, iddia edilen, Tüm borçluTicaret Türleri alın. Null-güven: "Uygulamalı model" her şeye izin vermez. - ÇocukOrgTemplateHizmeti ayrıca tohum OrgWork sıralarına uzatıldı Ebeveynlerin uygulamalarıConfig varsayılanleri (FORCE ENABLED ve OPence DEFAULT ENABLED) yeni çocuk orgs, bu yüzden yeni-provisioned orgs Doğru varsayılan yüzeyle gelir.
· kamo-internal
Kilit zorunlu sistem rolleri üye rol atama UI
- PublicProvider: gelenin üzerine şubeTypeID/masterModelID itiraf Organizasyon ödeme yükü böylece şube tipi sekme güvenilir bir şekilde kapıyı açabilir "Edit Master Model" düğmesine (muhtemelen Jackson seriizasyonuna dayanıyordu prop type check yoluyla akın). RolsPermissionsTab: Rol çekbox şimdi gerekli sistemi işaret ediyor Rol(s) Üyenin tipi ve sahibi bayrağına bağlı olarak kontrol ve engelli olarak: * Üye kimlikli üyeler: "Members" gereklidir. * Takım-Member-tipli üyeler: "Takım Üyeleri" gereklidir. * Team-Member-typed sahipleri: "Administrator (Full Access)" ek olarak Gerekli. Bir "Required" çip ve açıklayıcı ipucu, kısıtlamaları görünür hale getirir editör. zorunlu bir rol üstlenmeye çalışmak hayır-op; arka uç Üye Güvenlik Kontroller'de uzlaşma her neyse tekrar tekrar tekrar olacaktır.
· 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
Üye haklarına karar vermek için şablon güç kuralları ve DEFAULT geri çekilme
**************** Şimdi Uygulananlar Modelin mevcut cascade'nin üstünde 4 varsayılan-role şablonları (org rolleri → Bölüm → iş unvanı → üye: - Rol tipine özgü FORCE GRANTED/FORCE NUKE tüm cascade seviyelerini kazanır. Şablon üye türü tarafından seçilir: takım üyeleri kullanır ADMINISTRATÖR, takım üyeleri TEAM MEMBER kullanıyor, sade üyeler MEMBER kullanıyor. - DEFAULT şablon FORCE değerleri, rol tipi şablon şablonunda cascade'yi kazanır Bu doğru için güç kuralı yoktur (per Q7 öncekilik). - DEFAULT güç olmayan değerler (GRANTED/NUKE) son satırın savunması olarak hareket eder Tam cascade'den sonra çözülmeyen haklar. Uygulamalı ModelResolverService @Autowired (required=false) olarak enjekte edilir. Mevcut iki inşaatçı-mandatoryunu inşa eden birim-test kabloları repositories çalışmaya devam ediyor, mirasın hiçbir kuvvet-rules yolu yok.
· kamo-internal
Master model editörü, rol şablonları ve kuvvet-rule gating
UI'deki yeni şube tipi güvenlik modeli: - şube tipi sekme bir "Edit Master Model" düğmesine ulaşır (gizli olduğunda sakladı). org'un bir şubeTypeID atanması var) bu model editörü ustada açıyor mod: Hiçbir isim alanı, hiçbir şube tipi çip, hit /master-model kurtar. Model editörü (hem de çocuk-model ve düzenleme-master-model) yeni bir kazanç sağlar "Default Security Roles" bölümü "Allked Apps" sonrasında, sekmelerle Yönetici / Takım Üyesi / Üye / DEFAULT ve 5-değer ayarları (FORCE GRANTED, GRANTED, Not SPECIFIED, FORCE NUKE, NUKE). - Yeni kullanımAppliedModel() kanca getiriyor /api/güvenlik/applied-model bir kez bir kez Ve ortaya çıkanlar editörleri tüketmek içinForced(rightName, roleType)'dır. Güvenlik rolleri, bölümler, iş başlıkları ve per-member roller-permissions sayfalar, geçerli şablonlar tarafından oluşturulan hakları gizler: * güvenlik-roles: sistem rolleri eşleşen şablon + DEFAULT kullanır; Özel roller sadece DEFAULT kullanır (Q11 Cevap A). * Bölümler + iş isimleri: DEFAULT sadece (özel olmayan). * Üye sayfası: üye tipi şablon (TEAM MEMBER vs MEMBER) + DEFAULT (Q8 C, tip-ilk değerlendirme emrine cevap verir). Yeni proxy rotaları: /api / güvenlik/master-model (GET/PUT) /api / güvenlik/applied-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
Master model ekleyin, varsayılan rol şablonları ve uygulamalı model çözmer
Yeni şube tipi güvenlik modeli akışı için veri katmanını tanıtın: - Organizasyon güvenilmez şubeTypeID ve masterModelID sütunları kazanır. - Yeni RolRightTemplateSetting Type enum with 5 values (FORCE GRANTED, GRANTED, Not SPECIFIED, FORCE NUKE, NUKE) şablon plakalı ayarlar için. Yeni VarsayılanRoleType enum (ADMINISTRAT, TEAM MEMBER, MEMBER, DEFAULT) Her ÇocukOrgu Güvenlik Modeli'ne eklenen 4 rol şablonu için. - Yeni varlıklar ************ ve ************ artı onların repos, hizmeti ve DTOs. - Uygulamalı ModelResolverService, verilen veyag yönetilen modeli çözer (branchType-.ed or master) ve kuvvet aramalarını ortaya çıkarır. - ÇocukOrgTemplateHizmet tohumları yeni çocuk ya dags' 3 sistem rolüne bakın Uygulanan modeldeki GRANTED/NUKE değerleri; güç değerleri kalır Şablonda ve runtime'da uygulanır. End-user OrgRoleRight, 3 değerli RolRightSettingType kullanmaya devam ediyor - Güç değerleri kesinlikle bir şablon katmanlı konsepttir.
· kamo-internal
Güvenlik model editörü için şube tipi çip-input alanı ekleyin
- BranchTypeChipField with color dot toggle, edit-on-up etiketi, and X delete - BranchTypeEditDialog for name /description editing - Autocomplete dropdown, GET /api/güvenlik /branch-tips'ten çekilir, mevcut model tiplerini dışlar, çapraz model türleri için kaynak modeli gösterir - RunModel, PUT /POST ödeme yüklerinde şubeTypes ve silinirBranchTypeIds gönderir - Liste masası renkli dot cipsi ile tip sütun alır -Models haritaları geri dönüş yanıtlarından elde edilir
· kamo-login
MANAGE USERS'i RolRightType
· kamo-register
MANAGE USERS'i RolRightType
· kamo-internal
MANAGE USERS hemen tüm ön referanslardan
· kamo-shared-library
MANAGE USERS haklı (id=19) RolRightType enumdan
· kamo-internal
Şube tipi güvenlik API rotasını ekleyin
· SecurityService
Wire branch types into security model CRUD endpoints
· kamo-shared-library
ÇocukOrgGüvenlik ModeliDTO'yu tam alanlarda ve şubeTypes ile genişletin
· kamo-shared-library
Add OrgBranchTypeService
· kamo-shared-library
Add OrgBranchTypeRepository
· kamo-shared-library
Add OrgBranchTypeDTO
· kamo-shared-library
Add OrgBranchType entity
· kamo-internal
Update BranchSetupManager subtitle to reference dynamic şube tipi etiketi
· kamo-internal
Rename Branch Kurulum sekmesi dinamik {branchLabel} Türler ve URL'yi şube tipine güncelleme
· kamo-login
Sıfır Capcha - her başarısız giriş denemesinden sonra
Kullanıcılar her yanlış şifreden sonra insan olduklarını tekrarlamalıdır. Calls widget.reset() ve Capcha Gerçekleştirilmiş/payload state on Her ikisi de belirgin başarısızlıklar ve ağ hataları.
· 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
Kullanıcı düzeyindeki alanlarda ve şifre değişim bölümü için izin kapıları ekleyin.AccountTab
· kamo-internal
Erişim kapısı ve MANAGE MEMBER SECURITY sekmesi üye ayarları sayfasına giriş sayfası
· kamo-internal
Sonraki.js API rotasını ekleyin

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