Files
openmonetis/CHANGELOG.md
Felipe Coutinho 16fb32de28 docs: adicionar mudanças da PR #18 parcial ao changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:58:40 +00:00

17 KiB

Changelog

Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog, e este projeto adere ao Versionamento Semântico.

[1.7.4] - 2026-02-28

Alterado

  • Card de análise de parcelas (/dashboard/analise-parcelas): layout empilhado no mobile — nome/cartão e valores Total/Pendente em linhas separadas ao invés de lado-a-lado, evitando truncamento
  • Página de top estabelecimentos (/top-estabelecimentos): cards "Top Estabelecimentos por Frequência" e "Principais Categorias" empilhados verticalmente no mobile (grid-cols-1 lg:grid-cols-2)
  • Padding da lista de parcelas expandida reduzido no mobile (px-2 sm:px-8)
  • Ajustes gerais de responsividade em navbar, filtros, skeletons, widgets e dialogs (26 componentes)
  • Remover selecionados: quando todos os itens selecionados pertencem à mesma série (parcelado ou recorrente), abre dialog de escopo com 3 opções ao invés de confirmação simples (parcial da PR #18)
  • Despesa recorrente no cartão de crédito: só consome o limite do cartão quando a data da ocorrência já passou; mesma regra no relatório de cartões (parcial da PR #18)

[1.7.3] - 2026-02-27

Adicionado

  • Prop compact no DatePicker para formato abreviado "28 fev" (sem "de" e sem ano)

Alterado

  • Modal de múltiplos lançamentos reformulado: selects de conta e cartão separados por forma de pagamento, InlinePeriodPicker ao selecionar cartão de crédito, grid full-width, DatePicker compacto
  • Opção "Boleto" removida das formas de pagamento no modal de múltiplos lançamentos

[1.7.2] - 2026-02-26

Alterado

  • Dialogs padronizados: padding maior (p-10), largura max-w-xl, botões do footer com largura igual (flex-1)
  • Lançamento dialog simplificado: período da fatura calculado automaticamente a partir da data de compra + dia de fechamento do cartão via deriveCreditCardPeriod()
  • Seção "Condições e anotações" colapsável no lançamento dialog
  • Mass-add dialog: campo unificado conta/cartão com parsing por prefixo, period picker apenas para cartão de crédito
  • PeriodPicker removido dos campos básicos; substituído por InlinePeriodPicker inline no cartão de crédito

Corrigido

  • Non-null assertions (!) substituídas por type assertions ou optional chaining com guards em 15+ arquivos
  • any substituído por unknown ou tipos explícitos (use-form-state, pagadores/data, ajustes/actions, insights/actions)
  • Hooks com dependências exaustivas: magnet-lines (useEffect antes de early return), lancamentos-filters (useCallback), inbox-page (useCallback + deps)
  • Error component renomeado para ErrorComponent evitando shadowing do global

Removido

  • 6 componentes não utilizados: dashboard-grid, expenses/income-by-category widgets, installment analysis panels, fatura-warning-dialog
  • 20+ funções/tipos não utilizados: successResult, generateApiToken, validateApiToken, getTodayUTC/Local, calculatePercentage, roundToDecimals, safeParseInt/Float, isPeriodValid, getLastPeriods, entre outros
  • FaturaWarningDialog e checkFaturaStatusAction (substituídos por derivação automática de período)

[1.7.1] - 2026-02-24

Adicionado

  • Topbar de navegação substituindo o header fixo: backdrop blur, links agrupados em 5 seções (Dashboard, Lançamentos, Cartões, Relatórios, Ferramentas)
  • Dropdown Ferramentas na topbar consolidando calculadora e modo privacidade
  • Sino de notificações expandido: exibe orçamentos estourados e pré-lançamentos pendentes com seções separadas e contagem agregada
  • Página dedicada de changelog em /changelog
  • Link para o changelog no menu do usuário com versão exibida ao lado

Alterado

  • Logo refatorado com variante compacta para uso na topbar
  • Menu do usuário incorpora o botão de logout e link para ajustes
  • Links da topbar em lowercase; layout centralizado em max-w-8xl
  • Data no changelog exibida no formato dd/mm/aaaa

Removido

  • Header lateral substituído pela topbar
  • Aba Changelog removida de Ajustes (agora é página própria)
  • Componentes separados de logout e modo privacidade (incorporados à topbar)

[1.6.3] - 2026-02-19

Corrigido

  • E-mail Resend: variável RESEND_FROM_EMAIL não era lida do .env (valores com espaço precisam estar entre aspas). Leitura centralizada em lib/email/resend.ts com getResendFromEmail() e carregamento explícito do .env no contexto de Server Actions

Alterado

  • .env.example: RESEND_FROM_EMAIL com valor entre aspas e comentário para uso em Docker/produção
  • docker-compose.yml: env do app passa RESEND_FROM_EMAIL (em vez de EMAIL_FROM) para o container, alinhado ao nome usado pela aplicação

[1.6.2] - 2026-02-19

Corrigido

  • Bug no mobile onde, ao selecionar um logo no diálogo de criação de conta/cartão, o diálogo principal fechava inesperadamente: adicionado stopPropagation nos eventos de click/touch dos botões de logo e delay com requestAnimationFrame antes de fechar o seletor de logo

[1.6.1] - 2026-02-18

Alterado

  • Transferências entre contas: nome do estabelecimento passa a ser "Saída - Transf. entre contas" na saída e "Entrada - Transf. entre contas" na entrada e adicionando em anotação no formato "de {conta origem} -> {conta destino}"
  • ChartContainer (Recharts): renderização do gráfico apenas após montagem no cliente e uso de minWidth/minHeight no ResponsiveContainer para evitar aviso "width(-1) and height(-1)" no console

[1.6.0] - 2026-02-18

Adicionado

  • Preferência "Anotações em coluna" em Ajustes > Extrato e lançamentos: quando ativa, a anotação dos lançamentos aparece em coluna na tabela; quando inativa, permanece no balão (tooltip) no ícone
  • Preferência "Ordem das colunas" em Ajustes > Extrato e lançamentos: lista ordenável por arraste para definir a ordem das colunas na tabela do extrato e dos lançamentos (Estabelecimento, Transação, Valor, etc.); a linha inteira é arrastável
  • Coluna extrato_note_as_column e lancamentos_column_order na tabela preferencias_usuario (migrations 0017 e 0018)
  • Constantes e labels das colunas reordenáveis em lib/lancamentos/column-order.ts

Alterado

  • Header do dashboard fixo apenas no mobile (fixed top-0 com md:static); conteúdo com pt-12 md:pt-0 para não ficar sob o header
  • Abas da página Ajustes (Preferências, Companion, etc.): no mobile, rolagem horizontal com seta indicando mais opções à direita; scrollbar oculta
  • Botões "Novo orçamento" e "Copiar orçamentos do último mês": no mobile, rolagem horizontal (h-8, text-xs)
  • Botões "Nova Receita", "Nova Despesa" e ícone de múltiplos lançamentos: no mobile, mesma rolagem horizontal + botões menores
  • Tabela de lançamentos aplica a ordem de colunas salva nas preferências (extrato, lançamentos, categoria, fatura, pagador)
  • Adicionado variavel no docker compose para manter o caminho do volume no compose up/down

Contribuições: Guilherme Bano

[1.5.3] - 2026-02-21

Adicionado

  • Painel do pagador: card "Status de Pagamento" com totais pagos/pendentes e listagem individual de boletos com data de vencimento, data de pagamento e status
  • Funções fetchPagadorBoletoItems e fetchPagadorPaymentStatus em lib/pagadores/details.ts
  • SEO completo na landing page: metadata Open Graph, Twitter Card, JSON-LD Schema.org, sitemap.xml (/app/sitemap.ts) e robots.txt (/app/robots.ts)
  • Layout específico da landing page (app/(landing-page)/layout.tsx) com metadados ricos

Corrigido

  • Validação obrigatória de categoria, conta e cartão no dialog de lançamento — agora validada no cliente (antes do submit) e no servidor via Zod
  • Atributo lang do HTML corrigido de en para pt-BR

Alterado

  • Painel do pagador reorganizado em grid de 3 colunas com cards de Faturas, Boletos e Status de Pagamento
  • PagadorBoletoCard refatorado para exibir lista de boletos individuais em vez de resumo agregado
  • Imagens da landing page convertidas de PNG para WebP (melhora de performance)
  • Template de título dinâmico no layout raiz (%s | OpenMonetis)

[1.5.2] - 2026-02-16

Alterado

  • Landing page reformulada: visual modernizado, melhor experiência mobile e novas seções
  • Hero section com gradient sutil e tipografia responsiva
  • Dashboard preview sem bordas para visual mais limpo
  • Seção "Funcionalidades" reorganizada em 2 blocos: 6 cards principais + 6 extras compactos
  • Seção "Como usar" com tabs Docker (Recomendado) vs Manual
  • Footer simplificado com 3 colunas (Projeto, Companion, descrição)
  • Métricas de destaque (widgets, self-hosted, stars, forks) entre hero e dashboard preview
  • Espaçamento e padding otimizados para mobile em todas as seções

Adicionado

  • Menu hamburger mobile com Sheet drawer (components/landing/mobile-nav.tsx)
  • Animações de fade-in no scroll via Intersection Observer (components/landing/animate-on-scroll.tsx)
  • Seção dedicada ao OpenMonetis Companion com screenshot do app, fluxo de captura e bancos suportados
  • Galeria "Conheça as telas" com screenshots de Lançamentos, Calendário e Cartões
  • Link "Conheça as telas" na navegação (desktop e mobile)
  • Componente de tabs para setup (components/landing/setup-tabs.tsx)

[1.5.1] - 2026-02-16

Alterado

  • Projeto renomeado de OpenSheets para OpenMonetis em todo o codebase (~40 arquivos): package.json, manifests, layouts, componentes, server actions, emails, Docker, docs e landing page
  • URLs do repositório atualizados de opensheets-app para openmonetis
  • Docker image renomeada para felipegcoutinho/openmonetis
  • Logo textual atualizado (logo_text.png)

Adicionado

  • Suporte a multi-domínio via PUBLIC_DOMAIN: domínio público serve apenas a landing page (sem botões de login/cadastro, rotas do app bloqueadas pelo middleware)
  • Variável de ambiente PUBLIC_DOMAIN no .env.example com documentação

[1.5.0] - 2026-02-15

Adicionado

  • Customização de fontes nas preferências — fonte da interface e fonte de valores monetários configuráveis por usuário
  • 13 fontes disponíveis: AI Sans, Anthropic Sans, SF Pro Display, SF Pro Rounded, Inter, Geist Sans, Roboto, Reddit Sans, Fira Sans, Ubuntu, JetBrains Mono, Fira Code, IBM Plex Mono
  • FontProvider com preview ao vivo — troca de fonte aplica instantaneamente via CSS variables, sem necessidade de reload
  • Fontes Apple SF Pro (Display e Rounded) carregadas localmente com 4 pesos (Regular, Medium, Semibold, Bold)
  • Colunas system_font e money_font na tabela preferencias_usuario

Corrigido

  • Cores de variação invertidas na tabela de receitas em /relatorios/tendencias — aumento agora é verde (bom) e diminuição é vermelho (ruim), consistente com a semântica de receita

Alterado

  • Sistema de fontes migrado de className direto para CSS custom properties (--font-app, --font-money) via @theme inline
  • MoneyValues usa var(--font-money) em vez de classe fixa, permitindo customização

[1.4.1] - 2026-02-15

Adicionado

  • Abas "Pendentes", "Processados" e "Descartados" na página de pré-lançamentos (antes exibia apenas pendentes)
  • Logo do cartão/conta exibido automaticamente nos cards de pré-lançamento via matching por nome do app
  • Pre-fill automático do cartão de crédito ao processar pré-lançamento (match pelo nome do app)
  • Badge de status e data nos cards de itens já processados/descartados (modo readonly)

Corrigido

  • revalidateTag("dashboard", "max") para invalidar todas as entradas de cache da tag (antes invalidava apenas a mais recente)
  • Cor --warning ajustada para melhor contraste (mais alaranjada)
  • EstabelecimentoLogo não precisava de "use client" — removido
  • Fallback no cálculo de fontSize em EstabelecimentoLogo

Alterado

  • Nome do estabelecimento formatado em Title Case ao processar pré-lançamento
  • Subtítulo da página de pré-lançamentos atualizado

[1.4.0] - 2026-02-07

Corrigido

  • Widgets de boleto/fatura não atualizavam após pagamento: actions de fatura (updateInvoicePaymentStatusAction, updatePaymentDateAction) e antecipação de parcelas não invalidavam o cache do dashboard
  • Substituídos revalidatePath() manuais por revalidateForEntity() nas actions de fatura e antecipação
  • Expandido revalidateConfig.cartoes para incluir /contas e /lancamentos (afetados por pagamento de fatura)
  • Scroll não funcionava em listas Popover+Command (estabelecimento, categorias, filtros): adicionado modal ao Popover nos 4 componentes afetados

Adicionado

  • Link "detalhes" no card de orçamento para navegar diretamente à página da categoria
  • Indicadores de tendência coloridos nos cards de métricas do dashboard (receitas, despesas, balanço, previsto) com cores semânticas sutis
  • Tokens semânticos de estado no design system: --success, --warning, --info (com foregrounds) para light e dark mode
  • Cores de chart estendidas de 6 para 10 (--chart-7 a --chart-10: teal, violet, cyan, lime)
  • Variantes success e info no componente Badge

Alterado

  • Migrados ~60+ componentes de cores hardcoded do Tailwind (green-500, red-600, amber-500, blue-500, etc.) para tokens semânticos (success, destructive, warning, info)
  • Unificados 3 arrays duplicados de cores de categorias (em category-report-chart.tsx, category-history.ts, category-history-widget.tsx) para importação única de category-colors.ts
  • Month picker migrado de tokens customizados (--month-picker) para tokens padrão (--card)
  • Dark mode normalizado: hues consistentes (~70 warm family) em vez de valores dispersos
  • Token --accent ajustado para ser visualmente distinto de --background
  • Token --card corrigido para branco limpo (oklch(100% 0 0))

Removido

  • Tokens não utilizados: --dark, --dark-foreground, --month-picker, --month-picker-foreground

[1.3.1] - 2026-02-06

Adicionado

  • Calculadora arrastável via drag handle no header do dialog
  • Callback onSelectValue na calculadora para inserir valor diretamente no campo de lançamento
  • Aba "Changelog" em Ajustes com histórico de versões parseado do CHANGELOG.md

Alterado

  • Unificadas páginas de itens ativos e arquivados em Cartões, Contas e Anotações com sistema de tabs (padrão Categorias)
  • Removidas rotas separadas /cartoes/inativos, /contas/inativos e /anotacoes/arquivadas
  • Removidos sub-links de inativos/arquivados da sidebar
  • Padronizada nomenclatura para "Arquivados"/"Arquivadas" em todas as entidades

[1.3.0] - 2026-02-06

Adicionado

  • Indexes compostos em lancamentos: (userId, period, transactionType) e (pagadorId, period)
  • Cache cross-request no dashboard via unstable_cache com tag "dashboard" e TTL de 120s
  • Invalidação automática do cache do dashboard via revalidateTag("dashboard") em mutations financeiras
  • Helper getAdminPagadorId() com React.cache() para lookup cacheado do admin pagador

Alterado

  • Eliminados ~20 JOINs com tabela pagadores nos fetchers do dashboard (substituídos por filtro direto com pagadorId)
  • Consolidadas queries de income-expense-balance: 12 queries → 1 (GROUP BY period + transactionType)
  • Consolidadas queries de payment-status: 2 queries → 1 (GROUP BY transactionType)
  • Consolidadas queries de expenses/income-by-category: 4 queries → 2 (GROUP BY categoriaId + period)
  • Scan de métricas limitado a 24 meses ao invés de histórico completo
  • Auth session deduplicada por request via React.cache()
  • Widgets de dashboard ajustados para aceitar Date | string (compatibilidade com serialização do unstable_cache)
  • CLAUDE.md otimizado de ~1339 linhas para ~140 linhas

[1.2.6] - 2025-02-04

Alterado

  • Refatoração para otimização do React 19 compiler
  • Removidos useCallback e useMemo desnecessários (~60 instâncias)
  • Removidos React.memo wrappers desnecessários
  • Simplificados padrões de hidratação com useSyncExternalStore

Arquivos modificados

  • hooks/use-calculator-state.ts
  • hooks/use-form-state.ts
  • hooks/use-month-period.ts
  • components/auth/signup-form.tsx
  • components/contas/accounts-page.tsx
  • components/contas/transfer-dialog.tsx
  • components/lancamentos/table/lancamentos-filters.tsx
  • components/sidebar/nav-main.tsx
  • components/month-picker/nav-button.tsx
  • components/month-picker/return-button.tsx
  • components/privacy-provider.tsx
  • components/dashboard/category-history-widget.tsx
  • components/anotacoes/note-dialog.tsx
  • components/categorias/category-dialog.tsx
  • components/confirm-action-dialog.tsx
  • components/orcamentos/budget-dialog.tsx

[1.2.5] - 2025-02-01

Adicionado

  • Widget de pagadores no dashboard
  • Avatares atualizados para pagadores

[1.2.4] - 2025-01-22

Corrigido

  • Preservar formatação nas anotações
  • Layout do card de anotações

[1.2.3] - 2025-01-22

Adicionado

  • Versão exibida na sidebar
  • Documentação atualizada

[1.2.2] - 2025-01-22

Alterado

  • Atualização de dependências
  • Aplicada formatação no código