Ocultar cartão ATF inteiramente quando todos os campos são bloqueados pelo modelo aplicado
Ponto final do modelo mestre da sonda e correção aplicadaModelo org ID
- Substituir o portão aplicadoModel.source baseado em uma sonda direta de /api/security/master-model na montagem; r.ok=false (409) significa a org é governado p...
Gate censorship tab options by applied model constraints
- Hide EDIT MASTER MODEL button when org is governed by a branch type (use appliedModel.source instead of unreliable org context branchTypeID) - Hide ATF fiel...
Mark-as-read and message fetch for shared/member mailboxes
Classic mode now loads shared mailbox messages via the correct /messages/{folder} endpoint (was calling the non-existent /conversations endpoint). Fetching a fu...
Mark-as-read for shared and member mailboxes
EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...
Use extensionId as external ID, not Relay node id
FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...
Lidar com IMAPInputStream no getMessage para evitar ClassCastException
JavaMail pode retornar um IMAPInputStream em vez de uma string decodificada de part.getContent() quando o conteúdo da mensagem não foi pré-fetched. A moldes dir...
Aumente o TTL de 90s para 300s para evitar falsos OFFLINEs na frenagem de tabulações
Reescreva todas as consultas/mutações do GQL contra a introspecção do esquema ao vivo
Verifiquei cada nome e tipo de campo contra o esquema atual do FreePBX 17. Conjunto completo de correcções: Consultas: - obterAllExtensions: remover o campo 'v...
Passe selectedFolder to ThreadDetailView so email:folder- changed fires with a valid folder
conversation.folder é sempre indefinido porque o Java ConversationEntity tem folderIds (text[]) não um campo de string de pastas. Isto fez com que o loadThread ...
Correct GraphQL field name to fetchAsteriscoDetalhes
A API do FreePBX retorna "Você quis dizer fetchAsteriscoDetalhes?" — renomear a saúde verificar consulta e seu acessor caminho de dados em conformidade.
Adicionar cabeçalhos XHR/Accept e análise de resposta de String ao cliente GraphQL
O mesmo padrão do FreePBXTokenCache: adicionar X-Pedido-Com + Aceitar: aplicativo/json para suprimir respostas de redirecionamento HTML do FreePBX, e mudar todo...
Sincronizar o dropdown da caixa de correio primária ao carregar
O dropdown foi predefinido para o item da primeira lista porque a caixa de correio selecionada foi inicializada sem uma caixa de correio, fazendo com que o valo...
Aumentar o limite de tamanho de envio de arquivos para 500MB
Spring Boot padrão tampa várias partes em 1MB, causando imagem de fundo uploads para falhar com 500 em request.getParts(). Coincidir os Serviços de Segurança li...
Erros HTTP de superfície para que as falhas de upload sejam visíveis
Substituido console silencioso.warn com um erro lançado no status não-OK, assim o usuário vê a razão de falha real (status + corpo de resposta) em vez de proced...
Adicionar cabeçalhos Accept+XHR e análise de resposta de texto bruto para o endpoint do token
O FreePBX estava retornando texto/html quando chamado via DNS de cluster porque o O cabeçalho da máquina não correspondeu ao PBX HOSTNAME configurado. Adiciona...
Drive minimized-tab entrada através de controles de animação
A mudança de animação={...} para animar={tabControls} quebrou a entrada animation: tabControls não tem nenhum alvo em fila na montagem, então o botão ficou na s...
Correct OAuth2 scope strings for FreePBX API
Os escopos do FreePBX são identificadores de nível superior: 'gql' (todos GraphQL) e "Descanso" (todos os REST). O formato 'gql:read' significa GQL para um módu...
Expor a porta 8088 diretamente no serviço ClusterIP
O serviço tinha apenas o mapeamento da porta 80→8088. Serviços internos que utilizam **************************** (por exemplo, token de API VOIPService requisi...
Confiar na infra- estrutura pendenteCount, soltar deslocamentos do cliente
Infraestrutura pendenteO Conta não foi lido agora (conta as sessões do SUPPORT TICKET com mensagens mais novas do que a última Vista do proprietário). Quando o ...
Adicionar o Mapa de Configuração da Configuração de 2ban em falta para o k1m1
Referências de implantação falham2ban-config ConfigMap (jail.local + asterisco-security.conf) mas não existia, bloqueando o pod em MountVolume. Configurar e imp...
MarkAsRead after agent send so lastViewed advances
Nos tickets de suporte, as mensagens de visitante e agente são armazenadas sob o mesmo sistemaMembro, por isso a consulta não- lida é depende inteiramente da úl...
Os tickets de suporte precisam de contagens não lidas por membro- diagnóstico
Mensagens de visitantes em tickets de suporte são armazenadas no mesmo sistemaMembro que o agente autentica como, para que a sessão de CHAT existente não seja l...
Passar a pasta para carregar o botão de repetição do Thread
loadThread leva (threadId, pasta); o botão retry error- state somente passou threadId, quebrando a construção kamo-internal. Coincidir com a chamada A assinatur...
Correct JsonIdentity Info property de 'uniqueId' para 'id'
Entidade membro declarou @JsonIdentityInfo(propriedade = "uniqueId") mas o o campo de chave primária real é chamado 'id'. Jackson atirou "não foi possível encon...
Remova a proteção SSR causando descompasso de hidratação; solte SockJS para WebSocket nativo
- Hero.tsx: remover o tipo de janela em torno do campo de partículas — campo de partículas já tem ssr:false assim que o guard produziu um servidor/cliente árvor...
Limpar os indicadores não lidos ao abrir a conversa
ThreadDetailView agora envia e-mail:folder-changed after markConversationRead sucessos para que MailButton refetches a contagem de crachás navtop caixa de entra...
Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter
The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...
Use /public/{mainDomain}-{tld} path matching actual MinIO bucket layout
The getThemePath() was generating /domain/{tld}/{split}/kamosite paths that don't exist in MinIO — theme files live in the public bucket under kamocrm-com/, bad...
Quebrar a cadeia min- w- 0 para conter apenas o rolagem de e- mail na coluna do corpo
Adicionar min-w-0 ao recipiente exterior e conteúdo principal flex div para crianças flex não pode expandir para e-mail min- conteúdo largura, o que estava caus...
Hoist provedores acima ToolProviders
A mesma causa raiz que o guincho ChatWebSocketProvider: SupportTicketWindow chamadas E o ChatBox chama useUnread().markAsRead(), mas ambas as janelas renderizam...
Adicionar supressãoHydrationAviso e corrigir imagens de placeholder quebradas
supressorHydrationAviso em <html> previne erro de reação #418 causado pelo navegador extensões (por exemplo, traduzir, modo escuro) mutando atributos html entre...
Permitir o prefixo de / domínio/ caminho no tema IngressRoute for CORS
A configuração do tema no theme.kamocrm.com/domain/... não foi regras de rota existentes (apenas /public/ e /internal/ foram permitidas), então Traefik retornou...
Remover o CorsFilter duplicado e remover os cabeçalhos CORS no gateway
WebConfig.java definiu um segundo feijão CorsFilter competindo com o CorsConfig. java's feijão, arriscando duplicar cabeçalho escreve. Excluído para que apenas ...
Remover duplicado CorsFilter bean causando duplo cabeçalho Access-Control-Allow-Origin
O Feijão CorsFilter explícito causou um segundo filtro CORS ao lado da Primavera Suporte CORS incorporado da segurança (que usa CorsConfigurationSource). Ambos ...
Remover instruções de depuração console.log e adicionar rotas em falta
Remover todo o registro temporário de depuração adicionado durante o rastreamento do WebSocket ChatBox, TicketChat, MemberItem, ChatTool e useChatWebSocket; adi...
Impedir que o cabeçalho da mensagem expanda a coluna em endereços longos
A criança flex esquerda do cabeçalho não tinha min-w-0, por tanto tempo e-mail inquebrável endereços em From/To/Cc forçaram sua largura de conteúdo min a cresce...
Hoist ChatWebSocketProvider acima ToolProviders
ToolDock (e suas janelas de ferramenta como SupportTicketWindow → TicketChat) é montado dentro ToolProviders, que se senta ABOVE PresenceWrapper na árvore para ...
Soltar o DOM do Shadow no renderizador de e- mail para overflow-x-auto
Shadow DOM foi a causa raiz. Conteúdo de e-mail amplo (mesas de largura fixa) dentro da árvore sombra pintada após o hospedeiro sem contribuir para a caixa de l...
Alinhar o caminho de importação do ChatWebSocketContext para corresponder ao provedor
TicketChat e ChatNotificationListener importaram o contexto através do '@/app/contexts/...' pseudônimo enquanto PresenceWrapper (o provedor) importa através do ...
Forçar a contenção da máquina com estilos inline + contém: layout
Overflow-x-auto baseado em classe no host sombra não estava ganhando de forma confiável contra a sombra ':host { all: inicial}' reset, so wide email o conteúdo ...
Role conteúdo de email amplo dentro da sombra DOM, não fora
As tentativas anteriores de adicionar overflow-x-auto à luz dos antepassados DOM não foi possível obter conteúdo de e-mail amplo porque a árvore de sombra é vis...
Use getHasAttachments () para corresponder ao tipo de invólucro booleano
************* é um booleano (embrulhador), então Lombok gera getHasAttachments() não isHasAttachments(). Apenas este último existe para booleanos primitivos. Us...
Expandir a verificação do repositório JPA para incluir o pacote de comércio
A nova biblioteca da Kamo-compartilhada traz consigo que exige **************************** (com.kamo.z.commerce partilhado). MediaService apenas digitalizou do...
Restaurar a importação do HashMap no ChatWebSocketController
O refator anterior removeu a importação do HashMap, mas a manipulação método ainda constrói um HashMap para a carga útil do evento de digitação, causando a comp...
Adicionar min-w-0 ao conteúdo de e-mail div so overflow-x-auto fire
Sem min-w-0, a largura mínima padrão da criança flex-col:auto resolve para min-content, deixando tabelas de e-mail amplas expandir o div passado a coluna largur...
Remover a chamada de ligação duplicadaStomp no sendMessage
Quando a primeira mensagem cria uma nova sessão, onSessionCreated actualiza os adereços que desencadeia o usoEffect para chamar connectStomp. A chamada em linha...
Proativamente criar consumidor NATS na criação de sessão para evitar perda de mensagem
Anteriormente, o consumidor de push NATS JetStream só foi criado quando um cliente STOMP enviado /app/chat/subscribe. Com a Política de Entrega. Novo, quaisquer...
Fechar o gap de reconexão que causa mensagens perdidas em tempo real
Remover `connected` do uso da assinaturaEffect deps no TicketChat e ChatBox. Anteriormente, cada reconexão WebSocket desencadeou o efeito limpeza que chamou uns...
Permitir que o usuário do sistema gerencie a marca org e corrija a autenticação de logo
- Adicionar bypass do usuário do sistema como primeiro guard no canManageOrgBranding assim plataforma usuário do sistema tem controle total de marca sobre todas...
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.