Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-marketing
Adauga / solicita link-uri nav direct, pagina de start, și planul rând de comparație caracteristici
- Antet: Solicitări adăugate ca legătură directă de nivel superior între tarifare și societate - Footer: Solicitări adăugate la coloana de produse pentru vizibilitate directă - Pagină de preț: banner de apel personalizat dev între pachete și compararea caracteristicilor - Pagina caracteristicilor: cereri de caracteristici callout înainte de CTA - Homepage: noua secţiune "FatureRequests" între preţuri şi întrebări frecvente care prezintă acces la nivel de plan - JumpToBar: Solicita legatura salt adaugata intre Preturi si FAQ - DB: FEATURE REQUESTS însămânțat în categoria Suport cu valori text per plan (Liber: vot comunitar, Starter: Vot & cerere, Afaceri: Solicitări prioritare, Enterprise: Custom dev inclus) - KamoCPMRRicingLoader: actualizat cu definirea caracteristicilor FEATURE REQUESTS și cartografiere plan-feature
· kamo-internal
App de călătorie rotundăConfigs + setările de model aplicate pe suprafață + comutația de tip private-org
- BranchSetupManager: mapBackendModel hidratează appConfigs returnat de suport (disponibilitate + permisCommerceTypes per service) tip) în loc să le reseteze pentru a NU AVAILABIL la sarcină. Salvează sarcinile utile atât pentru fluxurile de copii-model și master-model includ appConfigs astfel încât disponibilitatea pe aplicație și restricțiile de tip comerț CRM dus-întors. Maestre model editor reutiliza hartaBackendModel astfel încât să se comporte identic. - utilizare Cârlig de model aplicat: tipul de răspuns extins poartă acum aplicat setările scalare ale modelului (permiteți OwnersViewOtherOrgs, permiteți OwnersPrivateOrgs; permite Subordine, intervale de vârstă, identitateProviderSetting; teamMemberPayFeesSeting), appConfigs map, and orgIsPrivate viitor editor (administrator de infrastructură, OAuth config, comerț piață) poate poarta uniform fără re-aport. - Conectare privat-org: noua rută proxy *************** (PATCH) și o cartelă de vizibilitate care apare pe fila de tipuri de ramură, cu poarta de permiteți OwnersPrivateOrgs. Când este activat, alţi proprietari de org nu vor vedea asta. Orga în liste. Optimistic IU reconciliază cu următorul model aplicat Refresh.
· 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
Înființa fiecare cadru non-rol pe ChildOrgSecurityModel
Adaugă aplicarea la sfârșit pentru restul setărilor aplicate pe o org model de securitate. Fiecare setare care a fost doar citit anterior (sau scăzut pe salvează) are acum o cale de persistență, un ajutor de aplicare pe termen lung, și un UI cârlig să-l consume. Strat de date: - Organization.isPrivate (boolean column, implicit fals) pavilion de vizibilitate, setat prin noul MasterModelController-GATCH obiectivul final. - ServiceAvailability Tip enum (OPȚIONAL DEFAULT ENABLED / OPTIONAL DEFAULT DISABLED / NOT AVAILEBILE / FORCE ENABLED). - ChildOrgSecurityModelAppConfig entity + repo + service disponibilitatea (și CRM a permis CommmerceTypes) a scăzut anterior pe economie. - *************** ocolind noua entitate. Aplicarea în timp util: - Modul de aplicareServicii de aplicare consolidează fiecare cec utilizat de apelanți: Afirmation SubChildOrgAlowed, afirmationAgeRangeAlowed, - Nu. IdentityProviderRequired, afirmation CanSetPrivate, filterVisibleOrgsForViewer, Afirmați-vă că membru al echipei CanSelfPayFees, este TeamMemberPayFees Forced / Blocked, AfirmândAppEnableAlowed, afirmăAppDisableAlowed, a lua AppAvailability, Obține DefaultEnabled AppsForChild, afirmă CommmerceTypeAlowed, Obțineți permis CommmerceTypes. Null-safe: "niciun model aplicat" permite totul. - ChildOrgTemplateSeedingService extinsa si la randurile de seminte OrgFeature din aplicația părinteluiConfig defaults (FORCE ENABLED și OPTIONAL DEFAULT ENABLED) pe orgi noi pentru copii, astfel încât orgs nou-produs vin cu suprafata implicita dreapta.
· kamo-internal
Blochează rolurile obligatorii ale sistemului în funcția de membru UI
- PublicProvider: Admiteti sucursalaTypeID/masterModelID la intrare organizare sarcină utilă astfel încât fila de tipuri de ramură poate poarta fiabil Butonul "Edit Master Model" (se bazează anterior pe serializarea Jackson care curge prin verificarea de tip prop). - RoluriPermisiiTab: grila de checkbox rol acum marchează sistemul necesar rol (s) verificat și dezactivat pe baza tipului de membru și a pavilionului proprietarului: * Membri: "Membri" este necesar. * Membrii echipei: "Membri în echipă" este necesară. * Proprietarii de tip Team-Member: "Administrator (Acces complet) " este suplimentar sunt necesare. Un cip "required" și un indiciu explicativ face constrângerea vizibilă pentru Editor. Încercarea de a comuta un rol obligatoriu este un nu-op; backend reconcilierea în cadrul MemberSecurityController ar re-add oricum.
· 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
Aplică normele privind forța de model și retragerea DEFAULT la rezoluția privind drepturile membrilor
Acum trece peste aplicaţie. Model 4 modele de rol implicit pe partea de sus a cascadei existente (org roluri → Departamentul → titlul postului → Membru: - Force GRANETED/FORCE NUKE de tip rol specific câștigă peste toate nivelurile cascadei. Șablonul este ales după tipul de membru: proprietarii de echipă folosesc ADMINITRATOR, membrii echipei folosesc TEAM MINTE, membrii simpli folosesc membru. - Şablon DEFAULT Valorile forţei câştigă peste cascadă atunci când modelul de rol nu are nici o regulă de forță pentru acest drept (per Q7 prioritate). - Valorile neforţei DEFAULT (GRANETED/NUKE) acţionează ca ultima linie de apărare pentru drepturi care au fost rezolvate în cazul NOT SPECIFICATE după cascada completă. Model AplicatRezolverService este injectat ca @Autowired (necesar=fals) astfel cabluri de încercare a unității existente care construiesc doar cele două constructor-obligatoriu repertoriile continuă să funcționeze, degradându-se pe calea moștenirii fără forță.
· kamo-internal
Adăugați editor model de master, șabloane de roluri, și forța-regulă gating
Suprafață noul model de securitate de tip ramură în UI: - tab-uri tip ramură câștigă un buton "Edit Master Model" (ascuns atunci când org are o ramurăTypeID atribuită) care deschide editorul model în master Mod: nici un camp de nume, nici un cip de ramuri-tipuri, salva hituri /master-model. - Model editor (atât add-child-model și edita-master-model) câștigă un nou Sectiunea "Roluri de Securitate Default" dupa "Apps permise," cu file pentru Administrator / Membru al echipei / Membru / DEFAULT și setări cu 5 valori (force granged, granted, not specified, Force noke, NUKE). - Noua utilizareModel aplicat () cârlig aduce /api/securitate/model aplicat o dată și expune este Forced (DreptName, roleType) pentru editorii consumatoare. - Roluri de securitate, departamente, titluri de locuri de muncă, și per-membru roluri-permisii pagini ascunde drepturile blocate în mod forțat de modelele aplicabile: * roluri de securitate: rolurile de sistem folosesc șablonul lor de potrivire + DEFAULT; rolurile personalizate folosesc doar DEFAULT (Q11 raspunsul A). * departamente + titlu de job: DEFAULT numai (non-rol-specific). * Pagina membru: șablon de tip membru (TEAM MEMBRU vs MEMBRU) + DEFAULT (Q8 răspunde C, ordinul de evaluare de tip I). noi rute proxy: /api/security/master-model (GET/PUT); /api/securitate/model aplicat (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
Adaugă model master, șabloane de rol implicit și rezolvator model aplicat
Introduce stratul de date pentru noul flux de securitate tip ramură: - Organizaţia câştigă filiale nevalabileTypeID şi coloane MasterModelID. - Setare nouă RolRightTemplate Tip enum cu 5 valori (FORCE GRANETED, Se acordă, NU SPECIFICAT, FORCE NUKE, NUKE) pentru setările de modele-strat. - New ImplicitRoleType enum (ADMINITRATOR, TEAM MINTE, MEMBRU, DEFAULT) pentru cele 4 modele de rol atașate fiecărui model de ChildOrgSecurity. - Noile entităţi... *************** plus repo-urile lor, serviciu, și DTO. - Modul aplicatRezolvatorServicii rezolva modelul care guverneaza un anumit org (sucursala-tip moștenit sau maestru) și expune căutarea forței-regulă. - ChildOrgTemplateSeedingSeminteSeminte de service noile orguri de copii 3 roluri de sistem cu Valorile acordate/NUKE din machetele modelului aplicat; valorile forței rămân în șablon și sunt aplicate la termen. End-utilizator OrgRoleRight continuă să utilizeze 3 valoare RoleRightSettingType valorile forței sunt strict un concept de model-strat.
· kamo-internal
Adăugați tipul de domeniu de inserție cip la editor model de securitate
- BranchTypeChipField cu buton punct colorat, edita-on-click eticheta, și X șterge - BranchTypeEditDialog pentru editare nume/descriere - Autocomplete trageri de la GET /api/security/sucursale-tipuri, exclude tipurile actuale de modele, arată modelul sursă pentru tipurile de modele încrucișate - mânerSaveModel trimite ramuriTipuri și șterseBranchTypeIds în sarcină utilă PUT/POST - Listă tabel devine Sucursala Tipuri coloana cu jetoane puncte colorate - incarcareModeluri harti ramificareTipuri de raspuns suport
· kamo-login
Elimină managerul USers chiar de la RoleRightType
· kamo-register
Elimină managerul USers chiar de la RoleRightType
· kamo-internal
Elimină managerul USers din toate referințele frontend
· kamo-shared-library
Eliminați Manage USers dreapta (id=19) din RoleRightType enum
· kamo-internal
Adaugă tipul de ramură de securitate API
· SecurityService
Wire branch types into security model CRUD endpoints
· kamo-shared-library
Extinde ChildOrgSecurityModelDTO cu câmpuri complete și tipuri de sucursale
· kamo-shared-library
Adaugă OrgBranchTypeService
· kamo-shared-library
Adaugă OrgBranchTypeRepository
· kamo-shared-library
Adaugă OrgBranchTypeDTO
· kamo-shared-library
Adaugă entitate OrgBranchType
· kamo-internal
Actualizează BranchSetupManager subtitrare la eticheta tipului de ramură dinamică de referință
· kamo-internal
Redenumeşte fila de configurare a ramurii către dinamica {rambursageLabel} Tipuri şi actualizează URL- ul la tipurile de ramură
· kamo-login
Resetează Capcha *** după fiecare încercare de conectare eșuată
Utilizatorii trebuie să reverifice că sunt umani după fiecare parolă incorectă. Apeluri widget.reset() și șterge CapchaVerified/payload stat on atât eșecuri credibile și erori de rețea.
· 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
Adăugați porțile de permisiune pentru câmpurile de nivel utilizator și secțiunea de schimbare a parolei în MyAccountTab
· kamo-internal
Adaugă poarta de acces și MANAGE MINTE SECURITY tab guard la pagina setărilor membrilor
· kamo-internal
Adaugă change-password Next.js API proxy route

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit