Changelog Zypa

Novidades & Atualizações

Acompanhe o histórico de melhorias contínuas, novas funcionalidades e estabilizações lançadas para impulsionar a sua operação.

v1.65.0
27 de setembro de 2026
Mais recente
🚀 Novas Funcionalidades & UX
  • Melhorias no fluxo de importação de planilha de remessas (Issue #1077 / PR #1078):
    • Estruturação do modal de importação (ImportModal) em 2 passos didáticos e sequenciais: Passo 1 com orientações claras e botões destacados para download do modelo (.xlsx e .csv), e Passo 2 com dropzone intuitiva e seleção manual de arquivo.
    • Alerta visual didático no Passo 1 orientando o usuário a não alterar a 1ª linha do modelo e preencher apenas da linha 2 para baixo.
    • Diagnóstico inteligente e humanizado no Preview para o caso de envio de planilhas com cabeçalhos alterados ou colunas incompatíveis.
    • Validação antecipada no frontend de formatos de arquivo aceitos (.csv, .xls, .xlsx) com feedback visual via toast informativo de erro antes da submissão.
    • Alinhamento da documentação de domínio (docs/domains/remessas.md) e testes unitários cobrindo todos os fluxos e cenários de validação.
v1.64.1
27 de setembro de 2026
🐛 Bug Fixes
  • fix(web): correção de permissão de câmera no android (hotfix) (#1076).
v1.64.0
26 de setembro de 2026
🎨 UX & Layout
  • UX: Correção do campo Complemento para iniciar com letra maiúscula (#1072).
  • UX / Layout: Ajuste na responsividade e quebra de linha do modal "Adicionar Contato" no cadastro de Parceiros (#1073).
  • UX / Copy: Ajuste semântico e tooltip do texto de exigência de compra mínima no Tipo de Devolução (#1074).
♻️ Refatoração & Limpeza de Código
  • Refactor: Remoção de dead code de catálogos no hook use-config em favor da árvore canônica (#1071).
v1.63.0
26 de setembro de 2026
🚀 Novas Funcionalidades & UX
  • Padronização de cabeçalhos e navegação de retorno no módulo Financeiro (#1067, #1068 / PR #1069): Descrição clara do extrato de caixa, agrupamento visual do título 'Entradas e Saídas' e subtítulo 'Extrato do Caixa' na tela de extrato, e botão de retorno canônico inline na tela de contas financeiras.
♻️ Refatoração & Contrato de API (Regra 19)
  • Padronização canônica de envelope REST `{ data }` e status HTTP 201 Created (#1066 / PR #1070): Padronização canônica de envelope REST { data: ... } e status HTTP de criação (201 Created) nos módulos de Classificação, Configuração de Negócio e Contatos de Parceiros, com alinhamento de hooks frontend e testes.
v1.62.0
26 de setembro de 2026
🚀 Novas Funcionalidades
  • Extrato detalhado por conta financeira com modal interativo e impressão (Issue #1057 / PR #1064): Extrato detalhado por conta financeira com modal interativo, métricas de saldo inicial/entradas/saídas/saldo final, saldo resultante por lançamento e visualização otimizada para impressão (print:hidden, sem scroll).
  • Redesenho do extrato de caixa e simplificação da linguagem visual no financeiro (Issues #1052, #1056 / PR #1062): Redesenho do extrato de caixa e simplificação da linguagem visual no módulo financeiro.
🐛 Correções
  • Estorno automático em cancelamento de vendas e mascaramento de documento (Issues #1053, #1054 / PR #1063): Estorno automático em conta financeira no cancelamento de vendas e mascaramento de documento do cliente (CPF/CNPJ) em comprovantes de venda impressos.
  • Padronização de envelope canônico no POST /remessas e alinhamento de testes E2E (Issue #1050 / PR #1055): Padronização de envelope canônico de resposta { data: remessa } no endpoint POST /remessas e alinhamento de testes E2E.
♻️ Refatoração & Contrato de API
  • Padronização canônica de envelope REST `{ data }` (Issues #1058, #1059, #1060, #1061 / PR #1065): Padronização canônica de envelope REST { data: ... } em todas as rotas e hooks dos domínios de Remessas (#1058), Vendas (#1059), Revenda (#1060) e Financeiro (#1061), com eliminação completa de helpers permissivos no frontend.
v1.61.0
25 de setembro de 2026
🚀 Novas Funcionalidades
  • Finalização de compra à vista com meio de pagamento e conta de origem (Issue #1045 / PR #1049): Ao finalizar uma compra à vista agora é possível escolher o meio de pagamento (dinheiro, PIX, cartão etc.) e a conta de origem do valor, deixando o registro financeiro mais fiel ao que realmente aconteceu no caixa.
🐛 Correções
  • Bloqueio de conta bancária duplicada (Issue #1041 / PR #1047): O sistema passa a impedir o cadastro de contas bancárias repetidas, com validação no serviço e restrição no banco de dados, evitando duplicidades que confundiam o controle financeiro.
  • Máscara de CPF/CNPJ ao cadastrar conta de banco (Issue #1040 / PR #1048): O campo de documento na criação de conta bancária agora aplica a máscara de CPF/CNPJ corretamente, facilitando o preenchimento e reduzindo erros de digitação.
  • Campo Qtd ao apagar com backspace (Issue #1043 / PR #1048): Ao apagar o conteúdo do campo de quantidade, ele fica realmente vazio em vez de manter um zero à esquerda, tornando a digitação mais natural.
✨ Melhorias
  • Primeira letra maiúscula no campo Complemento (Issue #1042 / PR #1048): No cadastro de parceiros, o campo Complemento passa a iniciar automaticamente com letra maiúscula, deixando os endereços mais padronizados.
  • Cifrão mais nítido no campo de valores (Issue #1044 / PR #1048): O símbolo de real (R$) exibido nos campos de valor ficou mais nítido e legível, melhorando a leitura em telas menores.
  • Botão voltar na tela Caixa do Dia (Issue #1046 / PR #1048): Adicionado um botão de voltar na tela do Caixa do Dia, facilitando a navegação de retorno sem depender do gesto do navegador.
v1.60.0
24 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Observabilidade & Alertas Resilientes (Issue #1030 / PR #1036, PR #1038):
    • Integração resiliente de alertas de erro 500 com zypa-ops e WhatsApp.
    • Implementação de throttling e debounce anti-flood em alertas de erros internos.
  • Infraestrutura & Runners Self-Hosted (Issue #1031 / PR #1037):
    • Configuração de runners self-hosted no Mac e Galaxy S22 Ultra como fallback 24/7.
    • Otimizações de variáveis de memória CoreCLR .NET para o runner no Termux/PRoot.
  • Topologia de Pipeline Autônomo SDD & Governança (Issue #1032 / PR #1039):
    • Topologia de pipeline autônomo orientado a especificações (SDD) em 2 momentos complementares.
    • Integração com webhook listener, transições de labels e notificações de aprovação no WhatsApp.
v1.59.1
24 de setembro de 2026
🐛 Correções & Estabilidade
  • Fallback de Preço de Repasse em Montagem e Acerto de Malas (Issue #1033 / PR #1034):
    • Aplicação da regra canônica de resolução de preço de repasse (precoRepasse ?? precoVendaPraticado ?? precoCustoUnit ?? null) na inclusão (picking) e movimentação de unidades entre rascunhos de revenda.
    • Preenchimento preventivo no momento da abertura de mala e resiliência tripla no cálculo do demonstrativo e finalização de acertos, prevenindo valores de repasse zerados (R$ 0,00) e inconsistência em travas financeiras de compra mínima.
  • Monitoramento e Infraestrutura:
    • Atualização da documentação de monitoramento e status page com Uptime Kuma e zypa-ops.
v1.59.0
23 de setembro de 2026

- **Added:** Suporte a comissão fixa (`fixo_peca`) no cadastro de fornecedores e pré-preenchimento em entradas; tabela de regras de comissão (faixas/fixo) no Romaneio de Repasse (PDF e Web). - **Fixed:** Correção da ordem das assinaturas em todos os PDFs (linha antes do nome); exibição de CPF/CNPJ parcialmente oculto no cupom térmico de venda. - **Issues:** #1024, #1025, #1026.

v1.58.0
22 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Simplificação da Linguagem das Telas do Caixa (Issue #1019 / PR #1021): Substituição da terminologia contábil por termos intuitivos para MEIs em toda a Frente de Caixa — Turno → Caixa, Aporte/Suprimento → Adicionar Dinheiro, Sangria → Retirar Dinheiro, Fundo Inicial → Troco inicial e "Frente de Caixa Físico" → "Caixa do Dia". Alinhamento de títulos, modais, histórico, extrato térmico, metadados da página e aria-labels de acessibilidade.
  • Faixas de Comissão Progressivas para Revenda e Parceiros (Issue #1009 / PR #1018): Suporte a comissão por faixas progressivas (consignação por comissão), com novo campo comissaoFaixas em Parceiro e nos itens, ampliando os modelos de precificação.
  • Descaracterização de CPF em Documentos (Issue #1008 / PR #1016): Ocultação parcial do CPF em PDFs da venda e exibição apenas dos dígitos finais do CPF no cupom térmico, reforçando a proteção de dados pessoais.
  • Terminologia "Repasses" no Dashboard (Issue #1004 / PR #1010): Atualização do termo "Mala" para "Repasses" na tela inicial, alinhando a linguagem ao vocabulário do negócio.
  • Rótulos de SKUs e Limpeza do Rascunho de Entrada (Issue #1007 / PR #1015): Atualização do rótulo de "itens" para "SKUs" e ocultação de aba única redundante no rascunho de entrada.
  • Textos do Modal "Personalizar Painel" (Issue #1005 / PR #1012): Revisão dos textos e rótulos do modal de personalização da tela inicial.
🐛 Correções & Estabilidade
  • Auto-seleção de Conta Bancária para Cartão (Issue #1017 / PR #1020): Seleção automática da conta bancária padrão nos pagamentos por cartão de débito e crédito na tela de vendas.
  • Quebra de Linha na Mensagem de Fornecedor Ausente (Issue #1006 / PR #1013): Correção da formatação da mensagem de fornecedor ausente no modal de entrada.
📦 Infraestrutura, Testes & Dependências
  • Atualização dos Domínios Oficiais e Integração Resend (Issue #974 / PR #1001): Migração para os domínios oficiais app.zypa.com.br e api.zypa.com.br e integração de envio de email via Resend.
  • Hardening de Testes (PR #1022, #1023): Isolamento de SMTP_FROM no teste do from padrão do serviço de email (determinismo independente do .env local) e alinhamento da assertion do extrato térmico de caixa com o header "FECHAMENTO DO CAIXA".
  • Git Status Limpo em Build (Issue #1002 / PR #1003): Ignora artefatos dinâmicos de build (sw.js, version.json) no controle de versão.
v1.57.6
21 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Geração de Comprovante via Canvas 2D Direto dos Dados (Issue #999 / PR #1000, Issue #986):
    • Renderização Determinística em Canvas 2D: Implementação do renderizador nativo em Canvas 2D (canvas-comprovante.ts) para comprovantes de venda, acerto de revendedora, romaneio de repasse, acerto de fornecedor e romaneio de devolução, gerando imagens PNG em alta resolução (escala 2x) diretamente a partir das estruturas de dados.
    • Eliminação de Dependência de DOM/CSS: Substituição de capturas assíncronas via DOM (html-to-image) por desenho programático em Canvas com suporte a logotipos e texto estruturado, garantindo robustez, ausência de falhas por fontes externas ou temas escuros, e compatibilidade total com Web Share API e clipboard no desktop/mobile.
📦 Infraestrutura & Dependências
  • Migração Coordenada do Vitest para 5.x (Issue #997 / PR #998):
    • Atualização do ecossistema Vitest para v5.x no monorepo (api e web), mantendo compatibilidade de isolamento, tipagem e estabilidade na suíte de testes unitários e de integração.
  • Atualizações de Dependências:
    • web: Bump @playwright/test para 1.63.0 (#988), lucide-react para 1.47.0 (#991).
    • api: Bump @opentelemetry/sdk-node para 0.222.0 (#996), pdfkit para 0.20.2 (#994), zod para 4.6.5 (#990), tsx para 4.23.13 (#989).
v1.57.5
20 de setembro de 2026
🐛 Correções & Estabilidade
  • Renderização e Captura Sólida de Imagem no Compartilhamento (Issue #984 / PR #985):
    • Desativação de Embutimento de Fontes Web (`skipFonts: true`, `fontEmbedCSS: ''`): Previne timeouts e falhas na rasterização de glifos de texto em containers offscreen durante a conversão do comprovante térmico para PNG via html-to-image, assegurando que textos, linhas e totais sejam desenhados de forma fidedigna.
v1.57.4
20 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Compartilhamento de Recibos e Romaneios como Imagem (Issue #982 / PR #983):
    • Fluxo Unificado em Revenda e Remessas: Inclusão do botão "Compartilhar" com geração de imagem PNG em alta definição (Web Share API nativo em mobile e cópia/download em desktop) para Recibos de Acerto com Revendedora, Romaneios de Repasse, Acertos de Remessa com Fornecedor e Romaneios de Devolução.
    • Limpeza de Ações Redundantes: Remoção dos botões soltos de WhatsApp com texto fixo na listagem de Revenda e no painel de Acerto, centralizando a experiência no documento visual canônico.
🐛 Correções & Estabilidade
  • Atualização Automática e Detecção de Novas Versões no PWA (Issue #978 / PR #979):
    • Service Worker Reativo e Skip Waiting: Configuração do Service Worker para ativação imediata com skipWaiting() e clients.claim(), permitindo atualização suave sem travamentos em cache antigo.
    • Checagem Ativa de Versão: Polling inteligente e prompt de atualização no frontend para notificar e sincronizar usuários assim que um novo deploy estiver disponível.
  • Renderização e Captura Sólida de Imagem no Compartilhar (Issue #980 / PR #981):
    • Container Offscreen Isolado e Estilo Confiável: Renderização de comprovantes com fundo branco sólido (#ffffff), tipografia preta (#000000) e dimensões fixas no shareComprovanteImage, eliminando fundos transparentes e quebras visuais em temas escuros e dispositivos móveis.
v1.57.3
20 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Acesso Direto ao Compartilhamento de Comprovante de Venda e PDV Sucesso (Issue #976 / PR #977):
    • Botão Compartilhar em Destaque no PDV: Na tela de finalização de venda (PdvSucesso), o botão principal "Compartilhar" gera instantaneamente o comprovante térmico em PNG e dispara o compartilhamento nativo (Web Share API) ou download/cópia com orientação para WhatsApp.
    • Acesso Rápido nos Detalhes da Venda (`VendaDetailSheet`): Inclusão do botão "Compartilhar" nas ações do topo, antes de "Cupom Térmico", "PDF" e "E-mail".
    • Diálogo de Cupom Térmico Focado em Impressão: Remoção do botão redundante de compartilhamento de imagem de dentro do modal de Cupom Térmico (ComprovanteVendaDialog), mantendo o diálogo exclusivamente focado em visualização e impressão ("Imprimir" e "Fechar").
v1.57.2
20 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Ação de Compra Mínima Integrada ao Acerto com Fornecedor (Issue #962 / PR #973):
    • Fluxo Unificado de Fechamento: Removido o botão avulso "Compra Mínimo" da barra de ações gerais da remessa aberta, integrando o acionamento e modal de Compra Mínima diretamente no formulário de fechamento e acerto com fornecedor (FechamentoForm), durante a apuração de devoluções.
    • Padronização Terminológica: Ajustada a nomenclatura e exibição para o termo oficial "Compra Mínima".
  • Romaneio de Repasse: Condições Comerciais, Colunas e Termo Oficial (Issue #971 / PR #973):
    • Condições Comerciais no Cabeçalho: Exibição clara e contextual de Condição comercial: Consignação — Margem Livre (quando aplicável), Base do acerto: Valor de Repasse dos itens e Preço de venda ao cliente: Definido pelo(a) revendedor(a).
    • Padronização de Colunas e Totais: Substituição dos rótulos de coluna para REPASSE UNIT. e TOTAL DO REPASSE (com quebra de linha otimizada).
    • Termo Canônico de Conferência e Responsabilidade: Atualização do texto formal de aceite e responsabilidade do revendedor parceiro.
  • Unificação e Limpeza dos Botões de Ações de Vendas (Issue #972 / PR #973):
    • Detalhes da Venda (`VendaDetailSheet`): Remoção de botões redundantes de compartilhamento direto e WhatsApp, mantendo opções canônicas de Cupom Térmico (com suporte a impressão e exportação PNG nativa), PDF A4, E-mail e Cancelamento de Venda.
    • Tela de Sucesso do PDV (`PdvSucesso`): Simplificação das ações pós-venda, mantendo botões essenciais focados em agilidade de atendimento: "Imprimir Cupom Térmico", "Baixar PDF A4" e "E-mail".
v1.57.1
20 de setembro de 2026
🐛 Correções & Estabilidade
  • Roteamento e Validação de Conta PIX no PDV e Vendas (Issue #968 / PR #970):
    • Roteamento Automático e Validação de Conta: Quando uma venda é realizada com entrada/pagamento em PIX, o sistema credita a movimentação financeira na conta cadastrada como padrão para PIX (padraoPix: true) ou na conta bancária selecionada no PDV, evitando créditos indevidos no Caixa Geral.
    • Bloqueio Amigável de Venda sem Conta PIX: Caso o tenant não possua conta configurada com recebimento PIX e nenhuma conta seja indicada, a venda é rejeitada com validação 422 e mensagem explicativa orientando a configuração de conta financeira.
    • Sincronização Reativa no PDV: O seletor de conta financeira (SeletorContaFinanceira) sincroniza automaticamente a conta bancária padrão ao alternar a forma de pagamento para PIX.
  • Compartilhamento de Comprovante de Venda em Imagem PNG e Web Share API (Issue #969 / PR #970):
    • Compartilhamento Nativo via Web Share API: Envio direto do comprovante térmico de venda como imagem PNG em alta definição no WhatsApp e aplicativos nativos em dispositivos compatíveis (Mobile / Safari).
    • Fallback Inteligente no Desktop: Em navegadores desktop sem suporte a Web Share API, o sistema faz o download automático da imagem PNG e copia o arquivo para a área de transferência, exibindo feedback visual para colar diretamente no WhatsApp Web.
    • Acesso Integrado nas Telas de Vendas: Botão de compartilhamento de imagem disponibilizado na tela de sucesso do PDV (PdvSucesso), no painel lateral de detalhes da venda (VendaDetailSheet) e no diálogo de comprovante (ComprovanteVendaDialog).
v1.57.0
20 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Contador Sequencial de Entradas e Romaneio Detalhado (Issue #960 / PR #967):
    • Identificador Sequencial Automático: Implementação do campo codigoEntrada (codigo_entrada int?) no model Remessa com migration SQL versionada e geração automática sequencial através do serviço de contadores (proximoNumero(tenantId, 'entrada')), identificando formalmente as entradas como ENTRADA #X.
    • Romaneio de Entrada com Colunas e Totais Completos: Exibição do identificador sequencial ENTRADA #X no cabeçalho de detalhe e no diálogo de impressão do Romaneio de Entrada (RomaneioEntradaDialog), com tabela detalhada (SKU / REF, DESCRIÇÃO DO ITEM, QTD, PREÇO UNIT. FORNECEDOR, PREÇO UNIT. DE VENDA, TOTAL FORNECEDOR, TOTAL DE VENDA) e 4 totais consolidados no rodapé (Total de SKUs, Total de Peças, Total pelo Preço do Fornecedor e Total pelo Preço de Venda).
  • Clareza de Textos, Terminologias e Acordos Comerciais (Issues #958, #961, #964 / PR #967):
    • Regra de Preço do Fornecedor (#958): Nomenclatura atualizada para *"Sobre o Preço Definido pelo Fornecedor (Padrão)"* com texto explicativo e contextual no cadastro de parceiros.
    • Seleção de Acordos Comerciais na Entrada (#961): Apresentação intuitiva dos tipos de acordo (Consignada e Compra Direta, Margem Livre e Comissão Fixa) e toggle contextual *"Usar outro acordo nesta entrada?"* com visual limpo.
    • Ajustes de Nomenclatura e Observação (#964): Rótulos canônicos Data da Entrada * e Data do Acerto com subtítulo explicativo e placeholder amigável no campo de observações ("Adicione uma observação sobre esta entrada...").
🐛 Correções & Estabilidade
  • Arredondamento Monetário no Multiplicador de Precificação (Issue #965 / PR #967):
    • Arredondamento Monetário Exato em Reais: Correção do cálculo do multiplicador de precificação no modal de precificação em lote e no serviço backend remessa-itens.service.ts com arredondamento explícito para 2 casas decimais em centavos (Math.round(precoCusto * multiplicador * 100) / 100), evitando dízimas periódicas e inconsistências de centavos no preço de venda sugerido.
  • Finalização de Entrada com Devolução Total / Saldo Zero (Issue #966 / PR #967):
    • Suporte a Devolução 100% (Saldo R$ 0,00): Atualização do schema de validação (finalizarRemessaSchema) para aceitar valorTotal: z.number().min(0). No formulário de finalização (finalizacao-form.tsx), quando o saldo do fornecedor for zero ou negativo (devolução integral), os campos de pagamento são ocultados/desabilitados, o botão "Confirmar Finalização" é habilitado diretamente e um aviso informativo ("Entrada com devolução total (100%). Nenhum valor a pagar ao fornecedor.") é apresentado, concluindo o acerto sem gerar contas a pagar nem saídas de caixa desnecessárias.
  • Alinhamento Vertical de Inputs de Data no iOS / Safari (Issue #963 / PR #967):
    • Padronização Visual em Dispositivos Móveis: Injeção de resets CSS estritos para pseudo-elementos WebKit (::-webkit-date-and-time-value) e leading-normal no componente Input (input.tsx e globals.css), eliminando o truncamento e desnível vertical de textos em campos de data nativos no Safari iOS.
v1.56.2
20 de setembro de 2026
🐛 Correções & Estabilidade
  • Ajuste de Impressão A4 e Prevenção de Sobreposição em Romaneios (PR #959):
    • CSS Reset A4 Estrito para Impressão: Injeção de regras estritas no helper de impressão printA4Document (print-document-helper.ts) com min-width: 0, espaçamento otimizado (padding: 4px 3px) e tipografia ajustada (11px), eliminando corte de margem direita e overflow horizontal ao imprimir ou salvar em PDF no desktop e dispositivos móveis.
    • Rebalanceamento de Colunas em Tabelas A4: Readequação das larguras percentuais de colunas nos diálogos de Romaneio de Entrada (RomaneioEntradaDialog), Devolução (RomaneioDevolucaoDialog) e Repasse (RomaneioRepasseDialog), prevenindo quebra e sobreposição de linhas em subtotais de valores extensos (5 a 6 dígitos).
v1.56.1
20 de setembro de 2026
🐛 Correções & Estabilidade
  • Prevenção de Sobreposição de Layouts para Valores e Quantidades Extensas (Issue #955 / PR #956):
    • Formatação de Quantidades e Tipografia Numérica: Nova função utilitária formatQuantity com suporte a padrão pt-BR, alinhamento tabular-nums e suporte no componente InlineQuantidadeStepper para visualização e edição de quantidades de até 6 dígitos.
    • Romaneios e Recibos de Acerto: Ajuste de larguras balanceadas (table-fixed), quebra controlada de linha (break-words whitespace-normal leading-tight) em nomes de produtos e expansão responsiva de totalizadores (w-full sm:w-96) em RomaneioEntradaDialog, RomaneioDevolucaoDialog, RomaneioRepasseDialog e ReciboAcertoRemessaDialog.
    • PDV & Financeiro: Otimização dos containers de subtotal e carrinho (carrinho.tsx) com layout fluido para telas menores e refinamento responsivo nos cards de Posição Financeira (posicao-financeira-card.tsx) com tratamento para valores expressivos de até R$ 999.999,99+.
  • Invalidação de Cache no Onboarding de Contas Financeiras (Issue #954 / PR #957):
    • Sincronização de Progresso de Setup: Invalidação automática da chave de cache dashboardKeys.onboardingProgress() no React Query após mutações de criação, atualização e ajuste de saldo de contas financeiras (use-contas-financeiras.ts), bem como na definição de saldo inicial (use-financeiro.ts), assegurando atualização imediata das etapas concluídas na tela inicial de onboarding.
v1.56.0
20 de setembro de 2026
🚀 Novas Funcionalidades & Melhorias
  • Financeiro & Gestão de Caixa (Issue #733 / PR #953):
    • Aporte e Retirada Pessoal no Extrato de Caixa: Implementação dos fluxos de *"Coloquei dinheiro meu"* (Aporte Pessoal / Suprimento) e *"Tirei dinheiro pra mim"* (Retirada Pessoal / Sangria) no Extrato de Caixa e gestão de Contas Financeiras, permitindo a lojistas e sócios movimentar recursos próprios com rastreabilidade total.
    • Neutralidade Contábil Absoluta no DRE: Garantia estrita de que movimentações de cunho pessoal impactam exclusivamente o saldo real e extrato das contas financeiras selecionadas, mantendo total neutralidade contábil sobre receitas, despesas operacionais e cálculo de lucro líquido no DRE e Relatório de Lucratividade.
    • Interface de Ação Rápida & Auditoria: Botões dedicados no cabeçalho do Extrato de Caixa, diálogo modal intuitivo (MovimentacaoPessoalDialog) com pré-visualização de saldo resultante e registro transparente no log de auditoria do sistema.
  • Romaneio de Repasse, Acordo Comercial & Nomenclatura Canônica (Issue #947 / PR #952):
    • Hierarquia Visual no Romaneio de Repasse: Exibição clara e contextual das condições de devolução e regras de compra mínima logo abaixo da modalidade comercial no Romaneio de Repasse (RomaneioRepasseDialog e pdf-romaneio.ts), além de linha de assinatura formal padronizada como *"Revendedor(a) — Recebimento e conferência"*.
    • Padronização Global de Nomenclatura Revendedor(a): Alinhamento semântico completo em todos os módulos da aplicação (/revenda, /parceiros, /financeiro, /radar e /estoque) para os termos canônicos Revendedor(a) (singular) e Revendedores(as) (plural).
  • Recibo de Acerto, Comprovantes & Documentos (Issues #948, #949, #950 / PR #951):
    • Recibo de Acerto e Totalizadores Reestruturados: Unificação dos fluxos de recibo de repasse e acerto, garantindo totalizadores consistentes e precisos com impressão otimizada.
    • Identificação e Conformidade em Comprovantes: Ajustes nos cabeçalhos, numeração clara e higienização de campos nos comprovantes de venda e relatórios impressos.
v1.55.0
20 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Financeiro & Vendas (Pacote 1 - Issues #935, #937, #938 / PR #944):
    • Idempotência em Contas a Pagar e Receber (#935): Mecanismo de chave de idempotência (idempotency_key via header Idempotency-Key ou payload) com controle atômico em Redis e transação com lock defensivo no banco de dados para criação de títulos a pagar e a receber, prevenindo duplicações em cliques repetidos ou instabilidades de conexão.
    • Cupom Térmico com DOCUMENTO NÃO FISCAL (#937): Identificação clara e destacada no cabeçalho e rodapé do cupom térmico impresso (80mm/58mm) com a expressão *"DOCUMENTO NÃO FISCAL"*, garantindo conformidade operacional e transparência em todas as impressões de comprovantes do PDV.
    • Alinhamento Mobile de Vendas e Checkout (#938): Otimização e refinamento visual para telas móveis na listagem de vendas, drawer de carrinho e modal de finalização de venda, eliminando quebras de layout, overflows horizontais e melhorando a usabilidade em smartphones.
  • Romaneios & Documentos Operacionais (Pacote 2 - Issues #941, #942 / PR #945):
    • Romaneio de Repasse com Total de SKUs e Cargos nas Assinaturas (#941): Exibição do contador consolidado de total de SKUs (itens distintos) junto ao total de peças no Romaneio de Repasse, além de linhas de assinatura com cargos pré-definidos ("Responsável pelo Envio" e "Revendedora / Destinatária").
    • Romaneio de Entrada como Conferência Interna (#942): Ajuste do Romaneio de Entrada de fornecedor para atuar como conferência interna de estoque, com título "Conferência da Entrada", remoção de termos de responsabilidade e eliminação de campos manuais de assinatura desnecessários para essa etapa.
  • Repasse & Tela de Acerto (Pacote 3 - Issues #940, #943 / PR #946):
    • Acordo Comercial Automático e Switch 'Alterar Acordo?' no Repasse (#940): Carregamento automático das condições comerciais cadastradas no parceiro ao criar repasse/rascunho, com switch 'Alterar acordo?' para edição pontual de regras de comissão e compra mínima apenas quando necessário.
    • Tela de Acerto Redesenhada com Métricas e Detalhamento Completo (#943): Exibição do nome completo da revendedora no cabeçalho, métricas consolidadas de desempenho, cards de resumo financeiro com cálculo de comissão/líquido e tabela de itens detalhados com status e valores unitários.
v1.54.0
19 de setembro de 2026
🛡️ Infraestrutura & Confiabilidade
  • Deep Healthcheck & Graceful Shutdown na API Fastify (Issue #924 / PR #939):
    • Deep Healthcheck com Métricas de Latência (`/health`): Verificação ativa e concorrente da integridade e conectividade com PostgreSQL (SELECT 1) e Redis (PING), retornando payload detalhado com status de cada dependência (up / down), latência individual em milissegundos (latencyMs), timestamp ISO e tempo de atividade (uptimeSeconds). Retorna HTTP 200 quando todos os serviços estão saudáveis e HTTP 503 Service Unavailable em caso de degradação.
    • Probes Especializados de Liveness & Readiness (`/health/live` e `/health/ready`): Endpoints canônicos padronizados para orquestradores de contêineres e balanceadores. /health/live verifica se o processo Fastify está ativo; /health/ready valida prontidão para tráfego checando PostgreSQL e Redis.
    • Graceful Shutdown Estruturado em 5 Estágios: Interrupção segura de processos com captura de sinais POSIX (SIGTERM, SIGINT), executando em sequência: (1) encerramento do recebimento de novas requisições HTTP (app.close()), (2) drenagem e finalização de workers/filas em background, (3) desconexão do cliente Redis, (4) desconexão do pool de conexões Prisma/PostgreSQL, e (5) encerramento do processo com timer defensivo de 10s para forçar o encerramento em caso de jobs travados.
    • Isenção de Rate Limiting nos Endpoints de Saúde: Configuração explícita de skip no plugin de rate limiting para todos os endpoints /health*, prevenindo falso positivo de sobrecarga (HTTP 429) por ferramentas de monitoramento contínuo.
v1.53.0
19 de setembro de 2026
🚀 Novas Funcionalidades
  • Página Pública de Novidades & Changelog (Issue #922 / PR #923):
    • Página Pública `/novidades`: Rota pública institucional e informativa exibindo o histórico de versões e melhorias do Zypa em ordem cronológica reversa, com badges de versão, data por extenso em pt-BR, destaque para a release mais recente e categorização temática (Novidades, Melhorias, Correções, Segurança, etc.).
    • Parser Semântico de Changelog: Módulo puro (changelog-parser.ts) e script de geração estática em build (generate-changelog.mjs) que converte o CHANGELOG.md em formato estruturado (changelog.json), com fallback resiliente e testes unitários dedicados.
    • Atalho no Menu do Usuário: Inclusão da opção *"Novidades & Atualizações"* no menu de perfil do usuário (user-menu.tsx), com ícone Sparkles, permitindo acesso direto às novidades do sistema a partir de qualquer página autenticada.
    • Cabeçalho Contextual: Componente responsivo (NovidadesHeader) que adapta os botões de navegação conforme o status de autenticação (redirecionando para /dashboard para usuários logados ou /login para visitantes).
v1.52.0
19 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Financeiro Frontend (Pacote A - Issues #910, #914 / PR #917):
    • DRE Waterfall (#910): Gráfico em cascata de DRE estruturado em 8 etapas canônicas (Faturamento Bruto, Descontos Concedidos, Receita Líquida, CMV, Margem Bruta, Comissões, Despesas Operacionais e Lucro Líquido), com tratamento robusto de fallbacks, tooltips customizados e empty state defensivo para períodos sem movimentações.
    • Modais com React Hook Form + Zod (#914): Refatoração dos modais de Conta Financeira e Ajuste de Saldo com schemas Zod dedicados, validações condicionais avançadas (chaves Pix por formato e justificativa obrigatória para motivo "Outros"), acessibilidade ARIA e feedback inline de validação.
  • Financeiro Backend & Arquitetura (Pacote B - Issues #911, #912, #913, #915, #916 / PR #918):
    • Isolamento Multi-tenant com `getTenantPrisma` (#912): Unificação estrita de todos os 12 services financeiros sob getTenantPrisma(this.tenantId).
    • Padronização de Envelopes REST `{ data: ... }` (#911): Envelopamento canônico de respostas em todas as rotas financeiras e desempacotamento seguro e tipado nos hooks use-financeiro e use-contas-financeiras.
    • Correção de Timezone UTC vs BRT (#913): Ajuste de queries raw e agregações em analytics para respeitar America/Sao_Paulo.
    • Rate Limiting em Relatórios Financeiros (#915): Aplicação de limitadores de requisição dedicados para exportação de PDFs (10 req/min) e planilhas XLSX (15 req/min).
    • Consolidação de Rotas & Higienização (#916): Eliminação de rotas duplicadas de transferência em favor da canônica /financeiro/transferencias, padronização de códigos de status HTTP REST (201/204) e uso sistemático de arredondarMoeda.
  • Parceiros, Categorias & Exportações (Issues #919, #920 / PR #921):
    • Rate Limiting em Exportações de Parceiros e Remessas (#919): Aplicação de rate limiting para exportação de XLSX de parceiros (15 req/min) e PDFs de romaneio e acerto de remessas (10 req/min).
    • Padronização de Envelopes REST em Parceiros e Categorias (#920): Envelopamento { data: ... } em rotas de CRUD e contadores de parceiros e categorias/subcategorias, com inclusão do tipo SingleResponse<T> e adaptação dos hooks use-parceiros e use-config.
  • Governança & Regras Canônicas:
    • Regras 18, 19 e 20: Documentação formal das diretrizes arquiteturais para getTenantPrisma, envelopes REST padronizados e rate limiting em operações pesadas de exportação.
v1.51.0
19 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Financeiro & DRE (Issues #903, #902, #899 / PR #906):
    • DRE com Descontos Concedidos e Margem Real (#903): Discriminação da dedução de descontos concedidos em vendas, exibição de Receita Líquida, Lucro Bruto real e cálculo correto de margem sobre a receita líquida.
    • Previsão de Caixa Consolidada (#902): Projeção de fluxo de caixa baseada no saldo total consolidado de todas as contas ativas do tenant, eliminando o falso alerta de saldo negativo decorrente do uso exclusivo da conta primária.
    • Motivos Padronizados de Ajuste de Saldo (#899): Enum de 9 motivos padronizados no backend e no seletor do modal, com justificativa livre obrigatória apenas quando selecionado "Outros (especificar)".
  • Repasse & Consignação (Issues #904, #905 / PR #907):
    • Romaneio de Repasse & Resumo de Rascunho com Compra Mínima (#904): Card no grid de resumo com percentual e cota de Compra Mínima Obrigatória; Romaneio web e PDF com cabeçalho de condições comerciais, bloco de totais discriminado, termo de conferência/responsabilidade e rodapé comercial.
    • Trava de Compra Mínima no Acerto de Repasse (#905): Unificação dos demonstrativos no AcertoResumo, alerta/badge visual de déficit de compra mínima e bloqueio transacional (HTTP 422) e de interface no botão "Finalizar Acerto" enquanto a cota mínima não for atingida.
  • PDFs & Entradas (Issues #897, #900, #901 / PR #908):
    • Recibo de Acerto de Remessa / Fornecedor (#897): Nomenclaturas amigáveis para modalidades de consignação, inclusão das condições comerciais e regras de devolução/compra mínima no recibo web e PDF.
    • Destaque Visual em Entradas Rascunho (#900): Badge âmbar de alto contraste e banner contextual orientativo de etapas no detalhe da remessa em rascunho.
    • Romaneio de Entrada com Assinaturas Manuais e Rodapé Oficial (#901): Bloco de assinaturas ampliado verticalmente e rodapé institucional padronizado (Zypa — Gestão de Entradas) no layout A4 e PDF.
  • Onboarding / Primeiros Passos (Issue #898 / PR #909):
    • Etapa de Gerenciamento de Contas e Saldo Inicial (#898): Inclusão da etapa *"Gerenciar contas - Incluir Saldo Inicial"* com ícone Landmark e link direto para /financeiro/contas no checklist de Primeiros Passos do dashboard, expandindo o onboarding para 6 etapas dinâmicas (8 no total).
v1.50.0
17 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Acordo Comercial e Cálculo de Compra Mínima no Acerto de Revenda (Issue #889 / PR #896):
    • Suporte a regras de compra mínima configuráveis por parceira e por mala de revenda (compra_minima_percentual, compra_minima_pct_override, acordo_devolucao_tipo).
    • Apuração automática no acerto de revenda (RevendaAcertoService.calcularAcerto): cálculo do valor total da mala, percentual de compra mínima aplicável, mínimo obrigatório, apuração de déficit e saldo devido ao MEI.
    • Suporte a sobrescrita (override) de compra mínima no rascunho da mala e edição de acordo (criarMalaRascunhoSchema, editarAcordoMalaSchema).
    • Atualização completa de schemas DTO (MalaDetalheResponse, AcertoRevendaResponse) e cobertura total de testes unitários.
  • Busca de Clientes no Contas a Receber (Issue #891 / PR #895):
    • Inclusão de campo de busca dinâmico com suporte a filtragem reativa (useMemo), case-insensitive e desacentuação fonética (NFD).
    • Botão para limpar a busca instantaneamente e exibição de empty state amigável quando nenhum cliente corresponde ao filtro.
🐛 Correções & Estabilidade
  • Invalidação de Cache de Analytics em Vendas (Issue #887 / PR #894):
    • Implementação de invalidação atômica e não-bloqueante (SCAN/DEL) de métricas e analytics (analytics:${tenantId}:*) no Redis.
    • Acionamento automático da invalidação ao registrar nova venda (VendaRegistroService) ou ao estornar/cancelar venda (VendaConsultaService.cancelar), garantindo consistência em tempo real nos dashboards financeiros.
  • Ajustes de Layout Responsivo Mobile em Parcelas e Fichas (Issue #890 / PR #893):
    • Reestruturação do grid no formulário de parcelas (ParcelasForm) para distribuição proporcional (grid-cols-[auto_1fr_1fr_auto]), impedindo cortes de valores e ícones em telas compactas.
    • Adição de padding horizontal e largura mínima com rolagem suave (overflow-x-auto) nas tabelas de FichaCliente e FichaRecebimentosTab.
v1.49.2
17 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Otimização de PWA e Bypass de Prefetch (Issue #885 / PR #886):
    • Ajuste no web/public/sw.js para não interceptar requisições especulativas com headers purpose: prefetch ou sec-purpose: prefetch originadas pelo motor de Speculation Rules / Speed Brain da Cloudflare.
    • Eliminação de ruídos e logs de 503 no console do navegador, preservando CPU, bateria do dispositivo móvel e integridade do cache de assets.
v1.49.1
17 de setembro de 2026
🐛 Correções & Estabilidade
  • Adequação de Ações em Entradas de Compra Direta (Issue #883 / PR #884):
    • Ocultação dos botões "Imprimir Acerto" e "PDF Acerto" na barra de ações para entradas finalizadas em modo Compra Direta (operacao === 'compra'), uma vez que a compra direta é quitada na entrada e não possui o ciclo de acerto/devolução de consignação.
    • Exibição exclusiva e garantida das ações de Romaneio de Entrada ("Imprimir Romaneio" e "PDF Romaneio").
    • Preservação de ambas as opções (Romaneio e Acerto) para entradas de Consignação (operacao === 'consignacao').
    • Atualização dos testes unitários em RemessaDetail e documentação canônica em docs/domains/remessas.md.
  • Sincronização de Documentação Financeira Canônica:
    • Registro formal no docs/domains/financeiro.md dos padrões de blindagem aritmética anti-floating-point em centavos inteiros e privacidade de saldo no SeletorContaFinanceira (hideBalance).
v1.49.0
17 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Blindagem Aritmética Financeira Universal Anti-Floating-Point (Issue #877 / PR #879):
    • Criação dos módulos canônicos web/src/lib/money.ts e api/src/utils/money.ts com conversão de precisão em centavos inteiros (toCents, toReal, somarMoeda, subtrairMoeda, arredondarMoeda e dividirEmParcelas).
    • Distribuição de parcelas determinística com resíduo acumulado na última parcela, eliminando divergências de dízima periódica.
  • Correção de Abatimento de Descontos no PDV (Issue #873 / PR #879):
    • Cálculo exato do valor líquido a pagar considerando os descontos individuais por item e o desconto manual geral.
  • Privacidade e Ocultação de Saldo de Contas no PDV (Issue #871 / PR #879):
    • SeletorContaFinanceira agora oculta o saldo atual ao operar em fluxos de venda/PDV.
  • Parcelamento Rápido e Feedback de Balanço em Entradas (Issue #874 / PR #879):
    • Chips rápidos de 1x a 12x para divisão instantânea do saldo restante e mensagens dinâmicas de equilíbrio ("✓ Pagamento balanceado", "Falta distribuir: R$ X,XX", "Valor excedido: R$ X,XX").
  • Harmonização do Romaneio de Entrada e Prevenção de Quebra Visual (Issue #870 / PR #880):
    • Redistribuição percentual de colunas e inclusão de whitespace-nowrap em valores monetários, eliminando colisão e quebras indesejadas no romaneio.
  • Visualização Completa de Acordo e Otimização A4/Mobile (Issue #878 / PR #881):
    • Enriquecimento do DTO RemessaResponse.parceiro com todos os dados de acordo comercial.
    • Exibição do resumo completo do acordo no cabeçalho do romaneio e no detalhe da entrada.
    • Responsividade móvel com rolagem horizontal suave (min-w-[640px], overflow-x-auto).
    • Otimização do layout de impressão A4 eliminando espaços verticais ociosos e preservando o bloco de assinaturas.
🛡️ Segurança & Infraestrutura
  • Hardening de Segurança e Auditoria Score A- (PR #875) & Limpeza de Lints (PR #876):
    • Mascaramento (redact) de dados sensíveis e credenciais no Pino logger Fastify.
    • Content Security Policy (CSP) ativada no Fastify Helmet e headers defensivos para Cloudflare Pages.
    • Resolução de vulnerabilidades em dependências (sharp, js-yaml, nodemailer) e ESLint 100% limpo.
v1.48.0
17 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Entradas em Modo Compra Direta (#868 / PR #869):
    • Transição direta de status rascunho ──→ finalizada sem a necessidade do ciclo de abrir/fechar.
    • Validação estrita do custo total do lote com base no somatório das unidades e preço de custo (SUM(quantidadeInicial * precoCustoUnit)).
    • Lançamento financeiro automatizado com saída de caixa imediata para pagamentos à vista e provisionamento de parcelas a pagar para compras a prazo.
    • Bloqueio de ação de abertura para lotes em modo compra direta (retorno HTTP 422).
    • Disponibilização imediata dos itens no estoque próprio (proprio_interno).
    • Stepper adaptativo de 2 etapas na interface e ocultação automática de abas irrelevantes de consignação.
  • Simplificação da Resolução de Indisponibilidade no Repasse (#867 / PR #872):
    • Adoção de vocabulário intuitivo *MEI-First* (*"Quantidade indisponível"*, *"Reservadas para outro revendedor"*, *"Usar {N} disponíveis"*, *"Mover unidades"*).
    • Resolução inteligente em 1 tela: transição direta para seleção de quantidade quando houver apenas 1 rascunho concorrente.
    • Lista clara e contextualizada quando houver múltiplos rascunhos concorrentes.
    • Toasts humanizados identificando o nome das revendedoras envolvidas no remanejamento.
    • Botão de confirmação dinâmico exibindo a quantidade exata selecionada para transferência.
v1.47.1
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Refatoração & Limpeza de Código (Analytics) (#866):
    • Remoção definitiva dos arquivos legados web/src/lib/clarity.ts e web/src/lib/gtm.ts, consolidando todas as chamadas e testes exclusivamente no padrão unificado @/lib/analytics (#866).
v1.47.0
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Arquitetura de Analytics Unificado (Facade & Adapters) (#864 / PR #865):
    • Criação do módulo centralizado @/lib/analytics desacoplando a aplicação de terceiros. Inclui adaptadores para Microsoft Clarity e Google Tag Manager (GTM), sanitização de dados sensíveis (LGPD), identificação unificada de usuários e mapeamento de eventos de conversão de negócio (#864 / PR #865).
v1.46.0
16 de setembro de 2026
✨ Funcionalidades & Novidades
  • Analytics & Inteligência de Produto (Clarity Enriquecido) (#862 / PR #863):
    • Identificação automática de usuários e tenants nas gravações de sessão (clarity.identify com tenant_id, tenant_nome, role e nome), utilitário com proteção SSR e disparo de eventos de conversão nos marcos do negócio (venda_finalizada, repasse_aberto, acerto_concluido, remessa_aberta).
v1.45.0
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Microsoft Clarity (#860 / PR #861):
    • Integração nativa do Microsoft Clarity para gravação de sessões, mapas de calor (*heatmaps*), monitoramento de cliques de frustração (*rage clicks* e *dead clicks*) com suporte total ao Next.js 16 App Router e carregamento assíncrono afterInteractive.
v1.44.1
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Feedback Visual / Destaque de Itens Persistente (#838 / PR #859):
    • O highlight no card/linha do item recém-adicionado ou bipado agora persiste na interface de forma contínua até a bipagem/adição do próximo item (ou limpeza explícita), atendendo ao feedback de operação física.
v1.44.0
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Transferência entre Repasses (#852 / PR #858):
    • Mensagens de confirmação ajustadas para indicar clareza de direção ("Isso vai mover X un de [Produto] de [Origem] para [Destino]") e padronização consistente da nomenclatura para "Repasse".
  • Demonstrativo de Acerto (Layout & Responsividade) (#855 / PR #858):
    • Cabeçalho de Contagem Física quebrado em duas linhas para evitar estouro horizontal de tela no mobile e parcelamento de pagamento reorganizado em formato de 2 linhas compacto e ergonômico.
  • Romaneio de Repasse (#854 / PR #858):
    • Inclusão dos dados da Condição Comercial / Tipo de Acordo no cabeçalho do documento de romaneio de repasse.
v1.43.2
16 de setembro de 2026
🐛 Correções & Estabilidade
  • Correção de Rollback nos Botões (+ / -) do Stepper (#856 / PR #857):
    • Reversão imediata da quantidade e cancelamento de timers pendentes ao clicar nos botões de incremento/decremento quando a API retornar conflito de disponibilidade (409) ou erro.
v1.43.1
16 de setembro de 2026
🐛 Correções & Estabilidade
  • Correção de Usabilidade / Rollback no Stepper de Quantidade (#850 / PR #851):
    • Reversão automática imediata para o valor real do rascunho ao ocorrer conflito de estoque ou ao clicar em "Dispensar" no alerta de conflito.
v1.43.0
16 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Scroll Inteligente e Flash Highlight na Adição de Itens (#838 / PR #844):
    • Implementação de hook useItemHighlight para scroll suave e feedback visual com flash highlight ao adicionar ou modificar itens nas listas e tabelas dos módulos de Revenda (Montagem de Malas), Vendas (PDV) e Remessas (Entrada de Peças).
    • Ordenação alfabética consistente por descrição e suporte a acessibilidade com respeito à preferência prefers-reduced-motion.
  • Digitação Direta e Atualização Otimista de Quantidades (#839 / PR #845):
    • Criação do componente InlineQuantidadeStepper permitindo digitação direta de valores numéricos nos controles de quantidade com auto-seleção no foco, debounce de 400ms para persistência e teto dinâmico de estoque com alertas.
    • Eliminação de bloqueios de interface e spinners durante mutações em background na Montagem de Malas, Carrinho do PDV e Rascunhos de Remessa.
  • Auto-seleção de Texto em Inputs de Moeda e Valores (#840 / PR #846):
    • Implementação de seleção automática de texto (select()) no foco em campos de moeda (CurrencyInput), percentual (PercentInput) e valores numéricos, agilizando a digitação e evitando a necessidade de apagar manualmente o valor anterior.
  • Navegação 100% por Teclado em Autocompletes de Busca (#841 / PR #847):
    • Navegação completa por teclado com ArrowDown, ArrowUp (com wrap-around cíclico), seleção via Enter e fechamento via Escape nos autocompletes de Revenda e Vendas (busca de itens e busca de clientes).
    • Suporte a scroll automático para o item selecionado e conformidade total com WAI-ARIA 1.2 (combobox, listbox, aria-activedescendant).
  • Exclusão Ágil com 1 Clique e Toast "Desfazer" em Rascunhos (#842 / PR #848):
    • Remoção imediata com 1 clique de itens na Montagem de Malas/Repasse e no Carrinho do PDV, substituindo diálogos bloqueantes por toast com ação de "Desfazer" (5s) para restauração rápida.
  • Áreas de Toque Invisíveis no Mobile (Touch Targets >= 44px - #843 / PR #849):
    • Otimização de áreas de toque em botões de ação e steppers no mobile utilizando pseudo-elementos invisíveis expandidos e touch-manipulation, atingindo a recomendação de área >= 44px sem alterar o tamanho visual compacto dos componentes.
v1.42.0
16 de setembro de 2026
✨ Funcionalidades & Novidades
  • Emissão e Layout de Impressão A4 do Romaneio de Entrada (#823 / PR #835):
    • Implementação de layout formal de impressão em folha A4 e exportação/visualização do romaneio de entrada de mercadorias.
  • Edição Manual de Datas de Vencimento por Parcela no Fechamento de Venda (#824 / PR #830):
    • Suporte à edição individual e flexível de datas de vencimento de cada parcela durante o fechamento de venda no PDV/fiado.
  • Proteção Contra Perda de Dados com Diálogo de Descarte no PDV (Dirty Guard - #825 / PR #832):
    • Diálogo de confirmação de descarte de alterações não salvas ao tentar sair ou reiniciar o carrinho de venda no PDV.
  • Unificação do Campo de Busca e Leitura Contínua de Código de Barras (#829 / PR #834):
    • Campo de busca unificado com suporte otimizado a bipagem e leitura contínua de código de barras no PDV.
🐛 Correções & Estabilidade
  • Cálculo de Parcelas com Centavos Inteiros (#826 / #824):
    • Correção na distribuição e arredondamento de centavos em parcelamentos eliminando distorções de ponto flutuante.
  • Cálculo de Saldo Disponível no Repasse (#831 / PR #836):
    • Correção na lógica de saldo disponível durante o repasse eliminando ocorrências de valores negativos.
  • Isolamento de Estado e Máscara de Multiplicador na Precificação em Lote (#821, #822 / PR #828):
    • Isolamento de estado e correção de máscara no multiplicador de margem/preço de venda nas entradas em lote.
  • Texto do Botão de Repasse (#833 / PR #837):
    • Correção do rótulo da ação para "Abrir Repasse".
  • Símbolo `#` Duplicado em Contadores (#820 / PR #827):
    • Remoção do caractere # duplicado na renderização de identificadores e contadores.
v1.41.0
15 de setembro de 2026
✨ Funcionalidades & Novidades
  • Parcelamento de Vendas a Prazo (Fiado) (#813):
    • Suporte a parcelamento de vendas no fiado/a prazo em até 12x com edição individual de datas de vencimento e valores das parcelas.
    • Geração e vinculação automática de títulos em contas a receber no módulo financeiro.
  • Fluxo Minimalista de Exclusão de Conta LGPD (#808):
    • Implementação de fluxo simplificado e seguro de solicitação de exclusão de conta em conformidade com a LGPD.
    • Proteção anti-enumeração de contas e resposta consistente para mitigação de discovery de credenciais.
  • Propagação Ascendente na Árvore de Taxonomia (#810):
    • Propagação ascendente automática na hierarquia de categorias e taxonomia de produtos ao selecionar subcategorias e nós-folha.
  • Padronização de Labels de Contadores (#809):
    • Padronização dos labels de contadores e métricas de Vendas e Repasses em todo o dashboard e relatórios.
🐛 Correções & Estabilidade
  • Checklist de Primeiros Passos (#811):
    • Correção de deep-links e navegação de rotas no checklist de onboarding/primeiros passos do dashboard.
  • Segmento na Edição de Itens de Remessa (#812):
    • Correção do carregamento e persistência de segmento ao editar itens de remessa.
  • Itens sem Classificação no Histórico de Vendas (#814):
    • Ajuste no cálculo e agregação de itens sem classificação no relatório e histórico de vendas.
  • Modal de Importação XLSX (#815):
    • Remoção de multiplicador de preço redundante no modal de importação em lote via planilha XLSX.
v1.40.0
14 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Puxar/Transferir Unidades entre Rascunhos de Repasse (#803, #804):
    • Implementação da ação "Puxar" no modal de situação da peça e no painel de montagem de mala/repasse rascunho (PuxarRascunhoSheet).
    • Transferência atômica e segura de unidades consignadas entre rascunhos de diferentes revendedoras sem necessidade de devolver manualmente ao estoque central.
    • Validação de concorrência, saldo disponível no rascunho de origem e atualização em tempo real de contadores e totais.
🛡️ Segurança & Infraestrutura
  • Parametrização do Prazo de Quarentena LGPD (#806, #807):
    • Parametrização dinâmica do prazo de exclusão/quarentena de conta via variável de ambiente LGPD_QUARENTENA_DIAS (com fallback seguro padrão de 60 dias).
    • Alinhamento em toda a API (auth.service.ts, rotas públicas e painel de privacidade) e schemas de validação.
  • Reativação Automática de Conta em Quarentena no Login (#802, #805):
    • Restauração automática de conta em quarentena de exclusão ao efetuar login com credenciais válidas antes do término do prazo.
    • Alerta informativo ao usuário confirmando a reativação da conta e cancelamento da exclusão agendada.
  • Redirecionamento Canônico de Rotas (#802, #805):
    • Redirecionamento permanente de /configuracoes para /config no middleware do frontend Next.js.
v1.39.3
13 de setembro de 2026
🛡️ Segurança & Infraestrutura
  • Auditoria de Eventos de Privacidade & Painel LGPD (#801):
    • Integração dos eventos de privacidade e solicitação/cancelamento de exclusão de conta ao AuditoriaService.
    • Formatação e exibição aprimorada do histórico de solicitações e rastreabilidade no painel LGPD em Configurações.
v1.39.2
13 de setembro de 2026
✨ Funcionalidades & Novidades
  • Navegação de Entradas & Parceiros (#796, #799):
    • Ajuste de texto para "Ver Entradas" no menu de ações de fornecedores na lista de Parceiros e na gaveta lateral.
    • Adição de navegação de retorno para a listagem de Parceiros a partir da visualização filtrada de Entradas (/remessas?fornecedor=xxx), incluindo contextualização de empty state.
  • Gaveta Mobile & Menus de SuperAdmin (#800):
    • Exibição condicional dos itens de menu de SuperAdmin (Analytics e Auditoria) na gaveta de navegação mobile (MobileDrawer) para usuários com perfil de SuperAdmin.
v1.39.1
13 de setembro de 2026
🐛 Correções & Estabilidade
  • Exportação de Dados LGPD & Repasses de Mercadorias (#798):
    • Alinhamento dos enums de módulos de exportação entre API e Web (ModulosExportacao), corrigindo inconsistências de chave e payload.
    • Inclusão da aba e dados de Repasses de Mercadorias no relatório completo de exportação do negócio.
v1.39.0
13 de setembro de 2026
✨ Funcionalidades & Novidades
  • Exportação de Dados do Negócio & Portabilidade LGPD (#792, #797):
    • Implementação de funcionalidade de exportação completa de dados do tenant para cumprimento dos Arts. 18 e 19 da LGPD (direito à portabilidade de dados).
    • Seleção granular de módulos para exportação (Perfil, Parceiros, Estoque/Produtos, Vendas, Entradas/Remessas e Financeiro).
    • Suporte a múltiplos formatos estruturados com geração em lote e envio direto ao e-mail de segurança cadastrado ou e-mail customizado autenticado.
  • Segurança & Reautenticação na Exportação (#795, #797):
    • Exigência de confirmação de senha segura ao solicitar envio para e-mail alternativo diferente do e-mail do titular logado.
    • Rate limiting específico de exportação para prevenção de abuso e vazamento de dados em massa.
    • Rastreabilidade com eventos de auditoria dedicados (lgpd.exportacao_solicitada) e instrumentação com spans OpenTelemetry.
  • Melhorias de Copy & Usabilidade em Configurações (#794, #797):
    • Reorganização e aprimoramento de textos na aba de Privacidade & LGPD (/config), esclarecendo políticas de retenção legal e períodos de exclusão.
v1.38.0
13 de setembro de 2026
✨ Funcionalidades & Novidades
  • Onboarding de 5 Etapas Focado no MEI (#787, #793):
    • Simplificação do checklist de primeiros passos no dashboard para 5 etapas essenciais (negocioConfigurado, classificacaoHabilitada, primeiroParceiro, primeiraRemessa, primeiraVenda), removendo a etapa prematura de repasse.
    • Atualização do cálculo de progresso na API (DashboardService.obterProgressoOnboarding) e schemas.
  • Identidade Visual & Slogan Institucional nos E-mails (#789, #793):
    • Atualização do slogan institucional nos templates de e-mail (baseLayout) e metadados da aplicação para: *"Zypa — O Parceiro Estratégico do seu Crescimento"*.
  • LGPD — Telas de Exclusão de Conta & Prazo de Carência de 60 Dias (#791, #793):
    • Atualização do prazo de carência para exclusão definitiva de conta para 60 dias (PRAZO_EXCLUSAO_DIAS = 60) em conformidade com o marco legal.
    • Redesenho completo da interface pública /excluir-conta em 2 etapas com autenticação OTP, discriminação clara dos dados a serem eliminados vs retidos por obrigação fiscal/legal e alerta do período de arrependimento.
v1.37.1
13 de setembro de 2026
🛡️ Segurança & Infraestrutura
  • Auditoria de Segurança & Robustez (#788, #790):
    • H2 (Email Fallback Guard): Bloqueio de inicialização em produção se EMAIL_PROVIDER !== 'smtp', prevenindo vazamento de OTP e dados sensíveis em logs.
    • M3 (Lock Atômico no Acerto de Mala): Prevenção de race condition de duplo acerto simultâneo na mesma mala via UPDATE ... WHERE status = 'aberta' RETURNING id na transação Prisma, com retorno HTTP 409.
    • M4 (Server-side Route Guard): Middleware Next.js (web/src/middleware.ts) interceptando rotas /dashboard/* no edge via cookie refreshToken com redirect seguro.
    • L1 (Structured Logging Pino): Implementação de logger Pino global zypa-api em api/src/lib/logger.ts substituindo chamadas de console.error em serviços de Auth, Venda, Revenda e Auditoria.
v1.37.0
13 de setembro de 2026
✨ Funcionalidades & Novidades
  • Padronização Visual Completa de PDFs (#779, #781):
    • Padronização visual completa dos PDFs do sistema para novo layout limpo sem blocos sólidos e com totais discriminados.
  • Envio de Comprovante de Venda por E-mail (#783, #785):
    • Disparo de comprovante de venda por e-mail direto do servidor via SMTP com modal preenchido, fallback comercial e anexo PDF.
🐛 Correções & Estabilidade
  • Histórico de Vendas & Taxonomia (#780, #782):
    • Exibição de classificação taxonômica no detalhe da venda em /vendas/historico.
  • Acerto de Mala & Venda Consolidada (#784, #786):
    • Agrupamento em venda única consolidada no acerto de mala, fallback triplo de preços, taxonomia completa e auditoria revenda.acerto_venda_cascata.
v1.36.4
12 de setembro de 2026
🛡️ Segurança & Infraestrutura
  • Otimização do Build Docker & Deploy da API (#777, #778):
    • Adição de BuildKit Cache Mounts (--mount=type=cache,target=/root/.npm) e substituição do segundo npm ci por npm prune --omit=dev --ignore-scripts no api/Dockerfile.prod, reduzindo drasticamente o tempo de compilação Docker em ARM64.
    • Otimização do script scripts/deploy-api.sh com build direcionado exclusivo ao container da API (docker compose -f docker-compose.prod.yml build api) e exportação de DOCKER_BUILDKIT=1.
    • Substituição de esperas estáticas (sleep 5) por loops de polling ativo para verificação de prontidão do container da API e validação do healthcheck (/health) com timeout de 20s.
    • Atualização e sincronização da documentação de infraestrutura em docs/infra.md, .agents/rules/infra.md e .kiro/steering/infra.md.
v1.36.3
12 de setembro de 2026
🐛 Correções & Estabilidade
  • Impressão & Documentos PDF / Rodapé (#771, #776): Ajuste do rodapé padrão (addRodapePadrao) nos documentos PDF gerados pelo Zypa:
    • Formatação do emitente à direita como Emitido por: ${nomeNegocio} ou Emitido por: ${nomeNegocio} - ${emailNegocio} quando o e-mail estiver configurado.
    • Remoção da linha isolada centralizada de e-mail do negócio.
    • Renderização do aviso legal ("Este documento não possui valor fiscal / Cupom não fiscal") em chamada atômica centralizada, eliminando a sobreposição de texto no rodapé.
    • Cobertura e validação através de testes unitários em pdf-helpers.test.ts e pdf-comprovante.test.ts.
v1.36.2
12 de setembro de 2026
🐛 Correções & Estabilidade
  • Entrada de Mercadorias / Reposição & Split (#774, #775): Propagação completa da árvore de taxonomia de 4 níveis (idSegmento, idGrupo, idCategoria, idSubcategoria) na criação de novos itens derivados durante fluxos de reposição de itens divergentes (isentoDiverge) e split de compra mínima (converterCompra).
  • Auditoria do Tenant (#774, #775): Harmonização do filtro de busca por ação em AuditoriaService.listarLogs para suportar consultas por prefixo (startsWith), alinhando com a busca administrativa e permitindo consultas agregadas por domínio (ex.: venda, financeiro).
  • Regras de Negócio & Acerto (#774, #775): Unificação do vocabulário canônico de tipoAcordo no cálculo de acerto de remessa (RemessaAcertoService.calcularAcerto), utilizando o helper canônico derivarTipoAcordo (consignacao_margem, consignacao_comissao, compra_direta).
  • Observabilidade & OpenTelemetry (#774, #775): Ajuste de configuração em IORedisInstrumentation (requireParentSpan: false) garantindo rastreabilidade e geração de spans sob ESM no Node.js.
v1.36.1
12 de setembro de 2026
🐛 Correções & Estabilidade
  • Entrada de Mercadorias / Remessas (#772, #773): Correção do campo tipoOrigem na criação de itens de remessa/compra no backend, tornando-o opcional no schema e derivando automaticamente (proprio para compra e consignado para consignação) quando omitido no payload.
  • Admin & Auditoria (#772, #773): Atualização do filtro de busca por ação no log de auditoria para suportar prefixos de domínio (ex: financeiro., vendas.) e ações exatas via busca por prefixo (startsWith).
v1.36.0
12 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Entrada de Mercadorias & Estoque (#760, #770): Reorganização da interface de ações de entrada (botões de Adicionar ao Lote e Baixar Lote), auto-seleção em campos numéricos de entrada e auto-foco no código de barras para otimizar a produtividade na triagem.
  • Parceiros / Fornecedores (#734, #769): Adição de filtro de entradas por parceiro/fornecedor na visualização de parceiros, com empty states contextualizados e dinâmicos para buscas sem resultado.
  • Onboarding / Primeiros Passos (#765, #768): Correção visual e capitalização padronizada nos títulos e subtítulos de passos do onboarding de Primeiros Passos.
  • Revenda / Remessas (#766, #767): Habilitação de impressão de acerto para remessas com status finalizado.
  • Impressão & Documentos (#763, #764, #742): Refatoração e aprimoramento do layout de relatórios e comprovantes PDF de Vendas e Remessas, alinhando a experiência visual e estrutural com a POC zypa_app.
  • Estoque Mobile (#761, #762): Correção de overflow e quebra de layout nos quadrantes de visualização de estoque em dispositivos móveis, garantindo validação fluida de baixa.
v1.35.14
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Filtros de Período e Timezone (#758, #759): Correção estrutural do filtro de intervalo de datas (data_inicio e data_fim) no backend para utilizar os limites exatos do fuso horário de negócio (America/Sao_Paulo via inicioFimDoDiaSaoPaulo), resolvendo histórico de vendas vazio para o dia corrente e inclusão completa do dia final nos relatórios financeiros (/financeiro/resumo, /financeiro/resumo-comercial, /financeiro/lucratividade, /financeiro/vendas-por-fornecedor, /financeiro/desempenho-fornecedores e /admin/auditoria).
  • Busca em Vendas (#758, #759): Adicionado suporte a parâmetro de busca (busca) textual por nome do cliente ou número da venda em GET /vendas.
v1.35.13
11 de setembro de 2026
🐛 Correções & Estabilidade
  • PDV / Vendas (#740): Correção da sobreposição de estoque e preço nos cards de produtos, quebra de linha de títulos longos e rótulo mobile "Bipar Código".
  • Fechamento da Venda (#741): Reequilíbrio do grid de parcelas (exibição de valores sem truncamento) e eliminação da sobreposição entre descrição e preço no resumo.
v1.35.12
11 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Estoque (#735): Limpeza de textos/totais redundantes fora dos cards de estoque e substituição de "Galpão" por "Em Estoque".
  • Entrada de Mercadorias (#736): Recálculo reativo do badge de itens sem classificação na entrada e invalidação imediata de cache.
  • Entrada de Mercadorias (#737): Renomeação do botão "Fechar" para "Acerto com o Fornecedor" e fluxo de fechamento seguro.
  • Entrada de Mercadorias (#738): Diálogo de confirmação seguro ao abrir/reabrir entrada de mercadorias.
  • Onboarding / Primeiros Passos (#739): Reordenação da jornada de primeiros passos / onboarding: primeira venda antes do primeiro repasse.
v1.35.11
11 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Impressão & Documentos (#742, #753, #754): Padronização completa de documentos não fiscais com tarja DOCUMENTO NÃO FISCAL evidente em destaque visual.
  • Tabelas & Layout (#742, #753, #754): Alinhamentos canônicos e estruturados em tabelas de itens e comprovantes (Quantidade centralizada, valores alinhados à direita, descrições à esquerda).
  • Privacidade & Compliance (#742, #753, #754): Proteção de privacidade MEI e conformidade com LGPD na emissão de comprovantes de venda.
  • Revenda / Romaneios (#742, #753, #754): Suporte padronizado de Romaneio de Devolução e Resumo de Acerto de Remessa em formato A4 via helper isolado de impressão.
v1.35.10
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Web / Impressão (#749): Ajuste de margens e largura responsiva no padrão A4 do helper de impressão (printA4Document), aprimorando o layout e o aproveitamento de página na impressão de romaneios e recibos.
v1.35.9
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Web / Impressão (#749): Correção de dimensões ativas de viewport (100vw/100vh) e adição de listener do evento afterprint para remoção determinística do iframe de impressão após a conclusão/fechamento da caixa de diálogo nativa.
v1.35.8
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Web / Impressão (#749): Correção de precedência e visibilidade forçada no iframe A4 (printA4Document), garantindo exibição correta e renderização consistente dos documentos para impressão.
v1.35.7
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Web / Impressão (#749): Implementação de helper isolado de impressão via iframe A4 (printA4Document) nos romaneios de rascunhos e recibos de acerto de revenda, garantindo renderização assíncrona desacoplada da árvore principal e impressão estável em todas as plataformas.
v1.35.6
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Web / Impressão (#748): Correção de impressão em branco de romaneios de rascunhos e recibos de acerto de revenda, garantindo que os dados sejam montados no DOM em modal/overlay antes do acionamento da impressão nativa do navegador (window.print()).
v1.35.5
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Infraestrutura / Cloudflare Pages (#743): Correção da navegação e roteamento direto para /vendas e /vendas/historico no Cloudflare Pages, atualizando regras de rewrite para garantir o carregamento correto das rotas estáticas e de histórico.
v1.35.4
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Infraestrutura / Cloudflare Pages (#744): Correção da entrega de assets estáticos e Content-Type (MIME type) no Cloudflare Pages, evitando que arquivos com extensão (ex: .json, .js, .css, .png, .svg) sejam capturados por rewrites SPA e retornem HTML.
v1.35.3
11 de setembro de 2026
🐛 Correções & Estabilidade
  • Infraestrutura / Cloudflare Pages (#744): Configuração de regras de rewrite HTTP 200 no Cloudflare Pages para suporte a rotas dinâmicas do Next.js (ex: /revenda/rascunhos/:id/, /revenda/acerto/:id/, /financeiro/clientes/:id/, /vendas/:id/).
v1.35.2
9 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Parceiros (#731): Alterada a ordem das abas de parceiros para Clientes, Fornecedores, Revendedoras e Todos.
v1.35.1
9 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Dashboard (#721): Saudação 'Olá, [Nome]!', remoção do #ID na Inspiração do Dia e reordenação dos blocos.
  • Responsividade & 360px (#722): Contenção global defensiva, badges flexíveis em Classificação e abas com scroll horizontal em Configurações/Catálogo.
  • Parceiros (#727): Fechamento de overlays antes de abrir edição para evitar sobreposição e dados desatualizados.
  • Configurações (#726, #729): Termo 'Repasse' em Contadores e subtítulo empilhado em Perfil.
v1.35.0
9 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Infraestrutura / Observabilidade: Migração OpenTelemetry Fastify (#661):
    • Migração de @opentelemetry/instrumentation-fastify para @fastify/otel nativo preservando o hook ESM do ioredis.
  • Auditoria (Audit Trail): Arquitetura Assíncrona e Modelo de Dados (#656):
    • Criação da tabela logs_auditoria, model LogAuditoria e serviço desacoplado e não-bloqueante AuditoriaService.
  • Auditoria Transversal: Instrumentação de Domínios Críticos (#656, #717):
    • Instrumentação do barramento de auditoria em todos os domínios críticos: Caixa, Financeiro, Vendas, Revenda Consignada (incluindo movimentação de malas), Remessas de Fornecedores e Parceiros.
  • Admin & Segurança: Visualizador da Trilha de Auditoria Global (#719):
    • Endpoint GET /admin/auditoria e painel de visualização da Trilha de Auditoria Global exclusivo para SuperAdmin.
v1.34.0
9 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Financeiro: Módulo de Contas Financeiras com Auto-criação de Caixa Geral e Suporte a Bancos e Carteiras (ZYPA-706):
    • Criação automática de Conta Caixa Geral para novos tenants e migração retroativa de dados existentes.
    • Suporte opcional ao cadastro de múltiplas contas bancárias (Nubank, Inter, Itaú, Bradesco, etc.) e carteiras digitais.
  • Financeiro: Dados Bancários e Chaves Pix Rápidas (ZYPA-706):
    • Gerenciamento de agência, conta corrente e tipos de chaves Pix (CPF/CNPJ, E-mail, Telefone, Chave Aleatória) com ação rápida de cópia para transferências.
  • Financeiro: Transferências Atômicas entre Contas e Ajuste de Saldo Auditado (ZYPA-706):
    • Movimentação entre contas bancárias e caixa físico com integridade transacional garantida e neutralidade na DRE.
    • Modal de ajuste de saldo para conciliação física com histórico e auditoria de justificativas.
  • Financeiro: Card de Posição Financeira Consolidada (ZYPA-706):
    • Indicador consolidado de saldo disponível e distribuição por contas no topo do dashboard financeiro.
  • Vendas/PDV & Pagamentos: Seletores Inteligentes de Conta por Forma de Pagamento (ZYPA-706):
    • Pré-seleção inteligente da conta de destino com base na forma de pagamento (Pix ➜ Conta Pix padrão / Dinheiro ➜ Caixa Geral) via *progressive disclosure*.
v1.33.0
8 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Revenda: Emissão e Impressão de Romaneio e Recibo de Acerto com Histórico da Revendedora (ZYPA-704, #713):
    • Geração e impressão de PDF do Romaneio de Envio de Malas e Recibo de Acerto com layout profissional para impressão térmica e A4.
    • Indicador visual e tarja de reimpressão ("2ª via / Reimpressão") para controle de auditoria de vias duplicadas.
    • Seção de histórico completo de romaneios e recibos de acertos emitidos integrado diretamente na Ficha de Detalhes da Revendedora.
  • Revenda: Destaque Visual, Teto de Vencimento e Impressão Automática no Despacho (ZYPA-705, #712):
    • Destaque visual e badge da revendedora selecionada durante a montagem e conferência de mala.
    • Regra de teto máximo de vencimento da consignação configurável por tenant com validação preventiva.
    • Fluxo integrado de despacho de mala com acionamento automático da impressão do Romaneio ao confirmar o envio.
  • Financeiro: Rótulos Amigáveis de Navegação e DRE Estratégico (ZYPA-701, #711):
    • Rótulos amigáveis e intuitivos nas rotas e menus do módulo Financeiro alinhados à proposta de valor do Zypa.
    • Demonstração do Resultado do Exercício (DRE) com estrutura clara de receitas operacionais, custos de mercadorias, despesas e margem líquida.
  • Vendas: Rótulos Amigáveis de Entrada Sugerida e Chips de Proteção no PDV (ZYPA-702, #710):
    • Substituição de nomenclaturas técnicas ("Repasse") por "Entrada Sugerida" em todas as telas de venda e PDV.
    • Inclusão de chips informativos de proteção financeira e margem recomendada na finalização do pedido.
  • Vendas: Invalidação Abrangente de Cache de Histórico e Caixa (ZYPA-703, #709):
    • Invalidação automática e reativa de todas as queries de histórico de vendas, resumo financeiro e sessão de caixa ativa (caixaKeys, vendasKeys) após a criação ou cancelamento de vendas.
  • Infraestrutura: Migração do Frontend para Cloudflare Pages (#707, #708):
    • Pipeline de exportação estática Next.js otimizado para deploy global de alta performance e baixa latência no Cloudflare Pages.
    • Injeção explícita de NEXT_PUBLIC_API_URL durante a fase de build e geração de artefatos estáticos.
v1.32.0
6 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Melhoria do e-mail de boas-vindas (ZYPA-699, #700):
    • Novo assunto do e-mail transacional de boas-vindas: Bem-vindo ao Zypa! Seu negócio mais organizado começa agora 🎉 (antes: Bem-vindo(a) ao Zypa! 🎉).
    • Conteúdo do template ampliado (welcomeTemplate): saudação personalizada, lista de 6 benefícios do Zypa (registrar/acompanhar vendas, organizar produtos recebidos, controlar envios a revendedoras, acompanhar valores a receber/pagar, rastrear onde estão os produtos e ter visão mais clara dos resultados).
    • Novo parágrafo destacando que tarefas antes dependentes de anotações, controles separados ou da memória passam a ficar organizadas e sempre disponíveis.
    • Nova seção "Precisa de ajuda?" mencionando a área de Perguntas Frequentes (FAQ) e o suporte da equipe.
    • CTA único Acessar o Zypa e assinatura de marca "Zypa — O Parceiro Estratégico do seu Crescimento" + "Um produto ETHIAL".
    • Sem alteração de gatilho/momento de disparo (segue após confirmação de e-mail no signup), schema, endpoints, dependências ou frontend.
v1.31.0
5 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Hub de Personalização do Dashboard & Controle Contextual de Privacidade (#698):
    • Novo modal ConfigDashboardModal acessível diretamente pelo cabeçalho do Dashboard (Personalizar).
    • Switches individuais de visibilidade para todos os 6 blocos do Dashboard:
    • Botão de restauração rápida para os valores padrão ("Restaurar Padrão").
    • Botão de alternância de privacidade contextual posicionado diretamente no topo direito do bloco de totais financeiros com suporte a mascaramento imediato (R$ •••••).
    • Unificação do estado e preferências de exibição de blocos na store Zustand com persistência em localStorage e fallback seguro para SSR/Testes.
v1.30.0
4 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Tela de Boas-vindas com Frase Diária Inspiradora & Modo Privacidade no Dashboard (ZYPA-694, #696):
    • Base de dados com 366 frases inspiradoras diárias (daily-quotes.json) selecionadas para revendedoras e empreendedores de semijoias.
    • Exibição acolhedora da frase do dia calculada de forma determinística por dia do ano no fuso horário America/Sao_Paulo, com suporte a anos bissextos.
    • Modo Privacidade com toggle no cabeçalho do Dashboard (Eye / EyeOff) e persistência em localStorage via Zustand (dashboard-preferences.store.ts).
    • Mascaramento inteligente de indicadores financeiros (R$ •••••) e contadores quantitativos (••••), preservando a visibilidade de alertas críticos do Radar e avisos urgentes.
    • Testes unitários com Vitest cobrindo 100% dos cálculos determinísticos e cenários de renderização/alternância de privacidade.
🐛 Correções & Estabilidade
  • Fallback Seguro no Storage Zustand para SSR e Testes (#697):
    • Inclusão de dummyStorage como fallback seguro no Zustand persist para prevenir TypeError em SSR (Next.js) e em suites de testes Vitest/Node.js sem window.localStorage inicializado.
  • Reatividade do Checklist de Onboarding (#693):
    • Invalidação automática e imediata da query TanStack Query dashboardKeys.onboardingProgress() no onSuccess das mutações de habilitação de classificação de produtos e criação de malas.
v1.29.0
4 de setembro de 2026
🛡️ Segurança & Infraestrutura
  • Purga de Tenant LGPD Completa (#686):
    • Inclusão de SessaoCaixa e MovimentoCaixa na sequência transacional de exclusão/purga de tenant em LgpdService, respeitando a ordem reversa de chaves estrangeiras.
  • Segurança e Anti-Spoofing em Ingestão de Eventos Analytics (#687):
    • Proteção na rota POST /analytics/events: imposição estrita de tenantId e userId a partir da sessão/token JWT autenticado, forçando null em requisições desautenticadas/públicas.
  • Isolamento Multi-Tenant Canônico em Serviços Globais (#688):
    • Refatoração de EstoqueService e RadarService para utilizar getTenantPrisma(tenantId), eliminando consultas globais e blindando o isolamento de dados entre tenants.
  • Padronização de Contratos e Schemas Zod em camelCase (#689):
    • Harmonização integral de contratos entre API e Frontend em formato camelCase com retrocompatibilidade resiliente em todas as entidades (venda, revenda, remessa, financeiro, estoque, radar, import, classificacao).
  • Modularização e Refatoração SRP de Estoque (#690):
    • Decomposição de estoque-posicao.tsx da pasta legada config/ para web/src/app/(dashboard)/estoque/components/ com subcomponentes SRP (< 300 linhas): QuadrantesOverview, ParceirosDrillDown, ItensEstoqueTable, blocoConfig e hook useEstoqueNavigation.
  • Padronização 100% dos Models e Tabelas Prisma em Português (#685):
    • Migração de tabelas e modelos legados (Usuario, TokenRecuperacaoSenha, LogLgpd, EventoAnalytics, AtribuicaoAnalytics, CicloVidaAnalytics) com migration SQL versionada.
  • Governança & Agentes:
    • Formalização de regras de invocação de subagentes operacionais e inclusão de testes E2E Playwright obrigatórios no gate de PR da Regra 8.
v1.28.0
4 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Painel Analítico de Desempenho por Entrada (#682): Novo endpoint GET /remessas/:id/desempenho e modal EntryPerformanceModal com KPIs e detalhamento por item.
  • Visão Geral do Estoque & Totais Financeiros (#680): Totais de custo e venda projetada nos quadrantes, término "Galpão" substituído por "Disponíveis para venda - Próprio/Consignado", contagem por "Peças" e drill-down unificado.
  • Terminologia Unificada na Home (#679): Botões de ação rápida atualizados para "Nova Entrada" e "Novo Repasse".
  • Correções Operacionais e Fiscais:
    • Preço de repasse em malas exibindo o preço de venda estipulado pelo MEI (#678).
    • Badge e cálculo de contagem de itens não classificados nas entradas (#681).
    • Margem de segurança de 15px na impressão térmica do comprovante de venda (#637).
  • Governança & Arquitetura: Regra 13 Spec-Driven Design (SDD) e papéis formais de PO/BA (refiner) e Tech Lead (task-master).
v1.27.0
2 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Rebranding Global da UI & Reorganização do Menu 9 Itens (#676):
    • Nomenclatura atualizada em todo o sistema: *Remessas* ➔ Entradas (com badges e distinção de modalidades: Consignada e Compra Direta) e *Revenda* ➔ Repasses.
    • Reordenação oficial da navegação principal: Início, Vendas, Entradas, Repasses, Financeiro, Parceiros, Estoque, Radar, Configurações.
  • Busca Suspensa & Carrinho de Mala Sempre Visível em Revenda (#672):
    • Novo componente BuscaItemRevenda com debounce de 250ms, dropdown flutuante z-50, leitor óptico e leitor por câmera (BarcodeScanner), mantendo a tabela de montagem da mala sempre visível em destaque.
  • Entrada de Itens com Fluxo Contínuo e Leitor em Entradas (#671):
    • Botão "Salvar e Adicionar Outro" preservando a taxonomia selecionada, leitor óptico, scanner de câmera e cálculo automático por fator de precificação.
  • Visualização de Descrição Completa no Carrinho de Repasse (#674):
    • Remoção de truncamento forçado (truncate, max-w-[200px]) em MontagemTable, aplicando break-words e min-w-[220px] para especificações e nomes extensos de semijoias.
🐛 Correções & Estabilidade
  • Segregação Contábil de Estoque em Campo vs Reservado (#673):
    • Peças alocadas em malas em rascunho são contabilizadas exclusivamente como *Reservado* no galpão, integrando *Estoque em Campo* apenas a partir da abertura formal da mala (status = 'aberta').
  • Validação Financeira de Limite de Crédito com Preço de Venda (#675):
    • Correção na apuração de risco financeiro: limite de crédito agora valida rigorosamente a exposição pelo Preço de Venda Praticado somando malas abertas + fiados pendentes + nova mala rascunho.
v1.26.2
1 de setembro de 2026
🐛 Correções & Estabilidade
  • Deep-link/reload de rotas dinâmicas `[id]` no static export (ZYPA-664, #665, #666):
    • No build output: 'export' servido com o rewrite do .htaccess, o deep-link (acesso direto pela URL) e o reload (F5) de uma rota dinâmica [id] (ex.: /revenda/rascunhos/{id}, /financeiro/clientes/{id}) caíam em /login ou 404, e a chamada à API saía com placeholder em vez do id real.
    • Correção: mecanismo useRouteId que lê window.location quando o useParams do Next devolve o placeholder do artefato estático, garantindo que a tela carregue e que a request à API use sempre o id REAL da URL.
🧪 Qualidade & Testes
  • Testes de fuso horário determinísticos + doc anti-flaky (ZYPA-667, #669):
    • Fixtures sensíveis a "hoje" passam a fixar o relógio (vi.setSystemTime) e/ou derivar datas via os helpers canônicos, eliminando flakiness intermitente na janela 21h–24h BRT (off-by-one de data UTC). Regra documentada no steering de arquitetura (proibição de new Date().toISOString().split('T')[0] também em testes).
  • E2E de deep-link/reload de rotas dinâmicas no artefato de produção (ZYPA-668, #670):
    • Config dedicada playwright.static.config.ts + servidor que serve o out/ reproduzindo o rewrite do .htaccess e faz reverse-proxy same-origin de /api/*. Spec rotas-dinamicas-static.spec.ts cobre deep-link e reload das rotas [id], provando o fix useRouteId — fechando a lacuna que deixou o ZYPA-664 chegar à produção (o next dev padrão mascarava o bug).
v1.26.1
1 de setembro de 2026
🐛 Correções & Estabilidade
  • Sessão cross-site quebrada em produção — cookie `refreshToken` com `SameSite=None; Secure` (ZYPA-662, #663):
    • Em produção o frontend (zypa.gg2.com.br) e a API (zypa-api.gg2.com.br) são domínios distintos (cross-site). O cookie de refresh estava com SameSite=Strict, então o navegador não o enviava em requisições cross-site (ex.: POST /auth/refresh), derrubando a sessão.
    • Sintoma: redirect inesperado para a tela de login após ações como criar mala e em reloads (F5).
    • Correção: o cookie refreshToken passa a usar SameSite=None; Secure em produção (exigência do navegador para envio cross-site sobre HTTPS), mantendo HttpOnly. Em desenvolvimento (same-site em localhost, HTTP) permanece SameSite=Lax sem Secure.
v1.26.0
1 de setembro de 2026
✨ Funcionalidades & Novidades
  • "Tentar N" — recuperação de conflito no picking de malas (ZYPA-655, #657):
    • O backend passa a expor o campo disponivel no erro de conflito ao adicionar/ajustar itens no picking de uma mala (quando a quantidade solicitada excede o saldo disponível).
    • O frontend usa esse valor para oferecer um botão de recuperação "Tentar {disponivel}", permitindo ao usuário reprocessar a operação com a quantidade máxima realmente disponível sem refazer o fluxo do zero.
    • Limpeza de non-null assertions em use-revenda como parte da mesma entrega.
🛠️ Melhorias & Usabilidade
  • Qualidade de lint — frontend e backend 100% limpos:
    • Frontend (#658): remoção de non-null assertions dos hooks de API e componentes.
    • Backend (#659): zerados os warnings de lint (return-await, type-assertion, e no-console intencionais com disable justificado).
    • Frontend / React Compiler (#660): uso de useWatch em contatos-list para zerar o warning do React Compiler.
    • Resultado: lint 100% limpo em web e api.
v1.25.0
1 de setembro de 2026
✨ Funcionalidades & Novidades
  • Movimentação de itens entre malas em rascunho — fluxo Pull "Puxar" (ZYPA-623, #654):
    • Novo fluxo Pull "Puxar": a partir de uma mala em rascunho é possível puxar unidades de outra mala em rascunho (complementa o fluxo Push "mover para" já existente), permitindo redistribuir itens entre malas antes do envio.
    • Modal stepper de quantidade: seleção da quantidade a mover unidade a unidade, com limite pelo saldo disponível na origem.
    • Etapa de confirmação de impacto: antes de efetivar, o usuário revisa o impacto da movimentação (saldos resultantes em origem e destino).
    • Teste de concorrência no backend garantindo consistência dos saldos quando movimentações competem pelas mesmas unidades (sem estoque negativo / double-spend).
    • E2E críticos (Playwright, web/e2e/revenda-movimentacao.spec.ts) cobrindo Push (mover R1→R2), Pull ("Ver situação" + "Puxar" R1) e cenário negativo (não confirma quantidade acima do saldo da origem).
📚 Documentação & Governança
  • Atualização das docs de domínio (revenda) e do design-system com o padrão do modal stepper de quantidade e a etapa de confirmação de impacto (ZYPA-623, #654).
v1.24.0
1 de setembro de 2026
✨ Funcionalidades & Novidades
  • Padronização de máscara de telefone — `PhoneInput` (ZYPA-648, #649):
    • Componente de entrada dedicado PhoneInput (valor cru no estado/RHF, máscara só no display), integrado aos formulários; exibição/exportação sempre via helper. Telefone passa a sair formatado no export XLSX (nunca cru).
  • Padronização de CPF/CNPJ e CEP — `DocumentInput` + `CepInput` (ZYPA-650, #651):
    • Componentes de entrada dedicados DocumentInput (CPF/CNPJ, com suporte a CNPJ alfanumérico da IN RFB 2.229/2024 via helpers de @/lib/cpf-cnpj) e CepInput, com efeitos colaterais (ex: busca ViaCEP) no onChange do pai. CPF/CNPJ passa a sair formatado no export XLSX.
🐛 Correções & Estabilidade
  • Tratamento de datas em America/Sao_Paulo fim-a-fim (ZYPA-652, #653):
    • Correção estrutural de off-by-one de datas (das ~21h à meia-noite BRT o backend calculava "hoje" como o dia seguinte, quebrando vencido/a vencer, aging, radar e "vendas de hoje"). Introdução do helper canônico hojeSaoPaulo/toISODate/dataPuraParaUTC/inicioFimDoDiaSaoPaulo (api/src/utils/date-br.ts) e espelho no front (web/src/lib/date-utils.ts), conversão dos 9 campos de dia puro para @db.Date com migration SQL versionada (20260901145442_datas_puras_date), e TZ=America/Sao_Paulo no container como defesa em profundidade. Coberto por testes que fixam o relógio às 21h–24h BRT (date-br.test.ts, fuso-sao-paulo.test.ts).
  • Diagnóstico do purge de cache do Cloudflare no deploy (ZYPA-644, #645):
    • O deploy-web.sh passa a exibir o erro real retornado pela API do Cloudflare quando o purge de cache falha, em vez de um aviso genérico, facilitando o diagnóstico de token/permissão.
v1.23.1
1 de setembro de 2026
🐛 Correções & Estabilidade
  • Patch OTel de `fastify` e `ioredis` em produção (ZYPA-646, #647):
    • Correção da regressão de instrumentação OpenTelemetry: registro do hook do import-in-the-middle (register('import-in-the-middle/hook.mjs', ...)) ANTES do carregamento do SDK no entrypoint ESM (instrumentation.ts → otel-sdk.ts, carregado via node --import no Dockerfile.prod). Com isso as instrumentações explícitas voltam a gerar spans de fastify e ioredis (os 4 escopos — http/fastify/ioredis/prisma — validados pelo teste instrumentation-spans.test.ts sob o caminho real de produção).
v1.23.0
1 de setembro de 2026
🛠️ Melhorias & Usabilidade
  • Substituição de `exceljs` por `write-excel-file` + `read-excel-file` (ZYPA-640, #642):
    • Troca da biblioteca de geração/leitura de planilhas Excel, reduzindo footprint de dependências e mantendo o comportamento de importação/exportação.
  • Instrumentações OpenTelemetry explícitas (ZYPA-641, #643):
    • Remoção de auto-instrumentations-node em favor de instrumentações explícitas de http, fastify, prisma e ioredis, evitando detectores de nuvem (GCP/AWS/Azure) não utilizados e tornando os escopos de tracing determinísticos.
  • Refatoração de effects de sincronização form ↔ prop (ZYPA-638, #639):
    • Eliminação de anti-padrões useEffect + setState para sincronizar/derivar estado a partir de props (remount via key + lazy initializer, defaults no onChange), alinhado à regra do React 19 + React Compiler.
📚 Documentação & Governança
  • Padrão de effects de sincronização form ↔ prop (ZYPA-638):
    • Documentação do padrão obrigatório no steering de frontend (proibição de eslint-disable de react-hooks/set-state-in-effect e exhaustive-deps).
  • Gate de qualidade pré-deploy formalizado:
    • Formalização do gate de qualidade pré-deploy (testes + E2E com infra local de pé, garantindo que testes de banco/Redis e o de instrumentação OTel não sejam pulados via skipIf).
v1.22.0
31 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • Financeiro com `CurrencyInput` (#615, PR #625):
    • Padronização de todos os campos monetários do módulo financeiro com o componente CurrencyInput (entrada centavos-first, formatação pt-BR consistente).
  • Remessas — monetários e percentuais (#616, PR #626):
    • Padronização dos campos monetários com CurrencyInput e dos campos percentuais com PercentInput no módulo de remessas.
  • Revenda — monetários e percentuais (#617, PR #627):
    • Padronização dos campos monetários (CurrencyInput) e percentuais (PercentInput) no módulo de revenda.
  • Onboarding e Parceiros (#618, PR #630):
    • Padronização dos campos monetários de onboarding e parceiros com CurrencyInput.
🐛 Correções & Estabilidade
  • Main vermelha (#622, PR #624):
    • Correção de imports do financeiro, ajuste de TENANT_MODELS e do relatório de classificação que quebravam a validação da branch principal.
🧪 Qualidade & Testes
  • E2E jfmortari desconto centavos-first (#628, PR #629):
    • Atualização do fluxo E2E (Playwright) para refletir a entrada de desconto no padrão centavos-first, alinhado à padronização monetária.
v1.21.2
31 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • Alinhamento e Destaque de Totais (#607, PR #609):
    • Alinhamento estrito à direita de Subtotal, Descontos e Total da Venda no comprovante térmico (ComprovanteVendaDialog).
    • Destaque visual integrado sem caixas separadas, com tipografia hierarquizada e bordas pontilhadas limpas.
    • Suporte a alinhamento à direita (alignRight: true) e dimensionamento flexível de fonte no helper addLinha do motor de PDFs (pdf-helpers.ts e pdf-comprovante.ts).
v1.21.1
31 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • Quickwins de Limpeza & Unificação de Helpers (#606, PR #608):
    • Centralização de calcularComissaoFaixa em api/src/utils/acordo.ts eliminando duplicação de regras de negócio entre o acerto de revenda e relatórios analíticos.
    • Unificação da máscara de CPF e CNPJ (numérico e alfanumérico) em api/src/utils/cpf-cnpj.ts reutilizada no gerador de PDFs (pdf-helpers.ts).
    • Remoção de arquivos proxies legados (venda.service.ts e routes/financeiro.ts) com importação direta dos módulos canônicos.
    • Tipagem estrita de remessa-item.mapper.ts sem uso de any ou Record<string, unknown>.
v1.21.0
31 de agosto de 2026
✨ Funcionalidades & Novidades
  • Impressão Térmica Desacoplada (#602, PR #604):
    • Impressão térmica isolada via documento e <iframe> oculto, eliminando 100% das interferências de modais Radix UI, sidebars e regras de DOM.
    • Sugestão dinâmica do nome de arquivo PDF no formato pedido-${numeroVenda}.pdf (ex: pedido-42.pdf).
  • Refatoração & Centralização (#603):
    • Utilitário centralizado printThermalElement em print-thermal-helper.ts eliminando duplicações de templates de impressão térmica.
🐛 Correções & Estabilidade
  • Comprovante Térmico de Venda (#600, #601):
    • Correção na discriminação visual de descontos no comprovante térmico (consolidação de descontos unitários e manuais).
    • Background responsivo sem quebras visuais e eliminação definitiva de truncamento vertical na impressão em bobinas de 80mm e papéis de altura fixa (ex: 89 × 127 mm).
✨ Funcionalidades & Novidades
  • Migrações Físicas de Analytics (#605):
    • Criação e aplicação de migration SQL física (20260831190000_add_analytics_tables) para as tabelas analytics_events, analytics_attributions e analytics_lifecycles no PostgreSQL de produção.
📚 Documentação & Governança
  • Regra de Ouro nº 10:
    • Inclusão formal da obrigatoriedade estrita de migrations SQL físicas no Prisma em AGENTS.md, GEMINI.md e .agents/rules/AGENTS.md.
v1.20.0
31 de agosto de 2026
✨ Funcionalidades & Novidades
  • Fundação de Dados Analíticos & Ingestão Idempotente (#417, PR #597):
    • Modelos Prisma analytics_events, analytics_attributions e analytics_lifecycles no PostgreSQL.
    • Ingestão idempotente com chave única (client_event_id / idempotency_key) para proteção contra duplicidade em retries de rede.
    • Captura first-touch/last-touch de UTMs (utm_source, utm_medium, utm_campaign, etc.) e códigos de parceiros (partner_code) com persistência na conversão de cadastro (signup).
  • Marcos de Ciclo de Vida do Tenant (#418, PR #598):
    • Instrumentação de marcos com preservação imutável da data do primeiro contato:
    • first_romaneio_at: Disparado na criação da 1ª remessa de entrada ou 1ª mala de revenda.
    • first_settlement_at: Disparado na finalização do 1º acerto de remessa (fornecedor) ou acerto de revendedora.
    • first_sale_at: Disparado na confirmação da 1ª venda no PDV.
    • Execução assíncrona e não-bloqueante (fire-and-forget resiliente) em todos os serviços transacionais.
  • Camada Client-Side GTM & Google Analytics 4 (#418, PR #598):
    • Injeção condicional do Google Tag Manager (GTM-TKQSH249) e GA4 (G-BT3Y2C9MDP) no layout Next.js.
    • Utilitário sendGTMEvent com sanitizador estrito de dados pessoais (expurgo automático de CPF, e-mail, telefone, nomes e endereços) para 100% de conformidade com a LGPD.
  • Dashboard MVP Executivo & Funil de SaaS (#419, PR #599):
    • Nova tela executiva em /admin/analytics com seletores de período (7d, 30d, 90d, todo o histórico).
    • KPI Cards com contagens de Signups, Onboardings, Ativações, Acertos e Assinantes pagos.
    • Métricas de eficiência: Time-to-Activation (TTA) e Time-to-Value (TTV) em dias, Taxa de Ativação, Taxa de Acerto e Conversão Trial-to-Paid.
    • Gráfico de funil visual em cascata com taxas de dropoff entre estágios.
    • Tabela de performance detalhada por canais de atribuição e códigos de parceiros.
🛡️ Segurança & Infraestrutura
  • SuperAdmin RBAC (#419, PR #599):
    • Middleware requireSuperAdmin na API Fastify protegendo rotas analíticas para SUPERADMIN_EMAILS ([email protected], [email protected]).
    • Exibição condicional do item "Admin Analytics" no menu lateral apenas para SuperAdmins.
v1.19.0
31 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • Reformulação da Tela de Vendas PDV (#585, PR #592):
    • Foco visual no carrinho de compras e no formulário de pagamento em repouso (remoção da listagem fixa de produtos).
    • Popover/dropdown flutuante absoluto (z-50) na busca por nome/SKU com debounce de 250ms sem deslocar o layout.
    • Bipagem contínua via leitor físico ou scanner de câmera (<BarcodeScanner />) com limpeza automática de input e retenção do foco.
    • Navegação fluida por teclado e acessibilidade WAI-ARIA Combobox (ArrowDown, ArrowUp, Enter, Escape).
    • Validação estrita de saldo de estoque em tempo real na busca e nos controles de incremento do carrinho.
🐛 Correções & Estabilidade
  • Consistência Visual em Remessas (#591, PR #593):
    • Correção no primitivo TableBody ([&_tr:last-child]:border-b-0), preservando barras laterais (border-l-4 border-l-emerald-600) de seleção e conferência no último item da tabela e modal de classificação em lote.
📚 Documentação & Governança
  • Padronização BDD / Gherkin:
    • Formalização de critérios de aceite obrigatórios em formato BDD / Gherkin (Dado... / Quando... / Então...) para refinamentos e issues técnicas.
  • Atualização Canônica de Domínios:
    • Documentação das regras de UX e estoque em tempo real em docs/domains/vendas.md e docs/domains/remessas.md.
v1.18.0
30 de agosto de 2026
🧪 Qualidade & Testes
  • Cobertura E2E Completa (Playwright): 62 testes cobrindo todos os domínios de negócio (Autenticação, Multi-tenant, Parceiros, Remessas, Revenda, PDV, Financeiro/DRE e Responsividade Mobile PWA).
  • Cadastro de Remessas (#582, PR #589):
    • Exibição de resumo detalhado das regras comerciais do parceiro (comissão, base de cálculo, compra mínima e prazos).
    • Switch Alterar acordo? para customização pontual mantendo a área de precificação colapsada por padrão.
  • PDV Visual & Touch (#585, PR #590):
    • Reformulação visual dos cards de carrinho com badges monospace de SKU, visualização clara de descontos e botões de quantidade otimizados para touch/mobile.
  • Idempotência & Resiliência no PDV (#575, PR #580):
    • Header de idempotência em /vendas para evitar cobranças duplicadas em conexões instáveis.
  • PDF de Acerto com Fornecedor (#568):
    • Emissão de romaneio e documento formal de prestação de contas e acerto com fornecedores de consignação.
🐛 Correções & Estabilidade
  • Invalidação de Cache de Estoque (#584, PR #587):
    • Sincronização em tempo real das queries de estoque e dashboard no TanStack Query imediatamente ao abrir, fechar ou finalizar remessas.
  • Modal de Importação de Excel (#583, PR #588):
    • Remoção de seleção redundante de árvore de categorias antes da importação, delegando a classificação para a funcionalidade de lote canônica.
  • Ordenação Determinística no Financeiro (#581, PR #586):
    • Ordenação secundária por createdAt DESC em listagens de despesas garantindo consistência na interface.
v1.17.0
28 de agosto de 2026
✨ Funcionalidades & Novidades
  • Navegação Principal: Item Vendas reposicionado para a 2ª posição no menu (Sidebar Desktop e Bottom Nav Mobile).
  • Hub de Vendas (`/vendas`): Tela de entrada limpa e discreta, preservando privacidade na frente de clientes, com cards destacados para PDV — Nova Venda e Histórico de Vendas.
  • Histórico Dedicado (`/vendas/historico`): Rota analítica completa com métricas, filtros por período, busca debounced, listagem e paginação com botão de retorno.
  • Busca e Cadastro Rápido de Cliente:
    • Hint visual informativo ("Digite pelo menos 2 caracteres para buscar...").
    • Cadastro rápido integrado (Nome + Contato) pré-selecionando o cliente no PDV sem perder itens do carrinho.
🐛 Correções & Estabilidade
  • fix(vendas): centralização responsiva do modal de cadastro rápido de cliente com Dialog no lugar de Sheet bottom (PR #550).
  • fix(infra): ajuste de permissões no script de deploy e suporte dinâmico a múltiplas chaves SSH na VM Oracle Cloud.
v1.16.0
28 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • feat(web): preservar deep links no redirecionamento pós-expiração de sessão (#537, #542)
    • Utilitário url-utils.ts com sanitização contra Open Redirect e proteção contra loops em rotas de auth
    • Preservação do caminho e query params via parâmetro redirect no login após expiração de sessão
    • Suporte completo no DashboardLayoutClient, LoginClient e AuthLayoutClient
  • perf(api): adicionar índices compostos e FKs no Prisma Schema (#533, #538)
    • Otimização de consultas em tabelas críticas (vendas, movimentações, itens, comissões) eliminando sequential scans
  • fix(web): deduplicar requisições concorrentes de refresh token (#534, #539)
    • Mutex com singleton de Promise evitando tempestade de chamadas simultâneas a /auth/refresh em respostas 401 concorrentes
🛠️ Melhorias & Usabilidade
  • refactor(api): unificar envelope de erro e centralizar error handler no Fastify (#535, #540, #541)
    • Envelope plano padronizado { error: string, message: string, details?: unknown } para validações Zod, erros Prisma, rate limiting e AppError
    • Remoção de try/catch manuais redundantes e funções duplicadas nos controllers e rotas
  • refactor(api): modularizar venda.service e financeiro.routes por SRP (#536, #543)
    • Fatiamento de VendaService em serviços especializados (venda-registro, venda-consulta, venda-classificacao, venda-error)
    • Modularização das rotas financeiras (caixa, contas-receber, contas-pagar, despesas, relatorios, analytics)
    • Conformidade estrita com limites de complexidade (<500 linhas) e retrocompatibilidade via index/proxy
v1.15.0
28 de agosto de 2026
🛡️ Segurança & Infraestrutura
  • feat(api): handler global de erros (setErrorHandler) e guards RBAC (#526, #529)
    • Centralização de error handling no Fastify com mapeamento de ZodError (400), AppError e códigos conhecidos do Prisma (P2002, P2025, P2003)
    • Middleware requireRole(['owner', 'admin']) em rotas administrativas sensíveis (LGPD e configurações)
    • Propagação de user.role nos traces ativos do OpenTelemetry
  • feat(api): headers de segurança HTTP (Helmet) e rate limiting global moderado (#525, #530)
    • @fastify/helmet ativo com HSTS (1 ano + subdomínios + preload), nosniff e frameguard
    • @fastify/rate-limit com limite global confortável de 300 req/min por IP/Tenant e proteção estrita em /auth/login (20 req/min)
    • Respostas 429 formatadas no envelope padrão { error: { code: 'RATE_LIMIT_EXCEEDED', message } }
  • feat(web): páginas de erro padronizadas (not-found.tsx e error.tsx) no App Router (#527, #531)
    • not-found.tsx global e (dashboard)/not-found.tsx com identidade visual Zypa
    • Error Boundary (dashboard)/error.tsx com botão de recuperação ("Tentar novamente") sem recarregar a casca da aplicação
🛠️ Melhorias & Usabilidade
  • refactor(web): modularização interna de parceiro-form.tsx e remessa-form.tsx preservando 100% da UX (#528, #532)
    • Fatiamento de parceiro-form.tsx (1.3k+ linhas -> ~380 linhas) em subcomponentes por aba (identificacao, endereco, regras, contatos)
    • Fatiamento de remessa-form.tsx (840+ linhas -> ~330 linhas) em subcomponentes (dados-gerais, precificacao, comissionamento)
    • Preservação integral da jornada do usuário, validações Zod, máscaras e comportamento visual
v1.14.1
28 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(security): blindagem multi-tenant em $transaction usando this.db (#521)
  • refactor(web): padronizar item-form-modal com React Hook Form + Zod e inline errors (#522)
  • fix(infra): corrigir datasource.url no prisma.config.ts em producao e limpeza de warnings (#523)
v1.14.0
28 de agosto de 2026
🛡️ Segurança & Infraestrutura
  • perf(cache): implementação de cache Redis para árvore de classificação com padrão Cache-Aside (#503, #520)
    • Cache por tenant (classificacao:arvore:{tenantId}) com TTL de 10 minutos para a rota pesada GET /classificacao/arvore (985 nós)
    • Invalidação automática nas mutações de segmentos, grupos, categorias, subcategorias e configurações
    • Resiliência com fallback automático para PostgreSQL caso o Redis esteja indisponível
  • feat(api): migração para Prisma 7 com Driver Adapter PostgreSQL nativo (@prisma/adapter-pg) (#504, #509)
    • Desacoplamento do engine C++ para conexão nativa via driver pg com pooling e alta performance
  • feat(api): migração para Zod 4 e padronização de schemas e validações estritas (#504, #510)
  • fix(security): blindagem multi-tenant no Prisma extension e guard de integridade do schema (#511, #512)
    • Inclusão dos modelos ContaPagar, SessaoCaixa, CaixaSaldoInicial e LgpdLog no TENANT_MODELS com suíte de testes de isolamento
  • perf(api): habilitar compressão de payload via @fastify/compress v9.2.0 (#504, #507, #514, #515)
  • chore(deps): alinhamento geral de dependências para versões LTS estáveis (#502, #506, #508, #516, #517)
  • chore(api): configuração do ESLint v10 com Flat Config (eslint.config.js) e limpeza de código (#518, #519)
v1.13.2
28 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(web): cursor pointer global para links, botões e tabs no desktop (#501)
    • Aplicação de cursor: pointer no @layer base para a, button, [role="button"], [type="button"], [type="submit"] e [type="reset"]
    • Feedback tátil visual em abas (TabsTrigger), botões de navegação, cards interativos e ações de logout
    • Aplicação de cursor: not-allowed consistente para elementos e botões desabilitados
v1.13.1
28 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(config): ajustes de UX, linguagem e acessibilidade WCAG na tela de Classificação (#496, #500)
    • Substituição do termo "base curada" por "base pronta" no banner principal
    • Reposicionamento do badge "985 classificações" em formato cápsula outline junto ao título do Card 1
    • Simplificação do título do Card 2 para "Personalizar Estrutura"
    • CTAs mais diretos ("Selecionar classificações" e "Personalizar estrutura") com ícones Lucide
    • Suporte completo a navegação por teclado (role="button", tabIndex={0}, onKeyDown Enter/Espaço e focus-visible) nos cards interativos
    • Inclusão de aria-hidden="true" nos separadores decorativos da taxonomia
v1.13.0
27 de agosto de 2026
🛠️ Melhorias & Usabilidade
  • fix(remessas): reordenar colunas de itens de remessa para Qtd, Custo, Subtotal, Venda (#494, #497)
    • Reorganização lógica das colunas na tabela desktop de itens da remessa para Qtd -> Custo Un. -> Subtotal -> Venda
    • Aumento da clareza operacional durante a conferência física e precificação do lote
  • feat(remessas): contadores por status, aba Todas e remoção de histórico redundante (#495, #498)
    • Endpoint GET /remessas/contadores e badges numéricos em tempo real em todas as abas de status (Todas, Rascunho, Aberta, Fechada, Finalizada)
    • Substituição da aba "Todos" por "Todas" e supressão da aba redundante "Histórico" (unificada na listagem padrão com ações)
    • Filtro por fornecedor/parceiro recalcula dinamicamente tanto os contadores de status quanto a listagem de registros
  • feat(config): reestruturar tela de classificação com comunicação orientada a negócios (#496, #499)
    • Reformulação visual e textual do ClassificacaoHub com linguagem acessível ao lojista ("Estrutura Inteligente de Classificação")
    • Divisão em duas portas de entrada: *Ativar Itens do Catálogo* (985 classificações prontas) e *Personalizar Estrutura e Criar Novos Itens* (Catálogo sob medida)
    • Navegação fluida com botões explícitos de retorno e suíte de testes unitários dedicada
v1.12.0
27 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(remessas): desbloquear scroll no mobile e footer fixo para ClassificarLoteModal (#484, #489)
    • Desbloqueio do scroll vertical em modais no mobile com overflow-y-auto e salvaguarda global no DialogContent base com max-h-[90dvh]
    • Fixação do cabeçalho e rodapé de ações com shrink-0 e layout responsivo de botões touch-friendly (w-full sm:w-auto h-11 sm:h-10)
  • fix(remessas): desbloquear scroll no mobile e cards de preview para PrecificacaoModal (#485, #490)
    • Viewport com scroll suave independente e cards compactos de pré-visualização de preços no mobile (md:hidden) com touch target $\ge 44\text{px}$
    • Preservação da tabela analítica em telas maiores (hidden md:block)
  • fix(remessas): desbloquear scroll no mobile e cards responsivos para FechamentoForm e CompraMinimoForm (#486, #491)
    • Scroll contínuo e layout adaptativo em formulários de fechamento e compra mínima
    • Conversão de resumos tabulares em cards verticais com tipografia legível, badges de baixas/disponibilidade e inputs numéricos táteis
  • fix(remessas): desbloquear scroll no mobile e tabelas responsivas para ImportModal e ReposicaoForm (#487, #492)
    • Container responsivo com rolagem suave em modais de importação de arquivo e formulários de reposição
    • Isolamento de rolagem horizontal em tabelas densas (overflow-x-auto min-w-0) e header reorganizado com scanner de código de barras
  • fix(dialogs): desbloquear scroll e responsividade em ComprovanteVenda, ExtratoCaixa e HistoricoLimite (#488, #493)
    • Desbloqueio de scroll e eliminação de cortes em diálogos essenciais de PDV, Caixa e Crédito
    • Adaptação de layout para visualização sem corte em telas móveis e pequenos dispositivos
v1.11.0
27 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(mobile): modal de classificação em lote com cards touch-friendly e seleção mestre mobile (#466, #475)
    • Lista de cards verticais clicáveis em viewports mobile com touch target ≥ 44px
    • Barra de seleção rápida com checkbox mestre ("Selecionar todos") e contador contextual
    • Grid de filtros de taxonomia responsivo e tabela clássica preservada no desktop
  • feat(mobile): tabela de itens da remessa híbrida com cards expansíveis no mobile (#467, #476)
    • Visualização em cards no mobile (md:hidden) exibindo descrição, conferência touch-friendly, valores e seções colapsáveis ("Ver detalhes" / "Ocultar detalhes")
    • Respeito integral às travas de edição de campos por status da remessa (fieldLocks)
    • Tabela completa de dados preservada em visualização desktop (hidden md:block)
  • feat(mobile): adaptação responsiva do detalhe de remessas e status stepper (#468, #477)
    • Banner de itens pendentes de classificação em layout coluna no mobile e linha em desktop
    • Barra de ações de status em grid de 2 colunas no mobile com botões primários em col-span-2
    • Abas de navegação de remessa e status stepper com scroll horizontal suave
  • feat(mobile): scroll horizontal e prevenção de encolhimento de abas de remessa (#469, #478)
    • TabsList com overflow-x-auto e triggers com shrink-0 nos 6 filtros de status de remessa
  • feat(mobile): histórico de sessões de caixa em cards responsivos (#470, #479)
    • Cards com grid de 3 colunas para fundo inicial, saldo final e diferença (cores semânticas)
    • Botão acessível de abertura do drawer de conferência de turno
  • feat(mobile): seletor de períodos híbrido com dropdown no mobile e botões em desktop (#471, #480)
    • Dropdown <Select> em telas móveis (sm:hidden) e botões de preset em telas maiores (hidden sm:flex)
    • Inputs de data personalizada em grid responsivo de 2 colunas
  • feat(desktop): padronização de breakpoints e estabilização de altura mínima em gráficos (#472, #481)
    • Grid de gráficos em md:grid-cols-2 eliminando salto brusco em tablets/viewports intermediárias
    • Prevenção de CLS (*Cumulative Layout Shift*) com empty states e skeletons fixados em 240px e 280px
  • feat(mobile): agrupamento visual em seções e layout mobile em ItemFormModal (#473, #482)
    • Segmentação do formulário em 3 cards visuais: *Identificação do Item*, *Quantidade & Preço* e *Classificação do Produto*
    • Grid responsivo de valores (grid-cols-1 sm:grid-cols-3) e rodapé com botões de largura total no mobile
  • feat(mobile): scroll horizontal nas abas de Parceiros e Revenda (#474, #483)
    • TabsList com overflow-x-auto e shrink-0 nas abas de segmentação de parceiros e malas em campo
v1.10.0
26 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(remessas): seleção de produtos no modal de classificação em lote (#464)
    • Tabela com multiseleção por checkboxes individuais e checkbox mestre (selecionar todos / desmarcar todos / estado indeterminado)
    • Contador visual dinâmico X de Y selecionados e botão de aplicação contextual Aplicar a X itens
    • Exibição de SKU/barcode e classificação atual ou badge "Sem classificação"
    • Integração no detalhe da remessa e na tabela de itens com pré-seleção inteligente de pendências
    • Validações de seleção mínima e grupo obrigatório com feedback visual via toast
v1.9.0
26 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(remessas): métricas de totais (itens, unidades, custo e venda), data de acerto e alerta de classificação no cabeçalho (#462)
  • feat(remessas): precificação em lote com seleção de itens e remoção da faixa de fator (#460)
  • test(remessas): adicionar testes unitários para mapeamento de segmento nos DTOs de itens e mala (#449)
🐛 Correções & Estabilidade
  • fix(remessas): renderizar RemessaForm no detalhe para permitir edição sobreposta de remessa em rascunho (#458)
  • fix(parceiros): carregar contatos na edição e corrigir formatação e largura mínima na listagem (#456)
  • fix(vendas): corrigir warnings de missing key prop em BuscaItem e PdvCarrinho (#450)
  • fix(remessas): exibir árvore completa de classificação com segmento e corrigir preenchimento inicial na edição do item (#446)
🛠️ Melhorias & Usabilidade
  • refactor(remessas): migrar ItemFormModal para react-hook-form com reset reativo (#451)
  • refactor(remessas): extrair e unificar mapper toItemResponse entre remessa-crud e remessa-itens services (#448)
  • docs: formalização de regras de subagentes operacionais e code review sem auto-aprovação
v1.8.0
26 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(remessas): conferência visual de itens de remessa com toggle unitário e lote (#444)
    • Coluna conferido na tabela itens_remessa (migration)
    • Endpoints PATCH /remessas/:id/itens/:iid/conferir e POST /remessas/:id/itens/conferir-todos
    • Painel de progresso com barra percentual, botões "Marcar todos" / "Desmarcar todos"
    • Atualização otimista com rollback no frontend (UX instantânea)
    • Realce visual verde em itens conferidos (bg-emerald + border-l)
    • Validação: conferência permitida apenas em remessas com status rascunho ou aberta
    • Compatibilidade com campo legado revisado da POC via Zod transform
    • 10 testes de integração cobrindo todos os cenários
  • feat(vendas): progressive disclosure por cliente e cadastro rápido em nova venda (#433)
    • Campos condicionais revelados conforme seleção de cliente
    • Cadastro inline de novo cliente sem sair do fluxo de venda
  • feat(remessas): reordenar base de cálculo e aprimorar faixas de comissão (#437)
    • Drag-and-drop na ordenação de bases de cálculo
    • Faixas de comissão com validação de sobreposição
  • feat(web): padronizar inputs e formatadores monetários e percentuais (#435)
    • Componentes CurrencyInput e PercentInput com máscara e validação
    • Helpers formatCurrency e formatPercent centralizados
  • feat(onboarding): adicionar etapa de habilitar classificação de peças no checklist (#424)
  • feat(remessas): alertar quando não houver classificações habilitadas com atalho nos modais (#422)
🐛 Correções & Estabilidade
  • fix(remessas): permitir alteração de preço de venda e taxonomia em remessa aberta (#430)
  • fix(remessas): tolerar body vazio em DELETE e evitar content-type indevido (#434)
  • fix(estoque): isolar remessas em rascunho e estruturar matriz 2x2 (#432)
  • fix(revenda): limitar pageSize para 100 na busca de revendedoras e flexibilizar max 200 na API (#428)
  • fix(links): direcionar atalhos de classificação para /config?tab=classificacao (#426)
  • fix(remessas): tratar mapeamento da resposta itens_validos da API no preview de importação (#420)
v1.7.1
24 de agosto de 2026
🛡️ Segurança & Infraestrutura
  • feat(sre): aprimoramento da observabilidade OpenTelemetry para o Grafana Cloud (#415)
    • Correlação automática Trace-to-Logs com injeção de trace_id e span_id no logger Fastify/Pino
    • Enriquecimento de contexto com atributos semânticos tenant.id e user.id nos spans OTel
    • Habilitação de tracing granular nativo no Prisma Client para queries SQL
    • Coleta de métricas de host (CPU, RAM, Disco, Load) via hostmetrics receiver no OTel Collector
v1.7.0
24 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(vendas): suporte a impressão térmica de cupom não-fiscal (58mm/80mm ESC/POS) para PDV e Caixa (#374)
    • Layouts térmicos @media print para cupom de venda e extrato de fechamento de turno/gaveta
    • Seletor de largura de bobina (58mm portátil / 80mm balcão) e disparo de window.print() isolado
    • Integração no pós-venda PDV (PdvSucesso), detalhes da venda (venda-detail-client) e fechamento de caixa (sessao-detalhe-drawer)
  • feat(parceiros): diferenciação de ações de remessas e ficha para fornecedor exclusivo (#334)
    • Ação contextual primária "Ver remessas" para fornecedores exclusivos
    • Ação "Ver ficha" restrita a clientes e revendedoras; limite de crédito ocultado para fornecedores
  • feat(auth): gestão do perfil e troca segura de e-mail com OTP em 2 etapas (#410)
    • Edição de nome de usuário e fluxo de double opt-in com código de 6 dígitos via e-mail e rate limit
    • Microcopy explicativo no formulário de perfil orientando que dados da empresa são geridos na aba Negócio
  • feat(infra): automação de backup noturno do PostgreSQL com criptografia AES-256 e Disaster Recovery (#376)
    • Scripts backup-db.sh (pg_dump -Fc), restore-db.sh com integridade SHA-256 e agendamento crontab
    • Suporte a Object Storage de custo zero (OCI Always Free / Cloudflare R2) e documentação de DR e SRE
  • docs: atualização de especificações nos domínios de vendas, financeiro, parceiros, auth e config
v1.6.0
24 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(auth): padronização da tela de entrada com identidade visual no verde institucional Zypa (#390)
    • Gradiente verde corporativo no layout de autenticação (login, signup, recuperar-senha, verificar-email e excluir-conta)
    • Logotipo e slogan de alto contraste em tipografia branca/esmeralda
  • feat(remessas): modal de inclusão/edição de item com taxonomia em 4 níveis e scanner 1080p aprimorado (#397)
    • Cadastro de peças em remessas abertas com seleção hierárquica (Segmento ➔ Grupo ➔ Categoria ➔ Subcategoria)
    • Scanner de câmera com suporte full HD e normalização de código de barras
  • feat(web): ocultar data de vencimento em compra direta e rotular data de acerto (#336)
🐛 Correções & Estabilidade
  • fix(config): sincronização do nome do negócio no tenant e reatividade na store auth em tempo real (#337)
    • Atualização atômica de Tenant.nome e Tenant.nomeNegocio no backend
    • Atualização imediata do Sidebar e Header sem necessidade de reload ou re-login
    • Limpeza de campo redundante de saudação em Dados do Negócio
  • fix(remessas): normalização de barcodes contra notação científica e templates XLSX/CSV (#396)
  • fix(classificacao): nós personalizados criados pelo MEI nascem habilitados por padrão (#394)
  • fix(classificacao): permitir quebra de linha em nomes longos de nós de taxonomia (#393)
  • fix(parceiros): ajuste de layout de acordos comerciais e ordenação de campos (#392)
  • fix(parceiros): ocultar percentual de comissão quando revendedora for de margem livre (#391)
  • fix(remessas): blindagem da interface de compra direta para não exibir ações ou abas de acerto (#398)
  • fix(db): migration para hard-lock e sessões de caixa com trava de zero-drift no CI (#388)
🛠️ Melhorias & Usabilidade
  • chore(dashboard): remoção do hook useOnboardingStatus (dead code) (#313)
  • ci: configuração do workflow de testes para execução estritamente manual (workflow_dispatch), prevenindo esgotamento de créditos (#408)
  • docs: atualização de especificações nos domínios de config, parceiros e remessas com as regras da Milestone M14
v1.5.0
22 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-353): aprimoramento da identidade visual e slogan institucional na tela de entrada (#386)
    • Novo componente modular BrandHero com ícone oficial, logotipo tipográfico estilizado e slogan em destaque
    • Otimização de imagens com next/image e suporte a acessibilidade (WCAG 2.1 AA)
  • feat(ZYPA-378): despacho de maletas com seleção de data de acerto e teto de consignação (#381)
    • Data de acerto flexível e validação do teto máximo de permanência das peças consignadas
    • Alertas reativos na montagem de mala no frontend
  • feat(ZYPA-379): alinhamento do Radar de Risco com faixas canônicas e ações de acerto (#382)
    • Apuração em tempo real sob demanda em 3 faixas (vencida, em_risco e ok)
    • Interface com filtros por ponta (Revendedoras vs Fornecedores) e botões diretos de acerto
  • feat(ZYPA-364): ajustes em tipos de acordo de parceiros, remessas e malas (#383)
    • Microcopy claro e direto para Margem Livre, Compra Mínima e Comissão Fixa
    • Restrição rigorosa de papéis entre Fornecedor e Revendedora
  • feat(ZYPA-373): módulo dedicado de Frente de Caixa físico (turnos, suprimento, sangria e fechamento cego) (#373)
  • feat(ZYPA-372): bloqueio rígido (Hard-Lock) configurável por inadimplência em vendas a prazo (#372)
  • feat(ZYPA-371): transferência direta de peças entre rascunhos de malas (#371)
  • feat(ZYPA-370): reposição de itens em remessa de fornecedor aberta (#370)
  • feat(ZYPA-369): seletor de avarias e demonstrativo de responsabilidade do fornecedor (#369)
  • feat(ZYPA-368): base de cálculo da comissão de fornecedor e comissão por faixa marginal (#368)
  • feat(ZYPA-367): trilha de auditoria e histórico de limite de crédito (#367)
  • feat(ZYPA-366): página pública de exclusão de conta Play Store e LGPD (#366)
🛠️ Melhorias & Usabilidade
  • refactor(ZYPA-377): padronização da taxonomia em 4 níveis nativos unificados (#380)
    • Fixação da raiz estritamente em Segmentos (Nível 1) e eliminação da bifurcação legada
  • docs: consolidação definitiva da Documentação Arquitetural e Regras Canônicas v5.0
  • docs(rules): formalização do gate de code review obrigatório com o subagente revisor
🐛 Correções & Estabilidade
  • fix(ZYPA-384): reconciliação de apontamentos do code review (#385)
    • Compatibilização de query params do radar (janela_default_dias e janela)
    • Hard-lock de limite de crédito na abertura de maletas (abrirMala)
    • Remoção de código morto na taxonomia e alinhamento de contagem de nós (985 nós curados)
v1.4.1
20 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-352): unificar seções de acordo comercial e adicionar máscara monetária (#356)
    • Unificação das configurações de acordo comercial em bloco único para fornecedores e revendedoras
    • Restrição de compra_direta exclusivamente para fornecedores (bloqueio no formulário e validação 422 na API)
    • Fixação automática de devolução livre sob comissão fixa (com card explicativo e sem compra mínima)
    • Validação de compra mínima sobre valor habilitada somente sob consignação por margem
    • Máscara e formatação monetária (BRL) para campos de limite de crédito (maskCurrency / parseCurrencyInput)
v1.4.0
20 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-354): revisar tipos de acordo de revendedoras e auto-preenchimento de mala (#355)
    • Isolamento de tipo de acordo para revendedora (consignacao_comissao e consignacao_margem), impedindo compra_direta para revenda
    • Reatividade no formulário de Nova Mala (/revenda), auto-preenchendo a precificação e comissão padrão ao selecionar a revendedora
    • Limpeza e preservação robusta de tipoAcordoPadrao e prazos de ciclo (prazoCicloDias = 30 e folgaSegurancaDias = 10)
    • Exibição de tipo de acordo e comissão padrão na ficha de detalhes do parceiro
🐛 Correções & Estabilidade
  • fix(infra): correção de permissões de persistência Redis (999:1000) e healthchecks do Nginx e OpenTelemetry Collector (#351)
  • ci: alteração do trigger de execução de testes de push/PR para manual workflow_dispatch
v1.3.0
20 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-338): estrutura de classificação em 4 níveis com habilitação inteligente e catálogo (#344)
    • Base curada de mercado pré-provisionada com 1.536 nós (Segmento → Grupo → Categoria → Subcategoria)
    • Lazy loading sob demanda com contagem agregada de descendentes ativos
    • Modelo de interação por Dois Gestos: expandir/navegar vs habilitação com diálogo ("Só Este" vs "Cascata")
    • Confirmação de desabilitação em cascata informando a quantidade dinâmica de subitens impactados
    • Catálogo completo para criação e personalização de itens sob medida com seletores de pais em cascata
    • Alternância configurável de complexidade (2 Níveis vs 4 Níveis)
  • feat(ZYPA-339): unificação da gestão de classificação no novo Hub e remoção de abas obsoletas (#343)
  • feat(ZYPA-335): exibição do Tipo de Devolução junto ao Tipo de Acordo na listagem de parceiros (#342)
  • feat(ZYPA-332): cadastro de contatos em memória antes de salvar novo parceiro com checkbox WhatsApp (#341)
  • chore(infra): scripts de automação de deploy standalone via linha de comando (deploy-api.sh, deploy-web.sh, deploy-all.sh)
🐛 Correções & Estabilidade
  • fix(ZYPA-331): remoção da contagem no título da tela de cadastro de parceiros (#340)
v1.2.0
19 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-327): exibir mensagem de erro do backend no toast via helper centralizado (#328)
    • Criado getApiErrorMessage(error, fallback) — extrai data.message da API quando disponível
    • 36 locais com toast genérico substituídos pelo novo padrão
    • 10 testes unitários cobrindo todos os cenários
🐛 Correções & Estabilidade
  • fix(ZYPA-329): form de remessa agora seleciona operação ANTES do fornecedor, igual POC (#330)
    • Fornecedores filtrados dinamicamente por operação (compra → só compra_direta, consignação → margem/comissão)
    • Select de fornecedor desabilitado até escolher operação
    • Operação e fornecedor read-only em edição (acessível via aria-disabled)
v1.1.0
18 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-320): cards visuais de operação/precificação e chips de comissão no form de remessa (#324)
  • feat(ZYPA-319): filtro de fornecedores, pré-preenchimento do acordo e toggle de compra mínima (#323)
🐛 Correções & Estabilidade
  • fix(ZYPA-325): corrigir cadastro de parceiros — regra 10a e divergências com POC (#326)
  • fix(ZYPA-318): remover campos legados acordoDevolucaoTipoOverride/tipoAcordoRemessa (#322)
  • fix(ZYPA-315): lógica condicional de tipo de acordo no form de parceiro (#316)
v1.0.2
17 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-301): adicionar tagline abaixo da logo na tela de entrada (#310)
🐛 Correções & Estabilidade
  • fix(ZYPA-303): corrigir logout para revogar cookie e limpar histórico (#306)
  • fix(ZYPA-302): remover redirect forçado para /setup e corrigir validação CPF (#307)
  • fix(ZYPA-305): corrigir erro ao criar remessa (#308)
  • fix(ZYPA-304): remover criptografia CPF/CNPJ e validar unicidade (#309)
v1.0.1
13 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(ZYPA-299): corrigir bugs na rota /setup (onboarding) (#300)
v1.0.0
12 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-259): regras defensivas de integridade em remessas (impedir acerto sem itens, fechamento duplicado)
  • feat(ZYPA-261): classificação em lote, scanner e import com classificação automática
  • feat(ZYPA-260): SKU automático, grade com incremento 5¢, linha separada na precificação, PDF completo
  • feat(ZYPA-268): desconto por item no PDV, cancelamento/estorno de vendas com proteção
  • feat(ZYPA-267): relatórios analíticos de vendas, classificação/reclassificação, vendas na ficha parceiro
  • feat(ZYPA-269): compartilhamento WhatsApp de comprovantes, filtros avançados, proteção de edição
  • feat(ZYPA-276): ficha do cliente financeiro com histórico e aging
  • feat(ZYPA-277): seção previsto no financeiro, PDFs de relatórios financeiros
  • feat(ZYPA-278): exportações XLSX (financeiro, parceiros), projeção avançada, extrato agrupado
  • feat(ZYPA-285): ficha revendedora completa, endereço estruturado com ViaCEP
  • feat(ZYPA-286): melhorias UX parceiros — busca expandida, contadores, filtro status
  • feat(ZYPA-287): polish parceiros — enforcement de principal, exportação XLSX, avatar
🐛 Correções & Estabilidade
  • fix(ZYPA-294): status de conta_receber não atualizava após pagamento parcial
  • fix(ZYPA-294): vendas canceladas apareciam no DRE (filtro de status ausente)
  • fix(ZYPA-294): validações de concorrência em descontos por item
  • fix(ZYPA-294): cache leak no logout — isolamento multi-tenant corrompido entre sessões
🛠️ Melhorias & Usabilidade
  • docs: atualizar documentação de todos os domínios pré-release v1.0.0
  • test: adicionar testes de desconto por item, percentual e concorrência
v0.3.0
12 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-M11): verificar/completar funcionalidades frontend (#251)
  • feat(ZYPA-216): formulário de entrada de remessa com acordo completo (#237)
  • feat(ZYPA-215): edição de acordo da mala em rascunho (#245)
  • feat(ZYPA-213): dashboard de vendas com resumo do dia/mês e ranking (#250)
  • feat(ZYPA-211): fluxo de exclusão de conta LGPD (solicitar, reativar, purgar) (#246)
  • feat(ZYPA-210): tela de remessas finalizadas com histórico de pagamento (#249)
  • feat(ZYPA-209): dashboard financeiro com gráficos de lucratividade (#248)
  • feat(ZYPA-208): ficha do cliente com aging e recebimento em lote (#247)
  • feat(ZYPA-207): habilitação de classificação em cascata (#244)
  • feat(ZYPA-206): recebimento em lote de fiado (#243)
  • feat(ZYPA-205): resumo comercial (métricas de vendas por período) (#239)
  • feat(ZYPA-204): relatório de lucratividade do período (#238)
  • feat(ZYPA-203): relatório de desempenho de revendedoras (#242)
  • feat(ZYPA-202): relatório de desempenho de fornecedores (#241)
  • feat(ZYPA-201): relatório aging de fiado (#240)
  • feat(ZYPA-200): usar overrides de acordo por remessa no acerto (#235)
  • feat(ZYPA-199): adicionar responsabilidade_avaria ao parceiro (#234)
  • feat(ZYPA-198): adicionar colunas faltantes na tabela remessas (#233)
  • feat(ZYPA-227): adicionar campos mostruário, baixa/avaria em itens_remessa (#231)
🐛 Correções & Estabilidade
  • fix(ZYPA-197): corrigir onboarding bypass, checklist negócio e email boas-vindas (#252)
  • fix(ZYPA-228): adicionar desconto total e campos faltantes na tabela vendas (#236)
  • fix(ZYPA-226): corrigir divergências de lógica no cálculo de acerto de remessa (#232)
  • fix(ZYPA-229): adicionar precoCustoUnit e descontoValor ao ItemVenda (#230)
  • fix: corrigir problemas de merge M11 (cascata duplicada, saldo, endpoints perdidos)
📚 Documentação & Governança
  • docs(ZYPA-197): atualizar fluxo signup (email boas-vindas) e critério negocioConfigurado
  • docs: atualizar domínios com endpoints e funcionalidades da M11
  • docs: atualizar documentação de domínios e analise de gaps
  • docs: adicionar passo de configuração do .env para dev local
  • docs: melhorar setup local no README com npm install explícito
🛠️ Melhorias & Usabilidade
  • chore: corrigir erros de merge M11 (duplicações e imports)
  • chore: atualizar lockfiles para v0.2.1
v0.2.1
11 de agosto de 2026
🐛 Correções & Estabilidade
  • fix(ZYPA-184): invalidar cache do checklist ao completar etapas + cross-domain (#195)
  • fix(infra): permitir RSC prefetch files (__next.*.txt) no .htaccess
  • fix(infra): resolver crash QEMU no build ARM64 do Prisma (#194)
📚 Documentação & Governança
  • docs: regras de trailing slash, BUILDPLATFORM, scanner e invalidação cross-domain
v0.2.0
11 de agosto de 2026
✨ Funcionalidades & Novidades
  • feat(ZYPA-189): scanner de código de barras via câmera (#193)
  • feat(ZYPA-184): checklist de primeiros passos no dashboard (#187)
  • feat(ZYPA-183): saldo inicial e contadores no onboarding (#186)
  • feat(ZYPA-182): recuperação de senha via código 4 dígitos (#185)
🐛 Correções & Estabilidade
  • fix(ZYPA-191): trailing slash corrige ERR_FAILED em rotas na Hostgator (#192)
  • fix(ZYPA-188): melhorar empty states e hints para usuários leigos (#190)
  • fix(frontend): cursor pointer nos itens do menu do usuário
🛠️ Melhorias & Usabilidade
  • docs: criar índice da documentação e glossário de termos de domínio
  • docs: documentar Grafana Cloud CLI + API REST no steering
v0.1.0
10 de agosto de 2026

Primeira versão do Zypa Web — migração completa da POC Flutter/Supabase para a stack web definitiva.

✨ Funcionalidades & Novidades
  • Autenticação JWT (signup, login, refresh, recuperação de senha, verificação por email)
  • Multi-tenant com isolamento por tenant_id
  • CRUD de parceiros (fornecedores + revendedoras) com contatos
  • Gestão de remessas (entrada, precificação, acerto, devolução, PDF romaneio)
  • Gestão de revenda (malas, picking, acerto de revendedora, PDF acerto)
  • Registro de vendas com condições de pagamento
  • Financeiro completo (DRE, contas a pagar/receber, despesas, extrato, projeção de caixa)
  • Dashboard analytics (vendas/mês, ticket médio, ranking produtos)
  • Radar de remessas em risco
  • Estoque central com categorias e classificação
  • Contadores e numeração humana (NR-001, ML-001, etc.)
  • LGPD (exportação e anonimização de dados pessoais)
  • Compartilhamento via WhatsApp
  • PWA instalável (manifest + service worker)
🛡️ Segurança & Infraestrutura
  • Deploy backend: Oracle Cloud ARM A1 (Docker + Nginx + SSL Let's Encrypt)
  • Deploy frontend: Hostgator (static export)
  • CI/CD: GitHub Actions (lint, test, build, deploy)
  • Observabilidade: OpenTelemetry + Grafana Cloud
  • DNS: Cloudflare (proxy + cache + WAF)
🧪 Qualidade & Testes
  • 867 testes (Vitest)
  • TypeScript strict em toda a codebase
  • ESLint configurado para API e Frontend
  • Arquitetura modular (services < 500 linhas, componentes < 300 linhas)
🐛 Correções & Estabilidade
  • fix(ZYPA-179): propagar erro quando envio de email falha
  • fix(ZYPA-144): padronizar UX (error states, noValidate, aria-invalid, debounce)
  • fix: centralizar .env na raiz + lazy email service
  • fix: deploy frontend via SSH key + rsync