Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· 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
Adicionar campo logoFullExt à entidade Organização; adicionar listaObjects ao MinIOStorageService
· kamo-internal
Substituir ícones emoji por ícones SVG sólidos ao criar o assistente Stepper
· kamo-shared-library
Adicionar pesquisaByBranchTypeID consulta derivada para OrganizationRepository
Suporta o novo endpoint /branch-types/{id}/usages no SecurityService para verificar se um tipo de ramo tem orgs filhos ativos antes da eliminação.
· 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
Guardar a eliminação do tipo de ramo contra os usos de org activos
Antes de remover um chip tipo branch, o frontend agora chama **************************** Se existirem quaisquer orgs, ele mostra um diálogo informacional listando-os e instrui o administrador a desactivar o tipo em vez de o apagar.
· kamo-internal
Emblema de ticket de suporte ao vivo no NavTop — SupportCountContext assina o NATS via STOMP, emblema mostra contagem pendente
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
Adicionar o campo de contagem pendente ao SupportAgentNotificationDTO e a consulta de contagem ao SupportTicketRepository
· kamo-internal
Adicionar campo de nome de domínio ao assistente de criação de org
Adiciona um campo de domínio necessário ao passo básico com www automático. a despir. Validado, incluído na carga útil da API, e mostrado na etapa de revisão.
· kamo-marketing
Adicionar a chamada de modificação da API à página de referência kamo-api
Mostrado apenas em /kamo-api-reference, pede aos usuários para enviar a alteração de API requisições via /requests ou alcançar 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
Substituir a Organização Digite o passo do assistente com a seleção branchType/SecurityModel
- Substituir o OrgTypeStep (Organização Tipo + Configuração dropdowns) com BranchTypeStep que busca **************** o novo endpoint devolve apenas os tipos de ramo que o chamador é permitido criar uma org-criança em baixo, filtrada pelos seus PROPRIEDADES/MEMBERS/MEMBERS classificação contra os modelos de segurança aplicados da org - Remover OrganizationType da carga útil inteiramente; configType está agora Auto-derivado do modelo de segurança permitidoMemberAgeRanges (KIDS ONly → Kids CLUB, teen-range → CLUB, else ENTERPRISE) - AgeRestrictionsPasso agora filtros disponíveis Opções AgeReqType para aqueles permitido pelo modelo de segurança selecionado, com um banner quando ativo; idade nula (Não especificada) permanece um no- op seguro por infra- estrutura - Após o sucesso da criação redirecionar para /setup/dns?orgId=&orgName= de a org CURRENT (não a nova org infantil) — DNS deve ser configurado antes o novo org está acessível - Não, não, não. Seguinte.js proxy route - ReviewStep mostra nome do tipo de ramo + escopo de idade permitido em vez de antigo tipo / tipo de configuração
· kamo-internal
/network create affordance is gated by member-type + right
- BranchSetupManager: novo "Quem pode criar orgs de crianças sob este modelo" carta com três alternâncias (membros / membros da equipa / proprietários). Valores ida e volta através do mapaBackendModel e ambos salvar fluxos (modelo infantil + modelo mestre). Estado vazio defaults todos os três para false — um modelo não oferece criação a ninguém até que o administrador os opte. - Página da rede: montar e esconder cada "Criar nova organização" affordance (header botão, botão de estado vazio, cartão inferior) a menos que o servidor definitivamente retorna canCreateChildOrg=true. Enquanto a verificação é Em vôo (null) o dinheiro fica escondido para que nunca o flash a um membro que não devia vê-lo. - Novo... rota proxy para frente até ao novo ponto final do 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
Porta do tipo de membro + CREATE CHILD ORG direito para criação de 'finder-org'
Adiciona a camada de dados para a criação de gating /network child-org por tipo de membro: - Novo CREATE CHILD ORG à direita no Tipo de Papel Direito (id 131). - Três novas colunas booleanas em ChildOrgSecurityModel: aplica-seAos membros / aplica-seAos membros / aplica-seAos proprietários Quando true, os tipos de branch do modelo são oferecidos a esse balde do tipo membro em /rede. Um modelo com todos os três falsos nunca aparece como uma criação opção a qualquer pessoa — apenas governa orgs existentes. - ChildOrgSecurityModelO serviço ganha 13-arg criar/atualizar sobrecargas que aceitar as novas bandeiras; as 10 assinaturas legado arg delegar através. - ChildOrgSecurityModeloDTO round-trips as três bandeiras. - AppliedModelEnforcementService expõe a lógica da porta que cada chamador Acções: enum ChildOrgCreatorType {MEMBROS, EQUIPAMENTOS, PROPRIEDADES} getBranchTypesCreatableBy(org, creatorType) → a lista de tipos de ramos que pertencem a modelos que se aplicam a esse tipo de criador e têm pelo menos um tipo de ramo. ************* creatorType) → predicado booleano. Classificação do tipo Criador: PROPRIEDADES = membros da equipa com isOrganização Proprietário=verdadeiro, TEAM MEMBERS = outros membros da equipa, MEMBROS = Todos os outros. Verificação à direita (CREATE CHILD ORG) não é intencionalmente cozida para estes ajudantes — os chamadores combinam ambos os cheques para que o ajudante também possa consultas só de leitura.
· 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
Adicionar milissegundos à contagem regressiva de lançamento, assinalar a cada 50ms
· kamo-marketing
Substituir data de lançamento estática com contagem regressiva ao vivo para 2PM PST abr 20 2026
Tiques a cada segundo mostrando Xd XXh XXm XXs; volta à data estática até que o cliente se hidrata, mostra "Agora" quando o alvo é atingido.
· 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
CaracterísticasManager homenageia o estado habilitado para força aplicado-modelo
Aceita o novo modelo Disponibilidade + campos bloqueados do FeatureController e as superfícies na UI: - Características cujo modeloA disponibilidade é FORCE ENABLED renderizar a opção o estado, desativado, com uma dica explicativa — os administradores podem ver Eles estão ligados, mas não conseguem virá-los. - Alternando um modeloForced característica curto-circuitos com um brinde claro em vez do que um erro genérico da infra-estrutura 403. - NOT AVAILABLE recursos nunca chegar ao cliente (filtrado servidor-lado) Então a lista de UI já é a vista fechada.
· 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
Resolução de características efetivas para o tempo de leitura do modelo aplicado
Adiciona o portão de tempo de leitura que torna o modelo de segurança aplicado o final fonte de verdade para disponibilidade de recursos, então o estado DB não pode vazar o recurso desactivado e um recurso habilitado para força é sempre visível Mesmo quando o DB não alcançou. Novos métodos em AppliedModelEnforcementService: - computAvailabilitiesMap(org) — resolução de um passo de cada ServiceType disponibilidade para uma org em uma única pesquisa. Serve como o lote primitivo os outros novos métodos se baseiam. - isAppEffectively Enabled(org, serviceType, features) — o canônico "é Esta aplicação está ligada. Os serviços principais estão sempre ligados, sempre desactualizados, FORCE ENABLED sempre on, NOT Disponível sempre off; OPTIONAL * A linha OrgFeature é um estado ativo. - ********************** características) - o Set<ServiceType> companheiro de chamadas que precisam de "todos os aplicativos efetivamente ligados" como um conjunto. - ComputEffectiveFeatures(org, features) — devolve uma nova ArrayList de OrgFeature linhas projetadas através do portão: NÃO DISPONÍVEL caiu, FORCE ENABLED forçado a activar (mesmo nas linhas DB desactivadas), e Aplicações FORCE ENABLED sem linha DB ainda representada por linhas transitórias (organização-escoberto, nunca persistiu). Chamadores serializando recursos de uma org para clientes agora roteie através computEffectiveCaracteres em vez de ler a coleção bruta, assim o frontend vê por padrão a view applicated-model-gated.
· kamo-internal
Adicionar abas de configurações por assocType docs com tipos de documentos, ordens de empilhamento e painéis de configuração
Substitui ComingSoonTab em /settings/features/docs por uma interface completa de configurações: - Guia geral de visão geral + uma guia por ImageAssocType (Conta, Aplicação de Serviço, Ordem de Serviço, Gravação de Chamadas, Meus Docs, Meet Recording, System-Wide) - Cada guia assocType tem 3 sub-tabs: Configuração (pasta/docType comutadores de recursos), Doc Types (CRUD completo), Stacking Orders (CRUD com gaveta de tubulação visual) - Rotas proxy da API Next.js para todos os parâmetros de configurações de imagem - AssocConfigPanel, DocTypesManager, StackingOrdersManager, StackingOrderDrawer, AssocTypeSettings componentes
· DocsService
Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD
· kamo-shared-library
Adicionar a entidade, repositório e ordenação ImgAssocConfigOrder à ImgStacking OrdemDt
· 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

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito