Adicionar DEFAULT false à definição da coluna verificada por e- mail
O esquema migrador do Hibernate gera TABELA ALTER sem um padrão, falha em tabelas com linhas existentes. colunaDefinição força-o a incluir DEFAULT false para qu...
Corrigir a limpeza do ouvinte Capcha e reiniciar o estado verificado na saída do passo
Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
Bump kamo-shared-library to 1.4.0
Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...
Aplicar correções de qualidade de correção e implementação do SP6
C1: use NEXT PUBLIC H*** SITE KEY env var em vez de placeholder codificado C2: alterar RegisterResponse.userId e todos os parâmetros de API de número para strin...
Address 4 code-review findings in registration and login paths
- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...
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 ...
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.
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.
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...
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 *****************...
Use pg Pool options instead of connection string for geo DB
CockroachDB rejects insecure connections and node-pg can't verify self-signed certs via connection string alone. Parse the URL into Pool options and pass ssl:{r...
Alvo do backlink para www.kamocrm.com (host canônico)
O componente PoweredByKamo enviado apontando para o apex https://kamocrm.com/ mas o hospedeiro canônico kamo-marketing é https://www.kamocrm.com/. Atualizando t...
*** session check, loading spinner, rebrand analytics to Kamo Analytics
Use redis get instead of exists for more reliable *** validation on logout. Replace "Authenticating..." text with an animated spinner on the OTK auth page. Rena...
Copy GeoLite2 database to production image for country detection
The /geo/ directory containing GeoLite2-City.mmdb was built during the builder stage but never copied to the runner stage, so all country/region lookups returne...
Move CSP to proxy.ts instead of middleware.ts to avoid build conflict
Next.js 16 doesn't allow both middleware.ts and proxy.ts. The Docker build copies proxy.ts as the middleware, so add CSP frame-ancestors header there instead. T...
Clean up legacy analytics deployment on each CI run
Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.
Use Next.js middleware for CSP so frame-ancestors works at runtime
The standalone build bakes next.config.ts headers at build time, so ALLOWED_FRAME_URLS was always empty. Move CSP to a Next.js middleware that reads the env var...
Strip X-Frame-Options header in iframe-compatible middleware
Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.
Read ALLOWED_FRAME_URLS at runtime so CSP frame-ancestors works in standalone mode
The env var was being read at module scope during build, baking an empty value into the standalone server. Move CSP and all header construction into functions c...
Ícone de análise é somente ícone e posicionado por último no conjunto de ícones
Reset document.title in rebrand() when React overwrites it
React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...
Replace "analytics" text nodes with "Kamo Analytics" instead of clearing
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.