Commit Graph

176 Commits

Author SHA1 Message Date
Felipe Coutinho
ac2ea63dbd refactor: simplificar lancamento-dialog e mass-add-dialog
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>
2026-02-26 17:23:23 +00:00
Felipe Coutinho
96118d85e4 style: padronizar dialogs e aplicar formatação Biome
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>
2026-02-26 17:22:59 +00:00
Felipe Coutinho
803e273538 fix: corrigir tipos e eliminar non-null assertions
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>
2026-02-26 17:22:41 +00:00
Felipe Coutinho
8de22b9930 refactor: remover código morto e exports não utilizados
Remove 6 componentes não utilizados (dashboard-grid, expenses/income
by category widgets, installment analysis panels, fatura-warning-dialog).

Remove funções/tipos não utilizados: successResult, generateApiToken,
validateApiToken, getTodayUTC/Local, formatDateForDb, getDateInfo,
calculatePercentage, roundToDecimals, safeParseInt/Float, isPeriodValid,
getLastPeriods, normalizeWhitespace, formatCurrency wrapper,
InboxItemInput, InboxBatchInput, ProcessInboxInput, DiscardInboxInput,
LancamentosColumnId, 5 funções de anticipation-helpers.

Redireciona imports de formatCurrency para lib/lancamentos/formatting-helpers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:19:33 +00:00
Felipe Coutinho
c7eabc513e chore: atualizar dependências e biome schema
Bumps: @ai-sdk/* 3.0.47, ai 6.0.101, better-auth 1.4.19, jspdf 4.2.0,
pg 8.19.0, react-day-picker 9.14.0, tailwind-merge 3.5.0,
@biomejs/biome 2.4.4, tailwindcss 4.2.1, @types/node 25.3.1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:19:18 +00:00
Felipe Coutinho
4ca037d6b2 style: animação suave nos dialogs via CSS keyframes
Substitui classes do tailwindcss-animate (não instalado) por keyframes
CSS nativos. Efeito de fade + scale (96%→100%) ao abrir e fechar,
sem conflito com o posicionamento translate do Tailwind v4.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 16:57:32 +00:00
Felipe Coutinho
9cb6593186 feat: changelog como página própria, versão 1.7.1
- 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>
2026-02-24 16:07:34 +00:00
Felipe Coutinho
1b90be6b54 feat: topbar de navegação como experimento de UI (v1.7.0)
- 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>
2026-02-24 15:43:14 +00:00
Felipe Coutinho
af7dd6f737 refactor: reestruturar links da topbar em 5 grupos lógicos
- dashboard (direto)
- lançamentos▾ → lançamentos / pré-lançamentos / calendário
- finanças▾ → cartões / contas / orçamentos
- organização▾ → pagadores / categorias / anotações
- análise▾ → insights / tendências / uso de cartões

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 23:01:59 +00:00
Felipe Coutinho
811aa2d730 style: lowercase nos triggers com subitem
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:56:07 +00:00
Felipe Coutinho
2632849134 style: links da topbar em lowercase
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:54:46 +00:00
Felipe Coutinho
274ac61a2b design: bg-card sem borda, shadow-xs sutil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:52:01 +00:00
Felipe Coutinho
fdb5782b8b design: refatorar topbar para visual neutro refinado
- bg-background + border-b (sem cor primária no fundo)
- Links: pill arredondado, hover bg-accent suave, sem underline
- Link ativo: pill bg-primary/10 text-primary
- Trigger aberto: mesma aparência do hover
- Mobile: mesmo padrão de ativo com pill primário

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:51:54 +00:00
Felipe Coutinho
d24157ed5b refactor: desacoplar componentes do top-nav-menu em arquivos separados
- nav-styles.ts: constantes de estilo (linkBase, linkIdle, linkActive, triggerClass)
- simple-nav-link.tsx: link direto com estado ativo
- dropdown-link-list.tsx: lista de itens de dropdown com tipo DropdownLinkItem
- mobile-nav-link.tsx: MobileNavLink e MobileSectionLabel para o Sheet mobile
- top-nav-menu.tsx: apenas TopNavMenu, importa dos arquivos acima

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:38:29 +00:00
Felipe Coutinho
87f919b9f5 fix: reverter espaçamento dos links para px-3 original
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:32:11 +00:00
Felipe Coutinho
ba11a71892 fix: aumentar opacidade dos links da topbar de /70 para /90
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:29:04 +00:00
Felipe Coutinho
72ef572f11 fix: equalizar espaçamento entre links com e sem seta
Links simples recebem pr-7 (28px) para compensar os 16px da
seta (ml-1 + size-3) dos triggers com dropdown.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:28:26 +00:00
Felipe Coutinho
8d3bdb53b5 fix: esconder seta dos triggers para alinhar com links simples
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:26:25 +00:00
Felipe Coutinho
7064351845 feat: ajustar estilo dos links da topbar
- Link ativo: só text-primary, sem fundo
- Hover: text-foreground + underline (sem fundo)
- Espaçamento uniforme px-3 em links e triggers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 22:21:58 +00:00
Felipe Coutinho
8054fa4a85 fix: corrigir posicionamento dos dropdowns da topbar
viewport={false} faz cada dropdown abrir abaixo do seu trigger
ao invés de sempre na posição inicial do NavigationMenu.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 21:31:04 +00:00
Felipe Coutinho
bb16fe7e18 feat: mudar background da topbar para bg-card com borda inferior
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 21:23:37 +00:00
Felipe Coutinho
417d608b77 feat: trocar cores da topbar de primary-foreground para foreground
Links, triggers, ícones e ações passam a usar text-foreground
e hover:bg-foreground/10, removendo o override de CSS vars.
Logo text usa dark:invert ao invés de invert sempre.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 21:23:29 +00:00
Felipe Coutinho
32b7f7b687 feat: centralizar conteúdo da topbar no max-w-8xl
Envolve logo, nav e ações num container max-w-8xl mx-auto
para alinhar com a largura do conteúdo das páginas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 20:39:12 +00:00
Felipe Coutinho
a9f73f7a45 feat: implementar topbar como experimento de navegação
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>
2026-02-22 20:28:57 +00:00
Felipe Coutinho
f16140cb44 chore: snapshot sidebar layout antes de experimentar topbar
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 19:57:42 +00:00
Felipe Coutinho
82713d667f feat: merge PR #16 — melhorias mobile, fixes e preferências de coluna
Inclui (do contributor Guilherme Bano):
- Ajustes de layout mobile em várias páginas
- Fix: diálogo de conta/cartão fechava ao selecionar logo no mobile
- Botão de atualizar página no header
- Fix: integração com Resend (RESEND_FROM_EMAIL)
- Preferência "Anotações em coluna" nos lançamentos
- Preferência "Ordem das colunas" nos lançamentos
- Transferências com nome padronizado ("Saída/Entrada - Transf. entre contas")
- ChartContainer: fix do aviso width/height no Recharts

Removido antes do merge:
- Página /estabelecimentos e tabela do banco
- Página /relatorios/gastos-por-categoria
- Widget expenses-by-category revertido ao original

Co-Authored-By: Guilherme Bano <guilhermesaboia2011@hotmail.com>
2026-02-21 21:29:06 +00:00
Felipe Coutinho
f640990912 chore: remover páginas estabelecimentos e gastos-por-categoria
- 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
2026-02-21 21:28:36 +00:00
Guilherme Bano
94f6b0a986 Correção de integração com o resend 2026-02-21 21:28:36 +00:00
Guilherme Bano
446ab0bb38 Adicionado botão para atualizar a pagina 2026-02-21 21:28:36 +00:00
Guilherme Bano
7b3979ad8e Feito uma correção de bug onde o diálogo principal de nova conta fechava inesperadamente 2026-02-21 21:28:36 +00:00
Guilherme Bano
9b78f839bf Adicionado aba de estabelecimentos e feita ajuste de interface. Detalhes adicionados no CHANGELOG.md 2026-02-21 21:28:36 +00:00
Guilherme Bano
ffde55f589 ajuste de layout mobile, melhorias e criação de novas funções. Detalhes adicionados no CHANGELOG.md 2026-02-21 21:28:36 +00:00
Felipe Coutinho
31fe752b7d feat(v1.5.3): status de pagamento no painel do pagador + SEO landing + WebP
- 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>
2026-02-21 17:48:52 +00:00
Felipe Coutinho
5638ccc36a chore: bump version para 1.5.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 20:51:50 +00:00
Felipe Coutinho
4084f8b9d0 feat: reformulação completa da landing page
Moderniza visual, melhora experiência mobile e adiciona seções
dedicadas ao Companion e galeria de screenshots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 20:49:20 +00:00
Felipe Coutinho
cf858792b7 fix: corrigir formato do RESEND_FROM_EMAIL no .env.example
Adiciona nome de exibição ao email remetente para evitar que
destinatários vejam apenas "noreply" como remetente.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:51:17 +00:00
Felipe Coutinho
f953a1d124 chore: bump version para 1.5.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:25:44 +00:00
Felipe Coutinho
a1347aed28 feat(v1.5.1): renomeação OpenSheets → OpenMonetis + multi-domínio
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>
2026-02-16 17:16:50 +00:00
Felipe Coutinho
98dd0f11e1 fix: lazy-load BETTER_AUTH_SECRET para corrigir Docker build
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>
2026-02-15 22:35:51 +00:00
Felipe Coutinho
89366e5c8b chore: bump version para 1.5.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 21:38:32 +00:00
Felipe Coutinho
b9f788312c chore: atualizações de dependências, lint fixes e ajustes menores
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 21:35:39 +00:00
Felipe Coutinho
2362a70b9d feat(v1.5.0): customização de fontes e correção de cores em tendências
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>
2026-02-15 21:35:00 +00:00
Felipe Coutinho
4b442a907a feat(v1.4.1): tabs de histórico, logo matching e melhorias nos pré-lançamentos
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:06:54 +00:00
Felipe Coutinho
f50261208a feat(v1.4.0): design system semântico, correções de revalidação e melhorias de UX
- 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>
2026-02-07 15:14:59 +00:00
Felipe Coutinho
390754c0e8 feat(ajustes): adicionar aba changelog com histórico de versões
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>
2026-02-06 17:45:24 +00:00
Felipe Coutinho
95e9a61741 docs: adicionar calculadora ao changelog v1.3.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:23:17 +00:00
Felipe Coutinho
5bb5693baf feat(calculadora): adicionar dialog arrastável e seleção de valor
- 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>
2026-02-06 13:22:31 +00:00
Felipe Coutinho
4152a27f4d refactor(ui): unificar páginas ativas/arquivadas com tabs (v1.3.1)
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>
2026-02-06 13:20:15 +00:00
Felipe Coutinho
6f5c41a4cf perf: otimizar dashboard com indexes, cache e consolidação de queries (v1.3.0)
- 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>
2026-02-06 12:24:15 +00:00
Felipe Coutinho
21fac52e28 fix(relatorios): ajustar espaçamento dos cards de cartões
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:13:17 +00:00