Formatação automática do Biome em fatura/page, categorias/page e
extrato/page — apenas line wrapping de destructuring de Promise.all.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Substitui FaturaWarningDialog por deriveCreditCardPeriod() que calcula
o período da fatura automaticamente a partir da data de compra +
dia de fechamento/vencimento do cartão.
lancamento-dialog: remove periodDirty state, adiciona seção colapsável
"Condições e anotações", propaga closingDay/dueDay via cardInfo.
mass-add-dialog: unifica contaId/cartaoId em contaCartaoId com
parsing por prefixo, period picker apenas para cartão de crédito.
basic-fields-section: remove PeriodPicker (período agora auto-derivado),
move Estabelecimento para topo.
payment-method-section: adiciona InlinePeriodPicker como link
"Fatura de [mês]" com popover MonthPicker.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
DialogContent: padding p-6→p-10, max-w-lg→max-w-xl.
DialogFooter/AlertDialogFooter: botões com flex-1 (largura igual).
Remove gap-3/w-full redundantes de 12+ dialogs.
Reformatação Biome: line wrapping, import ordering.
Error component renomeado para evitar shadowing do global Error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Substitui non-null assertions (!) por type assertions ou optional
chaining com guards. Troca any por unknown/tipos explícitos.
- drizzle.config: DATABASE_URL! → as string
- use-form-state: Record<string, any> → Record<string, unknown>
- actions: catch (e: any) → catch (e), model tipado explicitamente
- pagadores/data: row: any → Record<string, unknown>
- note-dialog: result tipado explicitamente
- bulk-import: payload as any removido
- Map.get()! → optional chaining + guards em relatórios e dashboard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove aba Changelog de Ajustes; cria página em /changelog
- Adiciona link para /changelog no menu do usuário com versão ao lado
- Data do changelog formatada como dd/mm/aaaa
- Limpa formatação ** do CHANGELOG.md
- Bump de versão para 1.7.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Substitui header fixo por topbar com backdrop blur e navegação agrupada em 5 seções
- Adiciona FerramentasDropdown consolidando calculadora e modo privacidade
- NotificationBell expandida com orçamentos e pré-lançamentos
- Remove logout-button, header-dashboard e privacy-mode-toggle como componentes separados
- Logo refatorado com variante compact; topbar com links em lowercase
- Adiciona dependência radix-ui ^1.4.3
- Atualiza CHANGELOG para v1.7.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Substitui a sidebar pela topbar com NavigationMenu do shadcn/ui.
- Logo à esquerda com invert para bg primário
- Links diretos: Dashboard, Calendário, Cartões, Contas
- Dropdowns: Lançamentos, Organização, Análise
- Mobile: Sheet lateral com hamburger
- Ações à direita: notificações, calculadora, tema, etc.
- User avatar com dropdown de ajustes/logout
- CSS vars overrideados na área de ações para cor primária
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove /estabelecimentos e todos seus componentes e actions
- Remove /relatorios/gastos-por-categoria e seus arquivos
- Remove tabela `estabelecimentos` do schema e migration 0019
- Remove nav items de ambas as features do sidebar
- Reverte widget expenses-by-category ao estado original
- Remove filtro de estabelecimento dos lançamentos (filters, table, page-helpers)
- Reverte getRecentEstablishmentsAction para query apenas em lancamentos
- Limpa CHANGELOG removendo entradas das features removidas
- Card de Status de Pagamento com totais pagos/pendentes e lista de boletos individuais
- Validação obrigatória de categoria/conta/cartão no dialog de lançamento (client + server)
- SEO completo na landing: Open Graph, Twitter Card, JSON-LD, sitemap.xml, robots.txt
- Imagens convertidas de PNG para WebP (performance)
- HTML lang corrigido para pt-BR; template de título dinâmico
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Renomeia o projeto em ~40 arquivos (package.json, manifests, layouts,
componentes, server actions, emails, Docker, docs, landing page).
Adiciona suporte a multi-domínio via PUBLIC_DOMAIN onde o domínio
público serve apenas a landing page sem botões de auth.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Validação eager do secret no top-level do módulo causava falha no
build Docker porque a env var não existe em build-time. Movido para
função getJwtSecret() chamada em runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adiciona sistema de customização de fontes por usuário via CSS custom
properties, com preview ao vivo e persistência no banco. Corrige lógica
de cores invertida na tabela de receitas em tendências.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Adicionar tokens semânticos de estado (success, warning, info) no globals.css
- Migrar ~60+ componentes de cores hardcoded do Tailwind para tokens semânticos
- Unificar 3 arrays duplicados de cores de categorias em importação única
- Corrigir widgets de boleto/fatura que não atualizavam após pagamento
(actions de fatura e antecipação não invalidavam cache do dashboard)
- Corrigir scroll em listas Popover+Command (modal prop)
- Adicionar link "detalhes" no card de orçamento para página da categoria
- Adicionar indicadores de tendência coloridos nos cards de métricas
- Estender cores de chart de 6 para 10
- Normalizar dark mode e remover tokens não utilizados
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parser lê o CHANGELOG.md e exibe as versões com badges por tipo de mudança
(Adicionado, Alterado, Corrigido) na página de ajustes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Calculadora agora é arrastável via drag handle no header
- Novo callback onSelectValue permite inserir valor no campo de lançamento
- Ajustado subtitle de categorias e estilo do collapse na sidebar
- Atualizado snapshot drizzle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Substitui rotas separadas de inativos/arquivados por tabs inline em
Cartões, Contas e Anotações, seguindo o padrão já usado em Categorias.
Remove sub-links da sidebar e padroniza nomenclatura para "Arquivados".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Adicionar indexes compostos em lancamentos para queries frequentes
- Eliminar ~20 JOINs com pagadores via helper cacheado getAdminPagadorId()
- Consolidar queries: income-expense-balance (12→1), payment-status (2→1), categories (4→2)
- Adicionar cache cross-request via unstable_cache com tag-based invalidation
- Limitar scan de métricas a 24 meses
- Deduplicar auth session por request via React.cache()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
A query de "Gasto até agora" nos orçamentos agora aplica os mesmos
filtros do widget de despesas por categoria do dashboard:
- INNER JOIN com pagadores (exclui lançamentos sem pagador)
- Filtra apenas pagadores com role "admin" (exclui terceiros)
- Exclui notas de faturas automáticas (AUTO_FATURA:*)
Isso corrige a discrepância onde orçamentos mostravam valores
diferentes do widget de despesas para a mesma categoria.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Novo widget de pagadores no dashboard com resumo de transações
- Substituir avatares SVG por PNG com melhor qualidade
- Melhorar seção de pagador no diálogo de lançamentos
- Adicionar ação para buscar pagadores por nome
- Atualizar componentes de seleção (cartões, categorias, contas)
- Melhorias no layout de ajustes e relatórios
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Renomear /relatorios/categorias para /relatorios/tendencias
- Renomear /relatorios/cartoes para /relatorios/uso-cartoes
- Criar componente CategoryIconBadge unificado com cores dinâmicas
- Atualizar cards de categorias com novo layout (ações no footer)
- Atualizar cards de orçamentos com CategoryIconBadge
- Adicionar tooltip detalhado nas células de tendências (valor anterior e diferença)
- Adicionar dot colorido (verde/vermelho) para indicar tipo de categoria
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Criar componente CompanionTab com layout reorganizado
- Simplificar ApiTokensForm com lista de dispositivos mais compacta
- Redesenhar página de relatórios de cartões com layout horizontal
- Atualizar CardsOverview com stats em cards separados e lista compacta
- Simplificar CardUsageChart removendo seletor de período (fixo 12 meses)
- Criar CardInvoiceStatus com timeline minimalista
- Atualizar skeletons para refletir novos layouts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Simplifica estrutura da sidebar combinando seções "Visão Geral" e "Gestão Financeira"
- Renomeia itens de relatórios para maior clareza ("Tendências", "Uso de Cartões")
- Aplica correções de formatação do Biome (ordenação de imports, quebras de linha)
- Remove código comentado não utilizado
- Adiciona migração 0014 do Drizzle
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Atualizar imports em todos os arquivos que usavam os nomes antigos
- Corrigir referências para preferenciasUsuario, insightsSalvos, tokensApi, preLancamentos, antecipacoesParcelas, compartilhamentosPagador
- Replace ESLint with Biome for linting and formatting
- Configure Biome with tabs, double quotes, and organized imports
- Move all SQL/Drizzle queries from page.tsx files to data.ts files
- Create new data.ts files for: ajustes, dashboard, relatorios/categorias
- Update existing data.ts files: extrato, fatura (add lancamentos queries)
- Remove all drizzle-orm imports from page.tsx files
- Update README.md with new tooling info
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
BREAKING CHANGES:
- Renomeia rota /caixa-de-entrada para /pre-lancamentos
- Remove colunas device_id, parsed_date e discard_reason da tabela inbox_items
Mudanças:
- Move componentes de caixa-de-entrada para pre-lancamentos
- Atualiza sidebar e navegação para nova rota
- Remove campos não utilizados do schema, types e APIs
- Adiciona migration 0011 para remover colunas do banco
- Simplifica lógica de data padrão usando notificationTimestamp
- Remove process-dialog.tsx (componente não mais utilizado)
- Simplifica inbox-page.tsx removendo estados e lógica do process dialog
- Atualiza inbox-details-dialog para usar lancamento-dialog diretamente
- Adiciona suporte a dados iniciais do inbox no lancamento-dialog
- Move campos de metadata da inbox para o form de lançamento
- Remove campo currency não utilizado do schema
- Atualiza actions e data com melhor tratamento de erros
Add a new "Dispositivos" tab in settings page that allows users to:
- Generate new API tokens for connecting Android devices
- View connected devices with last used time and IP
- Revoke tokens to disconnect devices
This provides the web UI needed for users to obtain tokens
for the OpenSheets Companion Android app.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cria layout.tsx com PageDescription
- Substitui barras de progresso customizadas por Progress
- Remove label 'Período:' do filtro
- Ajusta espaçamento do filtro na página
- Criar página /top-estabelecimentos com análise de gastos por local
- Adicionar componentes: establishments-list, highlights-cards, summary-cards
- Adicionar filtro de período personalizado
- Criar função de busca de dados para top estabelecimentos
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Criar página /relatorios/cartoes com visão geral dos cartões
- Adicionar componentes: cards-overview, card-usage-chart, card-top-expenses
- Adicionar componentes: card-category-breakdown, card-invoice-status
- Criar função de busca de dados para relatório de cartões
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Alterar ícone de notificação para outline (RiNotification3Line)
- Mudar cor da timeline de parcelas de azul para verde
- Reduzir padding do month picker (p-5 → p-4)
- Remover md:py-6 do layout dashboard
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Ao atualizar nome no perfil, sincronizar com pagador admin
- Ao editar pagador admin, sincronizar com nome do usuário
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Corrigir cálculo de valor na importação de lançamentos parcelados
- Exibir valor total (parcela × quantidade) ao invés do valor da parcela individual
- Permite recriar parcelamentos importados com valor correto
- Permitir que usuários compartilhados se descompartilhem de pagadores
- Adicionar componente PagadorLeaveShareCard na aba Perfil
- Usuário filho pode sair do compartilhamento sem precisar do usuário pai
- Manter autorização bidirecionada na action de remoção de share
- Implementar submenu "Inativos" para contas bancárias
- Criar página /contas/inativos seguindo padrão de cartões
- Filtrar contas ativas e inativas em páginas separadas
- Adicionar ícone e navegação no sidebar
Refatoração de Filtros:
- Move filtros select para Drawer lateral direito
- Mantém busca fora do Drawer para acesso rápido
- Adiciona indicador visual de filtros ativos
- Implementa aplicação instantânea de filtros
- Adiciona border-dashed e aumenta input de busca
Cópia de Orçamentos:
- Implementa funcionalidade de copiar orçamentos do mês anterior
- Adiciona server action com validações e tratamento de erros
- Cria modal de confirmação para a ação
- Evita duplicações automáticas
Exportação de Lançamentos:
- Adiciona exportação em CSV, XLSX e PDF
- Integra botão de exportação nos filtros
- Segue padrão de Relatórios de Categorias
- Inclui formatação específica por formato
- Expande README.md com estatísticas detalhadas do projeto (200 componentes, 15+ tabelas, 20+ widgets)
- Adiciona descrição completa da stack técnica e versões
- Documenta estrutura de diretórios de forma abrangente
- Inclui diagramas de schema de banco de dados e fluxos de dados
- Adiciona seção de destaques e funcionalidades recentes
- Implementa diálogo de importação em massa de lançamentos (bulk-import-dialog.tsx)
- Adiciona fontes AISans (Regular e Semibold) ao projeto
- Remove classe bg-muted das páginas de autenticação
- Adiciona /docs ao .gitignore
- Limpa código não utilizado em componentes de lançamentos e páginas do dashboard
- Atualiza dependências no package.json