monify business
Mony Business · Painel de Comando · A IA financeira do Monify Business em tempo real
versão v0.1.183+ · 🎨 B58 — Visual regression 5 abas B2B: 40 baselines (DRE, Painel, Fluxo, Cobranças, A Pagar) — 4 viewports × 2 temas. Fix B58.1: modal de onboarding não aparece para visualizador (viewer). Base: 📅 B34 — DRE Consolidado: seletor de mês específico. Chip "📅 Mês" substitui botão "1 mês" fixo; quando ativo exibe navegador ‹ Junho 2026 › com seta direita desabilitada no mês atual. CSV renomeado para DRE_Consolidado_YYYY-MM.csv no modo mês. Empty state contextual. 25 tests novos = 4519 verdes. Base: 🔧 B26 — 5 UX fixes pós-PROD: PAGAS como card separado em A Pagar · ExecIcon cor inativa corrigida (#304a62) · Radar do Dia sem falso vermelho com float (threshold < -1) · DRE Consolidado com PDF via window.print() · filtro "1 mês" no DRE Consolidado. 31 tests novos. Base: 📈 B24 — DRE Tendência Histórica: toggle MENSAL/TENDÊNCIA no tab DRE, buildDRETrend + DRETrendChart SVG responsivo, H8 Mony (estou crescendo / evolução do faturamento / resultado dos últimos meses). B23 — Alertas Fiscais no Dashboard por regime tributário (calcFiscalAlerts, H7 Mony). Base: Bloco D (B2B context: pulse-showcase adaptado para Monify Business): Bug reportado pelo user via screenshot PROD — lista de Lançamentos vinha ordenada por `createdAt` (último lançado primeiro), confuso quando lançava tx retroativa (cenário real: JD Joelma 02/06 lançada AGORA aparecia ACIMA de Smart TV 06/06). Fix: helper puro `sortTxsByDateDesc(txs)` ordena por `date` DESC, com `id` DESC como tiebreaker (preserva ordem de inserção entre tx de mesma data). Bonus na mesma screenshot: user pediu filtro por data dentro do mês. Implementado: chips toggle "Mês inteiro · Hoje · Ontem · Últimos 7d" abaixo do tab de tipo, dentro do bloco `📅 Período`. Helper puro `applyDateFilter(txs, range, today)` testável isolado. Combina AND com filtros existentes de tipo + categoria. Default "all" = comportamento atual preservado. Visível só fora da aba Metas. Não aparece em screenshot/visual regression por estar dentro da aba Lançamentos (não Dashboard). 24 tests novos = 3070 verdes (era 3046, +24). Backend INTACTO. Frontend: src/App.tsx. Base: 📣 Lote 60.78 (sobre.html — labels leigos nas 6 badges de auditoria): User notou que os labels técnicos das badges ("Security Headers", "HTTP Observatory", "Website Grader", "PageSpeed Mobile") não eram entendíveis pelo usuário leigo. Sugestão dele: frase amigável em destaque + nome técnico embaixo. Trocas: "Security Headers" → **Servidor blindado**; "HTTP Observatory" → **Conexão segura**; "Website Grader" → **Site bem feito**; "PageSpeed Mobile" → **Rápido no celular**; "Acessibilidade" → **Acessível pra todos**; "Sem malware" → **Sem vírus nem golpe**. Nome técnico vai pra `badge-source` em parênteses: "Snyk (Security Headers)", "MDN/Mozilla (HTTP Observatory)", "HubSpot (Website Grader)", "Google (PageSpeed)". Preserva credibilidade do nome técnico pra quem reconhece + comunica claramente pro leigo. Meta description também atualizada com linguagem leiga. Backend INTACTO. Frontend: só public/sobre.html. Base: 🏅 Lote 60.77 (sobre.html — 6 badges atualizados): Após Lote 60.76 conquistar PageSpeed mobile **100/100/100/100** (Desempenho + Acessibilidade + Boas Práticas + SEO TODOS perfeitos), a seção "Pode confiar" do /sobre.html ficou desatualizada. Atualizações: (1) PageSpeed 94+ → **100** (label vira "PageSpeed Mobile" pra ser explícito); (2) Headline "4 auditorias" → "6 auditorias"; (3) Badge novo **WAVE AIM 9.9** (Acessibilidade · WebAIM); (4) Badge novo **Sucuri ✓** (Sem malware — 9 blacklists limpas: Google Safe Browsing + McAfee + ESET + PhishTank + Yandex + Opera + Sucuri + outras); (5) meta description atualizada citando novas auditorias. Badges originais Snyk A+ + MDN/Mozilla A+ + HubSpot 100 preservados. Grid CSS mantido (1fr 1fr) — 6 badges viram 3 linhas × 2 colunas naturalmente. 12 tests novos = 3046 verdes (era 3034, +12). Backend INTACTO. Frontend: só public/sobre.html. Base: 🎯 Lote 60.76 (skeleton estático LCP — PageSpeed 92 → 95+ esperado): Lote 60.75 fez code-split do AdminPanel (bundle -17%) mas PageSpeed continuou 92. Diagnóstico real do PageSpeed v1.2.149 revelou que o problema NÃO era tamanho do bundle e sim: *"Detalhamento da LCP — Atraso na renderização do elemento: 2810ms"* — o `
` ficava VAZIO no HTML até React montar. Fix cirúrgico: replicar visualmente o conteúdo da tela de login (logo "monify.app" + "COPILOTO COMPORTAMENTAL" + `

Evita o colapso financeiro

` + tagline completa) DENTRO de `
` no index.html como HTML estático. CSS do skeleton inline no `