Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-marketing

    Aggiungi /richiede collegamenti nav diretti, homepage sezione, e pianificare funzionalità confronto riga

    - Header: Richieste aggiunte come collegamento diretto di alto livello tra Prezzo e Azienda - Footer: Richieste aggiunte alla colonna Prodotto per visibilità diretta - Pagina dei prezzi: banner personalizzato dev callout tra fasci e confronto delle caratteristiche - Caratteristiche pagina: richiesta di funzionalità callout prima CTA - Homepage: nuova sezione FeatureRequests tra Prezzi e FAQ che mostra l'accesso plan-tier - JumpToBar: Richieste link di salto aggiunto tra Prezzi e FAQ - DB: FEATURE REQUESTS seme nella categoria Support con valori di testo per piano (Free: Community vota, Starter: Vota & richiesta, Business: Priority request, Enterprise: Custom dev included) - KamoCRMPricingLoader: aggiornato con la definizione della funzione FEATURE REQUESTS e mappature plan-feature

  2. · kamo-internal

    App di andata e ritornoConfig + impostazioni di modellazione della superficie applicata + toggle

    - BranchSetupManager: mapBackendModel ora idrata l'app persistedConfigs restituito dal backend (disponibilità + consentitoCommerceTypes per servizio tipo) invece di ripristinarli a NON DISPONIBILE sul carico. Salvare i carichi di pagamento sia per il modello bambino che i flussi master-model includono appConfigs in modo da per-app disponibilità e CRM-tipo restrizioni commercio-tipo round-trip. Maestro modello editor riutilizza mappaBackendModel in modo che si comporta in modo identico. - useAppliedModel gancio: tipo di risposta espansa ora trasporta l'applicazione impostazioni scalari del modello (consenti ai propri utentiViewOtherOrgs, permettono ai propri clientiPrivateOrgs, consentireSubBambini, fasce di età, identitàProviderSetting, teamMemberPayFeesSetting), l'appConfigs mappa, e orgIsPrivate — quindi qualsiasi futuro editor (feature manager, OAuth config, mercato del commercio) può gate uniformemente senza riguadagnare. Un nuovo percorso di proxy. (PATCH) e una scheda di visibilità sulla scheda ramifica-tipi, gated da consentire ai propri proprietariPrivateOrgs. Quando abilitato, altri proprietari di org non vedranno questo org in inserzioni. L'UI ottimistica si riconcilia con il prossimo modello applicato rinfrescati.

  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

    Applicare ogni impostazione non-rolo su ChildOrgSecurityModel

    Aggiunge l'applicazione end-to-end per le impostazioni rimanenti su un org applicato modello di sicurezza. Tutte le impostazioni che in precedenza era stato letto solo (o salvare) ora ha un percorso di persistenza, un helper di esecuzione, e un'interfaccia utente gancio per consumarlo. strato di dati: - Organization.isPrivate (colonna booleana, falso predefinito) — org propria flag di visibilità, impostato attraverso il nuovo MasterModelController-gated PATCH endpoint. - ServizioDisponibilità Tipo enum (OPTIONAL DEFAULT ENABLE / OPTIONAL DEFAULT DISABLED / NOT AVAILABLE / FORCE ENABLED). - ChildOrgSecurityModelAppConfig entità + repo + servizio — persiste per-app disponibilità (e CRM ha consentitoCommerceTypes) in precedenza è caduto su salvare. - No, no. torna alla nuova entità. Esecuzione runtime: - AppliedModelEnforcementService consolida ogni controllo utilizzato dai chiamanti: asserireSubChildOrgAllowed, affermareAgeRangeAllowed, Non e' vero. isIdentityProviderRequired, assertCanSetPrivate, filtroVisibleOrgsForViewer, affermareTeamMemberCanSelfPayFees, èTeamMemberPayFeesForced / Blocked, assertAppEnableAllowed, assertAppDisableAllowed, getAppAvailability, getDefaultEnabledAppsForChild, assertCommerceTypeAllowed, ottenereAllowedCommerceTypes. Null-safe: "nessun modello applicato" permette tutto. - ChildOrgTemplateSeedingService esteso anche alle file OrgFeature del seme predefinito appConfig del genitore (FORCE ENABLED e OPTIONAL DEFAULT ENABLED) su nuovi org, così nuovi org Vieni con la superficie predefinita giusta.

  6. · kamo-internal

    Bloccare ruoli di sistema obbligatori nell'interfaccia utente

    - PublicProvider: ammettere branchTypeID/masterModelID sul incoming organizzazione payload in modo che la scheda dei tipi di ramo può in modo affidabile gate il Pulsante "Edit Master Model" (precedentemente basato sulla serializzazione Jackson scorrendo attraverso il tipo di oggetto di controllo). - RolesPermissionsTab: la griglia di controllo ruolo ora segna il sistema richiesto ruolo(i) come controllato e disabilitato in base al tipo del membro e la bandiera del proprietario: * Membri di tipo membro: "Membri" è richiesto. * Membri di tipo Team-Member: "I membri del team" è richiesto. * Proprietari di tipo Team-Member: "Administrator (Accesso completo)" è inoltre richiesto. Un chip "richiesto" e un accenno esplicativo rendono visibile il vincolo editore. Tentare di attivare un ruolo obbligatorio è un no-op; il backend la riconciliazione in MemberSecurityController lo avrebbe ri-aggiungeto comunque.

  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

    Applicare le regole della forza modello e il fallback DEFAULT alla risoluzione dei diritti membri

    # Now overlays the applicata # modello 4 modelli di default-role in cima alla cascata esistente ( ruoli diorg → dipartimento → titolo di lavoro → membro): - FORCE GRANTED/FORCE NUKE vince su tutti i livelli di cascata. Il modello è scelto per tipo di membro: uso dei proprietari di squadra ADMINISTRATOR, i membri della squadra usano TEAM MEMBER, i membri semplici usano MEMBER. - I valori FORCE del modello DEFAULT vincono sopra la cascata quando il modello di tipo di ruolo non ha alcuna regola di forza per quel diritto (per la precedenza Q7). - I valori non di forza DEFAULT (GRANTED/NUKE) fungono da ultima linea di difesa diritti che hanno deliberato a NOT SPECIFIED dopo l'intera cascata. AppliedModelResolverService viene iniettato come @Autowired (required=false) in modo da cablaggi esistenti che costruiscono solo i due costruttori-obbligatori i repository continuano a funzionare, degradando al percorso legacy no-force-rules.

  9. · kamo-internal

    Aggiungi editor modello master, modelli di ruolo e gating forza-rule

    Supera il nuovo modello di sicurezza a ramo nell'interfaccia utente: - la scheda dei tipi di branch guadagna un pulsante "Edit Master Model" (nascosto quando il org ha un branchTypeID assegnato) che apre l'editor del modello in master modalità: nessun campo di nome, nessun chip di tipo branch, salvare colpi /master-model. - Editor di modelli (sia add-child-model che edit-master-model) ottiene un nuovo Sezione "Default Security Roles" dopo "Allowed Apps", con schede per Amministratore / Team Member / Member / DEFAULT e impostazioni a 5 valori (FORCE GRANTED, GRANTED, NOT SPECIFIED, FORCE NUKE, NUKE). - Nuovo usoAppliedModel() gancio fetches /api/security/applied-model una volta e espone èForced(destra, roleType) per il consumo di editor. - ruoli di sicurezza, dipartimenti, titoli di lavoro e ruoli per-membro-permissioni pagine nascondere i diritti forzati bloccati dai modelli applicabili: * regole di sicurezza: i ruoli di sistema utilizzano il modello corrispondente + DEFAULT; ruoli personalizzati utilizzano solo DEFAULT (Q11 risposta A). * reparti + posti di lavoro: solo DEFAULT (non-role-specifico). * pagina dei membri: modello di tipo membro (TEAM MEMBER vs MEMBER) + DEFAULT (Q8 risposta C, primo ordine di valutazione di tipo). Nuovi percorsi proxy: /api/security/master-model (GET/PUT), /api/security/applied-model (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

    Aggiungi modello master, modelli di ruolo predefinito e risolutore modello applicato

    Introduce lo strato di dati per il nuovo flusso del modello di sicurezza di tipo branch: - L'organizzazione guadagna ramo nullableTypeID e colonne masterModelID. - Nuovo RoleRightTemplateSetting Digitare enum con 5 valori (FORCE GRANTED, GRANTED, NON SPECIFIED, FORCE NUKE, NUKE) per le impostazioni di template-layer. - New DefaultRoleType enum (ADMINISTRATOR, TEAM MEMBER, MEMBER, DEFAULT) per i 4 modelli di ruolo allegati a ogni ChildOrgSecurityModel. - Nuove entità... In piu' i loro repos, il servizio e i DTO. - AppliedModelResolverService risolve il modello che governa un determinato org (branchType-inherited o master) e espone le lookup forza-rule. - ChildOrgTemplateSeedingService sementi nuovi ruoli di sistema dei bambini con Valori GRANTED/NUKE dai modelli del modello applicato; nel modello e sono applicati a runtime. L'utente finale OrgRoleRight continua a utilizzare il 3-valore RoleRightSettingType — i valori di forza sono rigorosamente un concetto di template-layer.

  12. · kamo-internal

    Aggiungi campo di chip-input di tipo branch all'editor del modello di sicurezza

    - BranchTypeChipField con dot toggle colorato, etichetta di editing-on-click e X delete - BranchTypeEditDialog per la modifica di nome/descrizione - Autocomplete dropdown tira da GET /api/security/branch-types, esclude i tipi di modello attuali, mostra il modello sorgente per i tipi cross-model - manigliaSaveModel invia branchTypes e cancellatoBranchTypeIds in PUT/POST payload - Lista tabella ottiene Branch Tipi colonna con chip punti colorati - loadModels mappe branchTypes da risposta backend

  13. · kamo-login

    Rimuovi MANAGE USERS direttamente da RoleRightType

  14. · kamo-register

    Rimuovi MANAGE USERS direttamente da RoleRightType

  15. · kamo-internal

    Rimuovere MANAGE USERS direttamente da tutti i riferimenti frontend

  16. · kamo-shared-library

    Rimuovi MANAGE USERS right (id=19) da RoleRightType enum

  17. · kamo-internal

    Aggiungi route API di sicurezza dei rami

  18. · SecurityService

    Wire branch types into security model CRUD endpoints

  19. · kamo-shared-library

    Expand ChildOrgSecurityModelDTO con campi completi e branchTypes

  20. · kamo-shared-library

    Aggiungi OrgBranchTypeService

  21. · kamo-shared-library

    Aggiungi OrgBranchTypeRepository

  22. · kamo-shared-library

    Aggiungi OrgBranchTypeDTO

  23. · kamo-shared-library

    Aggiungi OrgBranchTipo entità

  24. · kamo-internal

    Aggiornare BranchSetupManager sottotitolo per riferimento etichetta di tipo dinamico ramo

  25. · kamo-internal

    Rinominare la scheda Impostazione Branch a {branchLabel} Tipi e aggiornare l'URL a tipi di branch

  26. · kamo-login

    Reset Capcha *** dopo ogni tentativo di login fallito

    Gli utenti devono ri-verificare sono umani dopo ogni password errata. Chiama widget.reset() e cancella CapchaVerified/payload stato su guasti delle credenziali e errori di rete.

  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

    Aggiungi i cancelli di autorizzazione per i campi di livello utente e la sezione cambio password in MyAccountTab

  29. · kamo-internal

    Aggiungi il cancello di accesso e la scheda MANAGE MEMBER SECURITY alla pagina delle impostazioni dei membri

  30. · kamo-internal

    Aggiungi change-password Next.js API proxy route

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta