Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· SecurityService
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
· ConversionService
Add image resize and favicon generation endpoints
· InitializerService
Add migration runner for logo_full_ext column on orgs
· kamo-shared-library
Aggiungi logoFullExt campo a entità Organizzazione; aggiungi listaOggetti a MinIOStorageService
· kamo-internal
Sostituisci icone emoji con icone SVG solide su creare stepper wizard
· kamo-shared-library
Aggiungere findByBranchTypeID query derivato a OrganizationRepository
Supporta i nuovi /branch-types/{id}/usages endpoint in SecurityService per verificare se un tipo di ramo ha un bambino attivo org prima della cancellazione.
· SecurityService
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns the count and summary of orgs created under a given branch type, used by the frontend to block hard deletion.
· kamo-internal
Cancellazione del tipo di ramo di guardia contro usi attivi org
Prima di rimuovere un chip tipo branch, il frontend ora chiama E' il momento giusto. Se esiste un org mostra una finestra di dialogo informativo che li elenca e istruisce l'amministratore a disabilitare il tipo invece di eliminarlo.
· kamo-internal
Tassetto del biglietto di supporto live su NavTop — SupportCountContext abbona a NATS via STOMP, spettacoli di badge in attesa di conteggio
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
Aggiungi campo di conteggio in sospeso a SupportAgentNotificationDTO e conteggi query a SupportTicketRepository
· kamo-internal
Aggiungi campo nomi di dominio a org Creazione guidata
Aggiunge un campo di dominio richiesto alla fase Basics con www automatico. spogliarsi. Validato, incluso nel payload API, e mostrato nella fase di revisione.
· kamo-marketing
Aggiungi callout modifica API alla pagina kamo-api-reference
Mostrato solo su /kamo-api-reference, chiede agli utenti di inviare il cambiamento API richieste via /requisiti o raggiungere via /contact.
· SecurityService
Add GET /branch-types/creatable endpoint with creator-type filtering
Returns only the branch types the calling member is permitted to create a child org under, based on their OWNERS/TEAM_MEMBERS/MEMBERS classification against the current org's applied security models. Mirrors the exact same getBranchTypesCreatableBy enforcement the POST /org endpoint applies at submission time, so the frontend can pre-filter the pick list and avoid showing options that would produce a 403. Response includes allowedMemberAgeRanges and allowedTeamMemberAgeRanges from each branch type's security model so the UI can gate AgeReqType options in the same request, without a second round-trip.
· kamo-internal
Sostituire l'organizzazione Tipo procedura guidata passo con ramoTipo / SecurityModel selezione
- Sostituire OrgTypeStep (Organizzazione) Tipo + Riduzione configurazione) con BranchTypeStep that fetches ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* nuovo endpoint restituisce solo tipi di ramo che il chiamante è permesso di creare un bambino org sotto, filtrato dai loro OWNERS/TEAM MEMBERS/MEMBERS classificazione contro i modelli di sicurezza applicati dell'org - Remove OrganizationType from the payload interamente; configType is now auto-derivato dal modello di sicurezza permessoMemberAgeRanges (KIDS ONLY → KIDS CLUB, teen-range → CLUB, altro ENTERPRISE) - AgeRestrictionsStep ora filtri disponibili Opzioni AgeReqType a quelli permesso dal modello di sicurezza selezionato, con uno striscione quando il gating è attivo; età nulla (non specificato) rimane un no-op sicuro per backend - Dopo la creazione di successo reindirizza a /setup/dns?orgId=&orgName= di il CURRENT org (non il nuovo org bambino) — DNS deve essere configurato prima il nuovo org è accessibile - Addirittura. Prossimo. percorso proxy - ReviewStep mostra nome di tipo di ramo + portata consentita invece di vecchio org type / config type badges
· kamo-internal
/network creare convenienza è gated da membro tipo + destra
- BranchSetupManager: nuovo "Who Can Create Child Orgs Under This Model" scheda con tre toggles (Members / Team Member / Owners). Valori andata e ritorno attraverso la mappaBackendModel ed entrambi salvano i flussi (modello bambino + modello master). Lo stato vuoto predefinisce tutti e tre per falso — un modello non offre la creazione a nessuno finché l'amministratore non li sceglie. Traduzione: montare e nascondere ogni "Creare New Organization" convenienza (header pulsante, pulsante a stato vuoto, scheda inferiore) a meno che il server restituisce definitivamente canCreateChildOrg=true. Mentre il controllo è in volo (null) la convenienza rimane nascosta in modo da non lampeggiare mai a un membro che non dovrebbe vederlo. - Novità. proxy route forwards attraverso il nuovo endpoint di SecurityService.
· SecurityService
Gate /network child-org creation by right + member-type applicability
Wires the applied-security-model child-org creation gate end-to-end: - SecurityModelController + MasterModelController round-trip the three new apply-to flags (appliesToMembers / appliesToTeamMembers / appliesToOwners) through create and update payloads. - New GET **************** resolves — for the caller's session — the creator-type bucket they fall into, whether their role carries CREATE_CHILD_ORG, the list of branch types available to them, and a combined canCreateChildOrg boolean the /network page uses to hide the create affordance when false. - **************** now rejects with 403 when the caller lacks CREATE_CHILD_ORG or picks a branch type that isn't among those their creator-type is offered — defense in depth against a client that bypasses the UI gate.
· kamo-shared-library
Gate di tipo membro + CREATE CHILD ORG destra per la creazione di baby-org
Aggiunge lo strato di dati per la creazione di gating /network child-org per tipo di membro: - Nuovo CREATE CHILD ORG proprio su RoleRightType (id 131). - Tre nuove colonne booleane su ChildOrgSecurityModel: applicaToMembers / si applicaToTeamMembers / si applica Quando è vero, i tipi di branch del modello sono offerti a quel secchio tipo membro su /network. Un modello con tutti e tre i falsi non è mai emerso come una creazione opzione a chiunque — governa solo org esistenti. - ChildOrgSecurityModelService guadagna 13-arg creare/aggiornamento sovraccarichi che accettare le nuove bandiere; le firme legacy 10-arg delegato attraverso. - ChildOrgSecurityModelDTO triplica le tre bandiere. - AppliedModelEnforcementService espone la logica del cancello che ogni chiamante azioni: Enum ChildOrgCreatorType { MEMBERS, TEAM MEMBERS, OWNERs } getBranchTypesCreatableBy(org, creatorType) → l'elenco dei tipi di branch che appartengono a modelli che si applicano a quel tipo di creatore e hanno a almeno un tipo di ramo. Il predicato booleano. Classificazione di tipo creatore: OWNERS = membri di squadra con èOrganizzazione Proprietario=true, TEAM MEMBERS = altri membri del team, MEMBERS = Tutti gli altri. Destro controllo (CREATE CHILD ORG) non è intenzionalmente cotto in questi helper — i chiamanti combinano entrambi i controlli in modo che l'aiutante può anche domande di sola lettura.
· InitializerService
Master model applies to all three member types on init
provisionMaxedOutMasterModel now sets appliesToMembers, appliesToTeamMembers, and appliesToOwners all true so every member type sees the master model's branch types as creation options on /network. The Administrator template continues to GRANT every RoleRightType including the new CREATE_CHILD_ORG right (id 131) by virtue of iterating RoleRightType.values().
· kamo-marketing
Aggiungere millisecondi per lanciare conto alla rovescia, spuntare ogni 50ms
· kamo-marketing
Sostituisci la data di lancio statica con il conto alla rovescia live a 2PM PST Apr 2026
Zecche ogni secondo che mostra Xd XXh XXm XX; cade di nuovo alla data statica fino a quando il cliente idrata, mostra "Ora" quando il bersaglio è raggiunto.
· InitializerService
Administrator default role template starts with all rights GRANTED
provisionMaxedOutMasterModel now populates the Administrator template with every RoleRightType set to GRANTED. The other three templates (Team Member, Member, DEFAULT) still materialize with zero rights (NOT_SPECIFIED for everything), matching the intended blank baseline for non-admin roles. Why GRANTED (not FORCE_GRANTED): at child-org creation time ChildOrgTemplateSeedingService copies non-force template values into the new org's OrgRoleRight rows, so a GRANTED admin template gives every new child org a ready-to-use admin role with full permissions that the owner can still edit. FORCE_GRANTED would lock rights at runtime and hide them from the security-roles editor, which we don't want for the admin template baseline.
· InitializerService
Provision a maxed-out master security model for KamoCRM on init
DataLoader now creates and assigns a master ChildOrgSecurityModel to KamoCRM immediately after the org is created, with every setting maxed out to the most permissive / force-enabled value: - allowOwnersViewOtherOrgs / allowOwnersPrivateOrgs / allowSubChildOrgs = true - identityProviderSetting = ENABLED - teamMemberPayFeesSetting = FORCE_ENABLE - allowedMemberAgeRanges / allowedTeamMemberAgeRanges = every AgeReqType - appConfigs = every non-deprecated ServiceType at FORCE_ENABLED, with CRM's allowedCommerceTypes containing every CommerceType - Organization.masterModelID set to the new model The four default role templates (Administrator / Team Member / Member / DEFAULT) are materialized with zero rights so the UI renders tabs for each — every right stays NOT_SPECIFIED at runtime, the intended blank baseline. Admins can edit specific force rules later via the branch-types tab. Also bumps kamo-shared-library to 1.5.0 so the new ChildOrgSecurityModelService / AppConfigService / DefaultRoleService and related types resolve at compile time.
· kamo-internal
CaratteristicheManager onori applicati-modello forza-enabled stato
Accetta il nuovo modelloDisponibilità + campi bloccati da FeatureController e le superfici nell'interfaccia utente: - Caratteristiche il cui modelloDisponibilità è FORCE ENABLED rendono il gioco in lo stato, disabilitato, con un tooltip esplicativo — gli amministratori possono vedere Sono a posto, ma non possono farli fuori. - Toggling a modelForced caratteristica cortocircuiti con un brindisi chiaro piuttosto che un errore generico dal backend 403. - Le funzioni NON DISPONIBILI non raggiungono mai il client (lato server filtrato) così la lista dell'UI è già la vista gated.
· SecurityService
Applied-model is the read-time source of truth for feature availability
Closes the "stale DB leaks a disabled feature" gap by gating every surface that touches OrgFeature / ServiceType through the applied security model. - **************** (the primary feeder of the frontend OrgContext): replaces the raw features serialization with **************** org.getFeatures()). The auto- provisioning loop now also skips apps the model marks NOT_AVAILABLE so we never create DB rows for blocked apps. - FeatureController.list: returns each feature with modelAvailability + locked metadata. NOT_AVAILABLE rows are filtered out, FORCE_ENABLED rows are reported as enabled=true + locked=true regardless of their DB state. The available list is also filtered down to apps the model permits. - New AppAvailabilityInterceptor + WebMvcConfig: installs a HandlerInterceptor on every service-scoped URL prefix (/api/security/pos, /api/security/commerce-markets, /api/security/leads*, /api/security/lead- imports, /api/security/lead-markets, /api/security/lead-vendors, **************** **************** **************** Each request is matched to a ServiceType, resolved against the caller's applied model, and rejected with HTTP 403 if the app is effectively off. This is the final line of defense: even with stale client state, a forgotten controller guard, or a direct API call, a blocked app returns 403. Net effect: the applied security model now wins at read time everywhere the org's features or apps are exposed — navigation, home page, settings slide-out, FeaturesManager, per-service endpoints. When the admin flips CRM to NOT_AVAILABLE on the model, the CRM UI disappears from the frontend and CRM endpoints start 403'ing — regardless of whether the DB still has OrgFeature.isActive=true for CRM.
· kamo-shared-library
Risolvetore di temperatura efficace per gating di lettura del modello applicato
Aggiunge il cancello di lettura che rende il modello di sicurezza applicato la finale fonte di verità per la disponibilità di funzionalità, così stante stato DB non può trapelare funzionalità disabilitata attraverso e una funzione forzata è sempre visibile anche quando il DB non si e' ripreso. Nuovi metodi su AppliedModelEnforcementService: - computeAvailabilitiesMap(org) — risoluzione di un passaggio di ogni ServiceType disponibilità per un org in un unico lookup. Serve come il lotto primitivo sugli altri nuovi metodi. - isAppEffectivelyEnabled(org, serviceType, caratteristiche) — il canonico "is questa app sul controllo. Servizi di base sempre su, deprecato sempre fuori, FORCE ENABLED sempre on, NON DISPONIBILE sempre off; OPTIONAL * defers to la riga di OrgFeature è stato attivo. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** compagno per i chiamanti che hanno bisogno di "all efficacemente-on app" come set. - computeEffectiveFeatures(org, caratteristiche) — restituisce un ArrayList fresco di OrgFeature righe proiettate attraverso il cancello: NON AVAILABLE drop, FORCE ENABLED forzato ad attivarsi (anche su file DB disabili), e FORCE ENABLED apps senza file DB ancora rappresentate da righe transitorie (organizzazioni-scopiche, mai perseverate). Callers serializzare le caratteristiche di un org ai clienti ora passare attraverso computeEffectiveCaratteristiche piuttosto che leggere la collezione grezza, quindi la frontend vede la vista applicata-model-gated per impostazione predefinita.
· kamo-internal
Aggiungere le schede delle impostazioni per-assocType docs con i tipi doc, gli ordini di stacking e i pannelli di configurazione
Sostituisce ComingSoonTab su /settings/features/docs con un'interfaccia di impostazione completa: - Scheda generale di panoramica + una scheda per ImageAssocType (Account, Applicazione di servizio, Ordine di servizio, Registrazione di chiamate, I miei Doc, Incontra registrazione, System-Wide) - Ogni scheda assocType ha 3 sotto-tabs: Configurazione (cartelle/docType feature toggles), Doc Types (full CRUD), Stacking Orders (CRUD con cassetto visual pipeline) - Prossimo.js API proxy percorsi per tutte le impostazioni di imaging endpoint - AssocConfigPanel, DocTypesManager, StackingOrdersManager, StackingOrderDrawer, AssocTypeSettings componenti
· DocsService
Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD
· kamo-shared-library
Aggiungere ImgAssocConfig entità, repository e ordinare a ImgStacking Ordine
· InitializerService
Add FEATURE_REQUESTS to Support category and all plan-feature mappings
Free: Community vote, Starter: Vote & request, Business: Priority requests, Enterprise: Custom dev included

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