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 ...
Console.log temporário para rastrear o caminho de assinatura TicketChat STOMP
Adiciona logs de console em todas as fases do pipeline de assinatura (fogo de efeito, guard pass, subscreva () call, attachSessionSubscription, client. subscrev...
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...
Contenha o transbordamento horizontal no painel de visualização de e- mail para a terceira coluna
- Adicione overflow-x-escondido ao recipiente externo MessageBrowser como limite rígido - Adicionar overflow-x-escondido à coluna 3 wrapper e overflow-x-auto pa...
Falha na produção2ban com cadeias PJSIP e estado persistente
- Adicionar fail2ban-configmap.yaml com cadeias [asterisco] e [freepbx-web], aumento incremental da proibição (1h→24h→30d teto), LAN ignorarip, e a filtro perso...
Substituir o Coqui TTS por Piper TTS (en US-norman-medium)
O modelo Coqui VCTK não tem colunas nomeadas — substitua Piper TTS que tem a voz exacta do Norman. Binário Piper (~3 MB) e modelo (~60 MB) são baixados por um r...
Reset stale hasAttachments on sync and accumulate correctly
- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...
Add resetHasAttachmentsForFolder query to ConversationRepository
Allows sync to reset stale has_attachments flags before re-indexing so corrected MIME detection can rebuild the field from actual attachment data.
Integrate Coqui TTS with norman voice (VCTK p267)
- Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi ...
Pré-popular em resposta/avançar e corrigir o envio deEndereço
- DraftMessage agora carrega deEndereço assim que flui de openNewMessage até ao compositor - MessageBrowser armazena o e- mail de caixa de correio activo caixas...
Suporte a partir do cancelamento do endereço ao enviar
Adds FromAddressRequest to EmailSendRequest so the frontend can especifique Apelido/compartilhado/endereço da caixa de correio a enviar. SmtpOnlyProvider agora ...
Add LAN DNS pod for split-DNS on k1m1
Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX...
Adicione rede local para correção RTP cliente split-DNS / LAN
Telefones na mesma LAN que o k1m1 ligam- se através de DNS dividido (o domínio resolve- se para 192.168.4.22 internamente). Sem local net, Asterisco ainda anunc...
Persista em contato de feitiçaria=memória corrigir e bloquear scanner SIP em startup.sh
- Injectar [res pjsip] contact=memory em feitiçaria.conf antes de iniciar o Asterisco; a infra- estrutura SQLite da feitiçaria-astdb deixa cair silenciosamente ...
Sub-tab content fills full content-area width
Drop the centered max-width constraint (was 920 / 1200 / 680 / 720 depending on tab) on SubTabShell. The page already lives inside SettingsView's content column...
Fix attachment parsing and hasAttachment false positives
Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...
Add download button to classic view attachment section
The classic view (MessageBrowser) had its own attachment list that was missing the download button — only the conversation view was fixed previously. Also align...
Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
Logotipos adequados de layout, estofamento e provedor
Correcções de disposição / espaçamento: - Todas as seis abas (fornecedores, extensões, usuários de telefone, dispositivos, correio de voz, saúde) agora embrulhe...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
Load FROM addresses from accessible mailboxes and aliases
Replaces the broken getFromAddresses() endpoint (which sent 'email' instead of 'address') with getAccessibleMailboxes() + listMemberAliases(), matching the same...
Usar sintaxe DROP ÌNDICE CASCADE compatível com o BarataDB
BarataDB rejeita TABELA ALTER ... DROP CONSTRUINT para restrições UNIQUE com: não implementado: não é possível soltar a restrição UNIQUE "uk org oauth provider...
Soltar o VOIPService spec md do repo
Por convenção de projeto (os arquivos.md não enviam com serviços).
Incluir com.kamo.z.shared.commerce na verificação de repositórios
Últimas propagações de bibliotecas partilhadas com kamo **************************** (donotmodify.dao.services) que tem uma dependência do construtor **********...
Páginas de configuração da plataforma (General / VOIP & SMS / Usuário do Sistema / Avançado)
Quebras Em SettingsView com quatro abas: - Geral: visão geral da plataforma somente leitura — orgs totais, servidor de telefone ativo contagem de instância, co...
Adicionar o botão de download do anexo e dissociar a marca como lida
- Adicionar um botão de ícone de download para cada linha de anexo para que os usuários possam forçar download do arquivo em vez de apenas abrir em uma nova aba...
Trabalho global de sincronização VOIP (intervalo de administração)
VoipGlobalSyncJob marca a cada minuto e, em cada tique, lê o SystemConfiguration singleton para decidir se uma sincronização global é devida: - Se voipSyncEnabl...
Endpoints de configuração do sistema + visão geral da plataforma
Superfície de configuração ampla da plataforma, fechada pelo proprietário de topo existente guard (matches SystemUserConfigController's requireTopLevelOwner pat...
Controladores de recursos por instalação + agregado org + sincronização interna
Por recurso de instalação CRUD (extensões / usuários / dispositivos / correio de voz): - VoipExtensionsController. - VoipUsersController em /api/voip/instances/...
Refactor de provedor multi-instanciamento + FreePBX completo + Flowroute SMS
Mudança de modelo principal: uma org → muitas VoipProviderInstances (foi: uma por org). Cada chamada API de provedor agora é vigiada por instância. Interface P...
Migração de provedores de telefone/SMS multiinstance
Executar após Hibernate ddl-auto:update cria novas tabelas (VOIP PROVIDER INSTANCI, BULK TEXT PROVIDER INSTÂNCIA, TELEFONE EXTENSÃO, TELEFONE END USER, TELEFONE...
Multi-instance telefone / SMS provedor schema fundação
- Renomear VoipProviderConfig → VoipProviderInstance; drop UNIQUE(org id), adicione instância nome, config json, last sync at, last sync error. - Renomear BulkT...
Mover o caminho da máquina do MinIO (rclone FUSE) para o /var/lib/pbx local
MinIO via rclone FUSE não suporta POSIX chmod ou symlink() — ambos requerido pelo sistema de módulos do FreePBX. Mudou todos os FreePBX e MariaDB hostPath volum...
Quebrar fwconsole/amportal via php para a máquina MinIO FUSEPath
/var/lib/asterisco é suportado por MinIO via rclone FUSE que não suporta POSIX chmod, então scripts fwconsole não podem ser tornados executáveis nesse volume. s...
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.