Adicionar e- mailTemplatePreview modal
Abre na antevisão da acção da linha. Renderização da infra-estrutura via templateApi.preview(); resultado exibido em um iframe sandboxed para isolamento de esti...
Apagar o EmailGeneralManager.tsx não utilizado (~560 linhas de código morto)
O componente nunca foi importado. A sua comutação (manuseamento de saltitantes, cancelar a subscrição, rastreamento de entrega, padrão de email) não tinha infra...
Adicionar modeloApi + categoriaApi + variávelContrata módulos do cliente
Embrulha o SP1 /api/email/templates/* e ************************* endpoints com helpers TypeScript digitados. variávelContratos espelhos SP1 TemplateKeys Javado...
Wire EmailTemplateSeedClient into ****************
Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws...
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...
Add EmailTemplateController REST endpoints + DTOs
Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...
Add InternalAuthFilter for service-to-service endpoints
Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handl...
Adicionar o EmailTemplateCategoryService — CRUD para categorias de org-scoped
Nome único por org aplicado na camada de serviço (combina o índice único parcial no DB). Supressão nula categoria id nos modelos afetados antes de remover a lin...
Adicionar EmailTemplateService — CRUD + send + seed + reset-to-default
Orquestrador principal para e-mail transacional. SendToUser resolve o modelo, torna sujeito/corpo, escolhe o domínio primário da organização. domínios, e entreg...
Adicionar NoReplySenderService para 'NoReply@ {domain}' do endereço
Fonte única de verdade para e-mail transacional de endereços. Aceita uma string de domínio, minúscula-normaliza-lo, retorna "NoReply@<domínio>". Os ouvintes dev...
Adicionar Renderador de Modelos para substituição {{var}}
Renderizador de regex sem estado. Faltam vars para substituir o texto vazio e emite um registro WARN com templateKey + orgId para atribuição. Sem fuga de HTML e...
Append Z to dateCommitted so JS parses it as UTC
LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...
Add EmailTemplateSeedRunner for SYSTEM + per-org seeding
Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills ...
Convert PT midnight cutoff to UTC for today-count query
Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.
Add partial unique indexes + CHECK constraints for email_templates
Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern aft...
Versão de biblioteca compartilhada com kamo Bump para 1.2.0 para adições SP1
Adiciona EmailTemplate, EmailTemplateCategory, TemplateStatus, TemplateKeys, CanonicalTemplate, CanonicalTemplateLoader e recursos HTML canônicos.
Adicionar CanonicalTemplateLoader + CanonicalTemplate record
Lê os três modelos exigidos (WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO) de recursos de caminhos de classe em **************************** Consumido por KamoIn...
Adicionar HTML canônico + JSON para WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO
Conteúdo da fonte de verdade para linhas do SISTEMA. Carregado no KamoInitializerService inicialização por CanonicalTemplateLoader e upsertado em e-mail templat...
Renomear caixa de correioId→id e provedorStatus→status in mailbox list response
Alinhar nomes de campos com expectativas de frontend para listas de correio de membros.
Adicionar E-mailTemplate entity + repositório
Armazena uma linha do SISTEMA por modelo chave (org id NULL, is system TRUE) mais um clone por org por template key. Soft-reference org id/category id. DB... ti...
Adicionar EmailTemplateCategory entity + repositório
Categorias org-scoped para modelos de email. Soft BIGINT org id (sem FK) corresponde aos padrões existentes. Caso-insensível nome unicidade per-org é aplicado a...
Adicionar TemplateStatus enum + TemplateKeys constantes para modelos transacionais
Declara os estados de ciclo de vida requeridos/aDUANEIRO/ARCHIVED e os três chaves de modelo exigidas (WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO). Contratos v...
Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs
The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAg...
Tighten KamoCRMAgeReqUpdateRunner per review
- Restore Javadoc paragraph explaining @Order(10) rationale. - Test now references the UPDATE_SQL constant directly instead of duplicating the SQL string, so ...
Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — start...
Substituir todas as instâncias de logotipo de filtros CSS por SVG branco
Navegação, SubNavegação, Rodapé, SubFooter e Pré-carregador todos usados o mesmo padrão de inversão de brilho-0 do filtro quebrado. Substituido por logo-full-wh...
Usar o logotipo SVG branco no rodapé em vez do filtro CSS
A mesma correção do nav — filtro CSS no img dentro do filtro de fundo não é confiável no Safari iOS.
Guardar o esquema de cores com!importante contra o tema CSS sobreposição
DynamicMetaLoader pode injetar CSS remoto que ganha a cascata. Adicionando Importante garante o esquema de cores: o escuro nunca pode ser substituído por folhas...
Excluir links de rodapé e navegação do TouchOtimized min-height reforcement
TouchOtimizado foi definir minHeight:44px em todos os elementos <a> mais curtos que 44px, incluindo ligações de navegação de rodapé (~20px de altura). Isto ocor...
Usar o logotipo SVG branco pré- renderizado em vez do filtro CSS
O filtro CSS no img dentro do filtro de fundo não é confiável no Safari iOS. Gerar logo-full-white.svg com todos os preenchimentos definidos para #ffffff e carr...
Bloquear variante de modo escuro Tailwind para consulta de mídia baseada em classe, nunca OS
Tailwind v4 padrão escuro: utilitários para responder a prefer-color-scheme (preferência OS). A sobreposição @variant garante a escuridão: as classes somente at...
Use o estilo de filtro em linha no link de logotipo para renderização confiável em branco
As classes de filtro tailwind em elementos img são inconsistentes em navegadores móveis. Estilo em linha no elemento âncora garante brilho(0) invert(1) aplica-s...
Forçar o esquema de cores escuras para que o navegador nunca aplique a renderização de modo claro
Mudando de 'somente luz' para 'escuro' em globals.css, gerarViewport e o Estilo de elemento html — isto impede o navegador de renderizar SVGs e UI nativa em mod...
Impedir o logotipo de renderizar atrás da linha de navegação no celular
O embrulho div com filtro CSS criou um novo contexto de empilhamento que entrou em conflito com o filtro de fundo do cabeçalho em navegadores móveis, fazendo o ...
Resolver barra de rolagem e recorte móvel no JumpToBar e PreviewBanner
- Adicionar transbordamentoY: oculto para JumpToBar recipiente interno para evitar barra de rolagem vertical - Permitir PreviewBanner conteúdo para envolver no ...
Substituir o espaço-y-4 com o intervalo flex em linha nas listas de links de rodapé
Tailwind space-y-4 usa :where() (especificidade 0) que corre com CSS carregamento em atualização dura causando espaçamento vertical inconsistente. Em linha esti...
Adicionar Powered by KamoCRM backlink para / welcome landing page
A landing page real meet.{domain} é bem-vinda/índice. html — uma estática Página HTML servida diretamente pelo nginx que lida com o fluxo pré-auth (capture exib...
Faça PoweredByKamo combinar kamo-login — branco na cor da marca
A página de boas-vindas do KamoMeet já tinha o backlink PoweredByKamo ligado, mas o seu estilo ainda era o tratamento original de baixa opacidade correnteColor ...
Remove geo debug logging (root cause was Traefik externalTrafficPolicy)
Set Traefik externalTrafficPolicy=Local to preserve client IP
With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...
Adicionar a requisição em faltaIntegração i18n chave em todos os locais
O botão "Enviar um pedido" sob o botão "Precisa de uma integração personalizada?" CTA Em /integrações estava caindo de volta para a chave crua *****************...
Logótipos de integração + metadados precisos /integrações
Páginas de integração e hub agora exibem logotipos de fornecedores (reusando o existente ******************* de activos que a homepage TechStackBanner já usa). ...
Expandir /integrações para todos os fornecedores listados na página inicial
Alinha a página /integrações com as integrações reais expostas por a página inicial (TechStackBanner). Adiciona 28 novas páginas de integração correspondentes o...
Adicionar Home Brokers de hipoteca página indústria
Nova página de solução da indústria em /solutions/mortgage-brokers para hipoteca corretores e cedentes de empréstimos. Segue o enquadramento da plataforma hones...
Marketing honesto — alinhar páginas com capacidades reais da plataforma
Avaliação completa de páginas de marketing contra os recursos de produto real KamoCRM. Reclamações fabricadas removidas sobre características não construídas ho...
Adicione 92 páginas de SEO — indústrias, integrações, glossário
Implementa Tier 1 do plano de expansão de conteúdo SEO: três novos conteúdos subsistemas com um total de 92 novas URLs rastreáveis mais 3 páginas hub. 1. /Solu...
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.