Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · 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

  2. · 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.

  3. · 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.

  4. · 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.

  5. · 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.

  6. · 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.

  7. · 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.

  8. · 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ță.

  9. · 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).

  10. · 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.

  11. · 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.

  12. · 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

  13. · kamo-login

    Elimină managerul USers chiar de la RoleRightType

  14. · kamo-register

    Elimină managerul USers chiar de la RoleRightType

  15. · kamo-internal

    Elimină managerul USers din toate referințele frontend

  16. · kamo-shared-library

    Eliminați Manage USers dreapta (id=19) din RoleRightType enum

  17. · kamo-internal

    Adaugă tipul de ramură de securitate API

  18. · SecurityService

    Wire branch types into security model CRUD endpoints

  19. · kamo-shared-library

    Extinde ChildOrgSecurityModelDTO cu câmpuri complete și tipuri de sucursale

  20. · kamo-shared-library

    Adaugă OrgBranchTypeService

  21. · kamo-shared-library

    Adaugă OrgBranchTypeRepository

  22. · kamo-shared-library

    Adaugă OrgBranchTypeDTO

  23. · kamo-shared-library

    Adaugă entitate OrgBranchType

  24. · kamo-internal

    Actualizează BranchSetupManager subtitrare la eticheta tipului de ramură dinamică de referință

  25. · kamo-internal

    Redenumeşte fila de configurare a ramurii către dinamica {rambursageLabel} Tipuri şi actualizează URL- ul la tipurile de ramură

  26. · 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.

  27. · 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.

  28. · kamo-internal

    Adăugați porțile de permisiune pentru câmpurile de nivel utilizator și secțiunea de schimbare a parolei în MyAccountTab

  29. · kamo-internal

    Adaugă poarta de acces și MANAGE MINTE SECURITY tab guard la pagina setărilor membrilor

  30. · 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