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 (.xlsxe.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.
- Estruturação do modal de importaçã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-configem 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 endpointPOST /remessase 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.
- Aplicação da regra canônica de resolução de preço de repasse (
- 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-labelsde 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
comissaoFaixasem 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.breapi.zypa.com.bre integração de envio de email via Resend. - Hardening de Testes (PR #1022, #1023): Isolamento de
SMTP_FROMno teste dofrompadrão do serviço de email (determinismo independente do.envlocal) 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.
- Renderização Determinística em Canvas 2D: Implementação do renderizador nativo em Canvas 2D (
📦 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 (
apieweb), mantendo compatibilidade de isolamento, tipagem e estabilidade na suíte de testes unitários e de integração.
- Atualização do ecossistema Vitest para v5.x no monorepo (
- Atualizações de Dependências:
web: Bump@playwright/testpara 1.63.0 (#988),lucide-reactpara 1.47.0 (#991).api: Bump@opentelemetry/sdk-nodepara 0.222.0 (#996),pdfkitpara 0.20.2 (#994),zodpara 4.6.5 (#990),tsxpara 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.
- 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
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()eclients.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.
- Service Worker Reativo e Skip Waiting: Configuração do Service Worker para ativação imediata com
- 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 noshareComprovanteImage, eliminando fundos transparentes e quebras visuais em temas escuros e dispositivos móveis.
- Container Offscreen Isolado e Estilo Confiável: Renderização de comprovantes com fundo branco sólido (
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").
- Botão Compartilhar em Destaque no PDV: Na tela de finalização de venda (
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".
- 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 (
- 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 itensePreç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.eTOTAL 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.
- Condições Comerciais no Cabeçalho: Exibição clara e contextual de
- 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.
- 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 (
- 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_entradaint?) no modelRemessacom migration SQL versionada e geração automática sequencial através do serviço de contadores (proximoNumero(tenantId, 'entrada')), identificando formalmente as entradas comoENTRADA #X. - Romaneio de Entrada com Colunas e Totais Completos: Exibição do identificador sequencial
ENTRADA #Xno 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).
- Identificador Sequencial Automático: Implementação do campo
- 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 *eData do Acertocom 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.tscom 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.
- 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
- 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 aceitarvalorTotal: 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.
- Suporte a Devolução 100% (Saldo R$ 0,00): Atualização do schema de validação (
- 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) eleading-normalno componenteInput(input.tsxeglobals.css), eliminando o truncamento e desnível vertical de textos em campos de data nativos no Safari iOS.
- Padronização Visual em Dispositivos Móveis: Injeção de resets CSS estritos para pseudo-elementos WebKit (
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) commin-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).
- CSS Reset A4 Estrito para Impressão: Injeção de regras estritas no helper de impressão
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
formatQuantitycom suporte a padrão pt-BR, alinhamentotabular-numse suporte no componenteInlineQuantidadeStepperpara 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) emRomaneioEntradaDialog,RomaneioDevolucaoDialog,RomaneioRepasseDialogeReciboAcertoRemessaDialog. - 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+.
- Formatação de Quantidades e Tipografia Numérica: Nova função utilitária
- 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.
- Sincronização de Progresso de Setup: Invalidação automática da chave de cache
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 (
RomaneioRepasseDialogepdf-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,/radare/estoque) para os termos canônicosRevendedor(a)(singular) eRevendedores(as)(plural).
- 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 (
- 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_keyvia headerIdempotency-Keyou 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.
- Idempotência em Contas a Pagar e Receber (#935): Mecanismo de chave de idempotência (
- 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/liveverifica se o processo Fastify está ativo;/health/readyvalida 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
skipno plugin de rate limiting para todos os endpoints/health*, prevenindo falso positivo de sobrecarga (HTTP 429) por ferramentas de monitoramento contínuo.
- Deep Healthcheck com Métricas de Latência (`/health`): Verificação ativa e concorrente da integridade e conectividade com PostgreSQL (
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 oCHANGELOG.mdem 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 íconeSparkles, 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/dashboardpara usuários logados ou/loginpara 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-financeiroeuse-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 dearredondarMoeda.
- Isolamento Multi-tenant com `getTenantPrisma` (#912): Unificação estrita de todos os 12 services financeiros sob
- 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 tipoSingleResponse<T>e adaptação dos hooksuse-parceiroseuse-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.
- Regras 18, 19 e 20: Documentação formal das diretrizes arquiteturais para
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
Landmarke link direto para/financeiro/contasno checklist de Primeiros Passos do dashboard, expandindo o onboarding para 6 etapas dinâmicas (8 no total).
- Etapa de Gerenciamento de Contas e Saldo Inicial (#898): Inclusão da etapa *"Gerenciar contas - Incluir Saldo Inicial"* com ícone
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.
- Suporte a regras de compra mínima configuráveis por parceira e por mala de revenda (
- 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.
- Inclusão de campo de busca dinâmico com suporte a filtragem reativa (
🐛 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.
- Implementação de invalidação atômica e não-bloqueante (
- 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 deFichaClienteeFichaRecebimentosTab.
- Reestruturação do grid no formulário de parcelas (
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.jspara não interceptar requisições especulativas com headerspurpose: prefetchousec-purpose: prefetchoriginadas 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.
- Ajuste no
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
RemessaDetaile documentação canônica emdocs/domains/remessas.md.
- Ocultação dos botões "Imprimir Acerto" e "PDF Acerto" na barra de ações para entradas finalizadas em modo Compra Direta (
- Sincronização de Documentação Financeira Canônica:
- Registro formal no
docs/domains/financeiro.mddos padrões de blindagem aritmética anti-floating-point em centavos inteiros e privacidade de saldo noSeletorContaFinanceira(hideBalance).
- Registro formal no
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.tseapi/src/utils/money.tscom conversão de precisão em centavos inteiros (toCents,toReal,somarMoeda,subtrairMoeda,arredondarMoedaedividirEmParcelas). - Distribuição de parcelas determinística com resíduo acumulado na última parcela, eliminando divergências de dízima periódica.
- Criação dos módulos canônicos
- 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):
SeletorContaFinanceiraagora 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-nowrapem valores monetários, eliminando colisão e quebras indesejadas no romaneio.
- Redistribuição percentual de colunas e inclusão de
- Visualização Completa de Acordo e Otimização A4/Mobile (Issue #878 / PR #881):
- Enriquecimento do DTO
RemessaResponse.parceirocom 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.
- Enriquecimento do DTO
🛡️ 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 ──→ finalizadasem 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.
- Transição direta de status
- 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.tseweb/src/lib/gtm.ts, consolidando todas as chamadas e testes exclusivamente no padrão unificado@/lib/analytics(#866).
- Remoção definitiva dos arquivos legados
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/analyticsdesacoplando 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).
- Criação do módulo centralizado
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.identifycomtenant_id,tenant_nome,roleenome), 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).
- Identificação automática de usuários e tenants nas gravações de sessão (
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.
- 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
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
useItemHighlightpara 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.
- Implementação de hook
- Digitação Direta e Atualização Otimista de Quantidades (#839 / PR #845):
- Criação do componente
InlineQuantidadeStepperpermitindo 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.
- Criação do componente
- 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.
- Implementação de seleção automática de texto (
- 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 viaEntere fechamento viaEscapenos 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).
- Navegação completa por teclado com
- 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.
- Otimização de áreas de toque em botões de ação e steppers no mobile utilizando pseudo-elementos invisíveis expandidos e
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.
- Remoção do caractere
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.
- Implementação da ação "Puxar" no modal de situação da peça e no painel de montagem de mala/repasse rascunho (
🛡️ 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.
- Parametrização dinâmica do prazo de exclusão/quarentena de conta via variável de ambiente
- 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
/configuracoespara/configno middleware do frontend Next.js.
- Redirecionamento permanente de
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.
- Integração dos eventos de privacidade e solicitação/cancelamento de exclusão de conta ao
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.
- Exibição condicional dos itens de menu de SuperAdmin (Analytics e Auditoria) na gaveta de navegação mobile (
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.
- Alinhamento dos enums de módulos de exportação entre API e Web (
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.
- Reorganização e aprimoramento de textos na aba de Privacidade & LGPD (
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.
- Simplificação do checklist de primeiros passos no dashboard para 5 etapas essenciais (
- 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"*.
- Atualização do slogan institucional nos templates de e-mail (
- 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-contaem 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.
- Atualização do prazo de carência para exclusão definitiva de conta para 60 dias (
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 idna 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 cookierefreshTokencom redirect seguro. - L1 (Structured Logging Pino): Implementação de logger Pino global
zypa-apiemapi/src/lib/logger.tssubstituindo chamadas deconsole.errorem serviços de Auth, Venda, Revenda e Auditoria.
- H2 (Email Fallback Guard): Bloqueio de inicialização em produção se
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.
- Exibição de classificação taxonômica no detalhe da venda em
- 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.
- Agrupamento em venda única consolidada no acerto de mala, fallback triplo de preços, taxonomia completa e auditoria
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 segundonpm cipornpm prune --omit=dev --ignore-scriptsnoapi/Dockerfile.prod, reduzindo drasticamente o tempo de compilação Docker em ARM64. - Otimização do script
scripts/deploy-api.shcom build direcionado exclusivo ao container da API (docker compose -f docker-compose.prod.yml build api) e exportação deDOCKER_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.mde.kiro/steering/infra.md.
- Adição de BuildKit Cache Mounts (
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}ouEmitido 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.tsepdf-comprovante.test.ts.
- Formatação do emitente à direita como
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.listarLogspara 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
tipoAcordono cálculo de acerto de remessa (RemessaAcertoService.calcularAcerto), utilizando o helper canônicoderivarTipoAcordo(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
tipoOrigemna criação de itens de remessa/compra no backend, tornando-o opcional no schema e derivando automaticamente (propriopara compra econsignadopara 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_inicioedata_fim) no backend para utilizar os limites exatos do fuso horário de negócio (America/Sao_PauloviainicioFimDoDiaSaoPaulo), 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-fornecedorese/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 emGET /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 FISCALevidente 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 eventoafterprintpara 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
/vendase/vendas/historicono 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,RevendedoraseTodos.
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-fastifypara@fastify/otelnativo preservando o hook ESM doioredis.
- Migração de
- Auditoria (Audit Trail): Arquitetura Assíncrona e Modelo de Dados (#656):
- Criação da tabela
logs_auditoria, modelLogAuditoriae serviço desacoplado e não-bloqueanteAuditoriaService.
- Criação da tabela
- 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/auditoriae painel de visualização da Trilha de Auditoria Global exclusivo para SuperAdmin.
- Endpoint
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.
- Invalidação automática e reativa de todas as queries de histórico de vendas, resumo financeiro e sessão de caixa ativa (
- 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_URLdurante 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 Zypae 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.
- Novo assunto do e-mail transacional de boas-vindas:
v1.31.0
5 de setembro de 2026
🛠️ Melhorias & Usabilidade
- Hub de Personalização do Dashboard & Controle Contextual de Privacidade (#698):
- Novo modal
ConfigDashboardModalacessí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
localStoragee fallback seguro para SSR/Testes.
- Novo modal
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 emlocalStoragevia 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.
- Base de dados com 366 frases inspiradoras diárias (
🐛 Correções & Estabilidade
- Fallback Seguro no Storage Zustand para SSR e Testes (#697):
- Inclusão de
dummyStoragecomo fallback seguro no Zustand persist para prevenirTypeErrorem SSR (Next.js) e em suites de testes Vitest/Node.js semwindow.localStorageinicializado.
- Inclusão de
- Reatividade do Checklist de Onboarding (#693):
- Invalidação automática e imediata da query TanStack Query
dashboardKeys.onboardingProgress()noonSuccessdas mutações de habilitação de classificação de produtos e criação de malas.
- Invalidação automática e imediata da query TanStack Query
v1.29.0
4 de setembro de 2026
🛡️ Segurança & Infraestrutura
- Purga de Tenant LGPD Completa (#686):
- Inclusão de
SessaoCaixaeMovimentoCaixana sequência transacional de exclusão/purga de tenant emLgpdService, respeitando a ordem reversa de chaves estrangeiras.
- Inclusão de
- Segurança e Anti-Spoofing em Ingestão de Eventos Analytics (#687):
- Proteção na rota
POST /analytics/events: imposição estrita detenantIdeuserIda partir da sessão/token JWT autenticado, forçandonullem requisições desautenticadas/públicas.
- Proteção na rota
- Isolamento Multi-Tenant Canônico em Serviços Globais (#688):
- Refatoração de
EstoqueServiceeRadarServicepara utilizargetTenantPrisma(tenantId), eliminando consultas globais e blindando o isolamento de dados entre tenants.
- Refatoração de
- Padronização de Contratos e Schemas Zod em camelCase (#689):
- Harmonização integral de contratos entre API e Frontend em formato
camelCasecom retrocompatibilidade resiliente em todas as entidades (venda,revenda,remessa,financeiro,estoque,radar,import,classificacao).
- Harmonização integral de contratos entre API e Frontend em formato
- Modularização e Refatoração SRP de Estoque (#690):
- Decomposição de
estoque-posicao.tsxda pasta legadaconfig/paraweb/src/app/(dashboard)/estoque/components/com subcomponentes SRP (< 300 linhas):QuadrantesOverview,ParceirosDrillDown,ItensEstoqueTable,blocoConfige hookuseEstoqueNavigation.
- Decomposição de
- 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.
- Migração de tabelas e modelos legados (
- 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/desempenhoe modalEntryPerformanceModalcom 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
BuscaItemRevendacom debounce de 250ms, dropdown flutuantez-50, leitor óptico e leitor por câmera (BarcodeScanner), mantendo a tabela de montagem da mala sempre visível em destaque.
- Novo componente
- 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]) emMontagemTable, aplicandobreak-wordsemin-w-[220px]para especificações e nomes extensos de semijoias.
- Remoção de truncamento forçado (
🐛 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').
- 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 (
- 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/loginou 404, e a chamada à API saía complaceholderem vez do id real. - Correção: mecanismo
useRouteIdque lêwindow.locationquando ouseParamsdo Next devolve oplaceholderdo artefato estático, garantindo que a tela carregue e que a request à API use sempre o id REAL da URL.
- No build
🧪 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 denew Date().toISOString().split('T')[0]também em testes).
- Fixtures sensíveis a "hoje" passam a fixar o relógio (
- 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 oout/reproduzindo o rewrite do.htaccesse faz reverse-proxy same-origin de/api/*. Specrotas-dinamicas-static.spec.tscobre deep-link e reload das rotas[id], provando o fixuseRouteId— fechando a lacuna que deixou o ZYPA-664 chegar à produção (onext devpadrão mascarava o bug).
- Config dedicada
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 comSameSite=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
refreshTokenpassa a usarSameSite=None; Secureem produção (exigência do navegador para envio cross-site sobre HTTPS), mantendoHttpOnly. Em desenvolvimento (same-site emlocalhost, HTTP) permaneceSameSite=LaxsemSecure.
- Em produção o frontend (
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
disponivelno 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-revendacomo parte da mesma entrega.
- O backend passa a expor o campo
🛠️ 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, eno-consoleintencionais comdisablejustificado). - Frontend / React Compiler (#660): uso de
useWatchemcontatos-listpara zerar o warning do React Compiler. - Resultado: lint 100% limpo em
webeapi.
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).
- Componente de entrada dedicado
- 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) eCepInput, com efeitos colaterais (ex: busca ViaCEP) noonChangedo pai. CPF/CNPJ passa a sair formatado no export XLSX.
- Componentes de entrada dedicados
🐛 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.Datecom migration SQL versionada (20260901145442_datas_puras_date), eTZ=America/Sao_Paulono 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).
- 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
- Diagnóstico do purge de cache do Cloudflare no deploy (ZYPA-644, #645):
- O
deploy-web.shpassa 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.
- 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 vianode --importnoDockerfile.prod). Com isso as instrumentações explícitas voltam a gerar spans defastifyeioredis(os 4 escopos — http/fastify/ioredis/prisma — validados pelo testeinstrumentation-spans.test.tssob o caminho real de produção).
- Correção da regressão de instrumentação OpenTelemetry: registro do hook do
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-nodeem favor de instrumentações explícitas dehttp,fastify,prismaeioredis, evitando detectores de nuvem (GCP/AWS/Azure) não utilizados e tornando os escopos de tracing determinísticos.
- Remoção de
- Refatoração de effects de sincronização form ↔ prop (ZYPA-638, #639):
- Eliminação de anti-padrões
useEffect + setStatepara sincronizar/derivar estado a partir de props (remount viakey+ lazy initializer, defaults noonChange), alinhado à regra do React 19 + React Compiler.
- Eliminação de anti-padrões
📚 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-disabledereact-hooks/set-state-in-effecteexhaustive-deps).
- Documentação do padrão obrigatório no steering de frontend (proibição de
- 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).
- 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
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).
- Padronização de todos os campos monetários do módulo financeiro com o componente
- Remessas — monetários e percentuais (#616, PR #626):
- Padronização dos campos monetários com
CurrencyInpute dos campos percentuais comPercentInputno módulo de remessas.
- Padronização dos campos monetários com
- Revenda — monetários e percentuais (#617, PR #627):
- Padronização dos campos monetários (
CurrencyInput) e percentuais (PercentInput) no módulo de revenda.
- Padronização dos campos monetários (
- Onboarding e Parceiros (#618, PR #630):
- Padronização dos campos monetários de onboarding e parceiros com
CurrencyInput.
- Padronização dos campos monetários de onboarding e parceiros com
🐛 Correções & Estabilidade
- Main vermelha (#622, PR #624):
- Correção de imports do financeiro, ajuste de
TENANT_MODELSe do relatório de classificação que quebravam a validação da branch principal.
- Correção de imports do financeiro, ajuste de
🧪 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 helperaddLinhado motor de PDFs (pdf-helpers.tsepdf-comprovante.ts).
- Alinhamento estrito à direita de Subtotal, Descontos e Total da Venda no comprovante térmico (
v1.21.1
31 de agosto de 2026
🛠️ Melhorias & Usabilidade
- Quickwins de Limpeza & Unificação de Helpers (#606, PR #608):
- Centralização de
calcularComissaoFaixaemapi/src/utils/acordo.tseliminando 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.tsreutilizada no gerador de PDFs (pdf-helpers.ts). - Remoção de arquivos proxies legados (
venda.service.tseroutes/financeiro.ts) com importação direta dos módulos canônicos. - Tipagem estrita de
remessa-item.mapper.tssem uso deanyouRecord<string, unknown>.
- Centralização de
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).
- Impressão térmica isolada via documento e
- Refatoração & Centralização (#603):
- Utilitário centralizado
printThermalElementemprint-thermal-helper.tseliminando duplicações de templates de impressão térmica.
- Utilitário centralizado
🐛 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 tabelasanalytics_events,analytics_attributionseanalytics_lifecyclesno PostgreSQL de produção.
- Criação e aplicação de migration SQL física (
📚 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.mde.agents/rules/AGENTS.md.
- Inclusão formal da obrigatoriedade estrita de migrations SQL físicas no Prisma em
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_attributionseanalytics_lifecyclesno 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).
- Modelos Prisma
- 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
sendGTMEventcom sanitizador estrito de dados pessoais (expurgo automático de CPF, e-mail, telefone, nomes e endereços) para 100% de conformidade com a LGPD.
- Injeção condicional do Google Tag Manager (
- Dashboard MVP Executivo & Funil de SaaS (#419, PR #599):
- Nova tela executiva em
/admin/analyticscom 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.
- Nova tela executiva em
🛡️ Segurança & Infraestrutura
- SuperAdmin RBAC (#419, PR #599):
- Middleware
requireSuperAdminna API Fastify protegendo rotas analíticas paraSUPERADMIN_EMAILS([email protected],[email protected]). - Exibição condicional do item "Admin Analytics" no menu lateral apenas para SuperAdmins.
- Middleware
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.
- Correção no primitivo
📚 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.
- Formalização de critérios de aceite obrigatórios em formato BDD / Gherkin (
- Atualização Canônica de Domínios:
- Documentação das regras de UX e estoque em tempo real em
docs/domains/vendas.mdedocs/domains/remessas.md.
- Documentação das regras de UX e estoque em tempo real em
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
/vendaspara evitar cobranças duplicadas em conexões instáveis.
- Header de idempotência em
- 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 DESCem listagens de despesas garantindo consistência na interface.
- Ordenação secundária por
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.
- Hint visual informativo (
🐛 Correções & Estabilidade
- fix(vendas): centralização responsiva do modal de cadastro rápido de cliente com
Dialogno lugar deSheet 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.tscom sanitização contra Open Redirect e proteção contra loops em rotas de auth - Preservação do caminho e query params via parâmetro
redirectno login após expiração de sessão - Suporte completo no
DashboardLayoutClient,LoginClienteAuthLayoutClient
- Utilitário
- 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/refreshem respostas 401 concorrentes
- Mutex com singleton de Promise evitando tempestade de chamadas simultâneas a
🛠️ 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
- Envelope plano padronizado
- refactor(api): modularizar venda.service e financeiro.routes por SRP (#536, #543)
- Fatiamento de
VendaServiceem 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
- Fatiamento de
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),AppErrore 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.rolenos traces ativos do OpenTelemetry
- Centralização de error handling no Fastify com mapeamento de
- feat(api): headers de segurança HTTP (Helmet) e rate limiting global moderado (#525, #530)
@fastify/helmetativo com HSTS (1 ano + subdomínios + preload),nosniffeframeguard@fastify/rate-limitcom 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.tsxglobal e(dashboard)/not-found.tsxcom identidade visual Zypa- Error Boundary
(dashboard)/error.tsxcom 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
- Fatiamento de
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 pesadaGET /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
- Cache por tenant (
- 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,CaixaSaldoInicialeLgpdLognoTENANT_MODELScom suíte de testes de isolamento
- Inclusão dos modelos
- perf(api): habilitar compressão de payload via
@fastify/compressv9.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: pointerno@layer baseparaa,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-allowedconsistente para elementos e botões desabilitados
- Aplicação de
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},onKeyDownEnter/Espaço efocus-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
- Reorganização lógica das colunas na tabela desktop de itens da remessa para
- feat(remessas): contadores por status, aba Todas e remoção de histórico redundante (#495, #498)
- Endpoint
GET /remessas/contadorese 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
- Endpoint
- feat(config): reestruturar tela de classificação com comunicação orientada a negócios (#496, #499)
- Reformulação visual e textual do
ClassificacaoHubcom 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
- Reformulação visual e textual do
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-autoe salvaguarda global noDialogContentbase commax-h-[90dvh] - Fixação do cabeçalho e rodapé de ações com
shrink-0e layout responsivo de botões touch-friendly (w-full sm:w-auto h-11 sm:h-10)
- Desbloqueio do scroll vertical em modais no mobile com
- 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)
- Viewport com scroll suave independente e cards compactos de pré-visualização de preços no mobile (
- 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)
- Visualização em cards no mobile (
- 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)
TabsListcomoverflow-x-autoe triggers comshrink-0nos 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
- Dropdown
- 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-2eliminando salto brusco em tablets/viewports intermediárias - Prevenção de CLS (*Cumulative Layout Shift*) com empty states e skeletons fixados em 240px e 280px
- Grid de gráficos em
- 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)
TabsListcomoverflow-x-autoeshrink-0nas 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 selecionadose botão de aplicação contextualAplicar 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
conferidona tabelaitens_remessa(migration) - Endpoints
PATCH /remessas/:id/itens/:iid/conferirePOST /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
revisadoda POC via Zod transform - 10 testes de integração cobrindo todos os cenários
- Coluna
- 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
CurrencyInputePercentInputcom máscara e validação - Helpers
formatCurrencyeformatPercentcentralizados
- Componentes
- 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_idespan_idno logger Fastify/Pino - Enriquecimento de contexto com atributos semânticos
tenant.ideuser.idnos 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
hostmetricsreceiver no OTel Collector
- Correlação automática Trace-to-Logs com injeção de
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 printpara 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)
- Layouts térmicos
- 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.shcom 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
- Scripts
- docs: atualização de especificações nos domínios de
vendas,financeiro,parceiros,autheconfig
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-emaileexcluir-conta) - Logotipo e slogan de alto contraste em tipografia branca/esmeralda
- Gradiente verde corporativo no layout de autenticação (
- 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.nomeeTenant.nomeNegociono 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
- Atualização atômica de
- 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,parceiroseremessascom 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
BrandHerocom ícone oficial, logotipo tipográfico estilizado e slogan em destaque - Otimização de imagens com
next/imagee suporte a acessibilidade (WCAG 2.1 AA)
- Novo componente modular
- 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_riscoeok) - Interface com filtros por ponta (Revendedoras vs Fornecedores) e botões diretos de acerto
- Apuração em tempo real sob demanda em 3 faixas (
- 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_diasejanela) - 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)
- Compatibilização de query params do radar (
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_diretaexclusivamente 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_comissaoeconsignacao_margem), impedindocompra_diretapara 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
tipoAcordoPadraoe prazos de ciclo (prazoCicloDias = 30efolgaSegurancaDias = 10) - Exibição de tipo de acordo e comissão padrão na ficha de detalhes do parceiro
- Isolamento de tipo de acordo para revendedora (
🐛 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)
- Base curada de mercado pré-provisionada com 1.536 nós (
- 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)— extraidata.messageda 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
- Criado
🐛 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