Commit Graph

77 Commits

Author SHA1 Message Date
Felipe Coutinho
d04e30e3c9 fix(robots): remove estático duplicado, corrige robots.ts e llms.txt
Remove `public/robots.txt` que era ignorado pelo Next.js em favor do
`src/app/robots.ts` (Metadata API). Adiciona `/signup` à lista de
rotas bloqueadas e remove referência ao `sitemap.xml` inexistente.

Restaura o link `/robots.txt` no `llms.txt`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:31:37 +00:00
Felipe Coutinho
c7d6e23398 chore: atualiza biome, CLAUDE.md, llms.txt e corrige optional chaining
- biome.json: schema atualizado para 2.4.9
- public/llms.txt: novo arquivo de documentação pública do projeto
- CLAUDE.md: ajustes menores de documentação interna
- invoices-queries.ts: usa optional chaining `?.startsWith` no lugar de
  verificação dupla de nullish
- CHANGELOG.md: documentadas as mudanças do ciclo atual em [Unreleased]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:15:03 +00:00
Felipe Coutinho
0514efb1c4 style(tipografia): adiciona fonte America Medium e padroniza pesos de texto
Adiciona os arquivos `america-medium.woff2` e `america-bold.woff2` e
registra o weight 500 no `font_index.ts`.

Padroniza o uso de `font-medium` em substituição a `font-semibold` e
`font-bold` em títulos, valores monetários e rótulos de destaque em
todos os componentes do app, landing page e componentes de UI base.

`Card` ganha `hover:border-primary/40` e `CardTitle` recebe `text-base`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:14:55 +00:00
Felipe Coutinho
e32fb85006 perf(cache): migração para diretiva use cache do Next.js
Todas as queries cacheadas do dashboard migram de `unstable_cache` para
a diretiva `use cache` com `cacheTag` e `cacheLife({ revalidate: 3 })`.

Todas as páginas e o layout do dashboard passam a chamar `connection()`
para garantir renderização dinâmica. O root layout envolve os filhos em
`<Suspense>`. `next.config.ts` remove `turbopackFileSystemCacheForDev`
e adota `cacheComponents: true`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:14:23 +00:00
Felipe Coutinho
96df6a1798 feat(notificações): alertas de vencimento para o período seguinte
Boletos e faturas do próximo período com vencimento dentro de 5 dias
agora geram notificações do tipo `due_soon`, evitando duplicatas com
notificações já existentes do período corrente.

A query de boletos passa a filtrar pela data de vencimento não nula e
limita a janela de busca a 12 meses anteriores ao período atual.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:14:07 +00:00
Felipe Coutinho
1f8a97bd16 feat(auth): redesign visual das páginas de autenticação
O sidebar de autenticação ganha mockup animado de faturas e três itens
de funcionalidade no rodapé, substituindo o texto descritivo anterior.

As páginas de login e cadastro recebem gradiente decorativo de fundo e
exibem o logo no topo em viewports mobile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:14:01 +00:00
Felipe Coutinho
0ab3298cef feat(anexos): página de galeria de comprovantes e documentos
Adiciona rota `/attachments` com visualização de todos os anexos do
usuário em grade, visualização inline de imagem e PDF, navegação entre
arquivos do mesmo lançamento e download direto.

Inclui também:
- API REST em `/api/attachments` para servir os arquivos
- Actions `fetch-by-id` e `fetch-dialog-options` em transactions
- Item "Anexos" adicionado à navbar
- `formatBytes` extraído para `src/shared/utils/number.ts`
- Migrations de banco atualizadas
- Fix: uploads e remoções de anexo agora funcionam para todos os
  lançamentos, não apenas os pertencentes a séries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:13:54 +00:00
Felipe Coutinho
71b5a004e3 chore: ajustes de formatação e configuração
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:47:27 +00:00
Felipe Coutinho
2a458d5a3c chore(configurações): redesign visual da página de configurações
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:47:19 +00:00
Felipe Coutinho
f418987f47 feat(lançamentos): escopo "period" na ação em lote e correção do fluxo de anexos em séries
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:46:33 +00:00
Felipe Coutinho
59b4dea071 feat(preferências): configuração de tamanho máximo de anexo por arquivo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:46:28 +00:00
Felipe Coutinho
6ce132fe0c feat(db): adicionar coluna attachmentMaxSizeMb em userPreferences
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:45:41 +00:00
Felipe Coutinho
6eba35542b chore(logo): remover prop showVersion e atualizar logo_small.png
Remove a prop showVersion do componente Logo e seu uso na sidebar.
Aplica iconFilterClass também no variant compact. Atualiza a imagem
logo_small.png.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 13:44:10 +00:00
Felipe Coutinho
f5e95ffba6 chore(analytics): substituir Vercel Analytics por Umami self-hosted
Remove @vercel/analytics e @vercel/speed-insights e adiciona o script
do Umami self-hosted no layout raiz, restrito ao domínio openmonetis.com.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 13:44:03 +00:00
Felipe Coutinho
a75bb86eec refactor(navbar): extrair NavbarShell e adicionar variante navbar no Button
Unifica a estrutura da navbar entre o app e a landing page via novo
componente NavbarShell. Centraliza estilos de botões da navbar na
variante `navbar` do Button, eliminando nav-styles.ts e as classes
inline duplicadas. AnimatedThemeToggler, RefreshPageButton e MobileNav
passam a aceitar prop `variant` para adaptar ao contexto.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 13:43:59 +00:00
Felipe Coutinho
a3b858621f fix(transactions): preservar período salvo ao editar lançamento de cartão
No modal de edição, o período não era recalculado com base no fechamento
do cartão, garantindo que o valor salvo no banco seja sempre exibido.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 17:51:43 +00:00
Felipe Coutinho
fee2a2c9f5 fix(build): corrigir erros de tipo introduzidos pelo TypeScript 6.0
- Adiciona src/global.d.ts com declare module '*.css' para suportar
  side-effect imports de CSS com moduleResolution bundler
- Adiciona ignoreDeprecations "6.0" no tsconfig para silenciar aviso
  de depreciação do baseUrl (será removido no TS 7)
- Corrige cast de .message em better-auth 1.5.6, cujo tipo passou a
  ser string | RawError em chamadas de passkey

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:21:56 +00:00
Felipe Coutinho
a0a71623d7 fix(ui): corrigir overflow do dialog e ícone de anexo nas categorias
Adiciona min-w-0 e overflow-x-hidden no DialogContent para evitar
expansão indevida; corrige referência do ícone RiAttachment2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:13 +00:00
Felipe Coutinho
00e624b8bc fix(lancamentos): bloquear criação em fatura já paga no cartão de crédito
Evita divergência no relatório de análise de parcelas ao impedir o
cadastro de lançamentos em períodos cujas faturas já foram quitadas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:10 +00:00
Felipe Coutinho
f82043127a feat(lancamentos): adicionar suporte a anexos com upload para storage S3
Permite vincular arquivos (PDF, imagens) a lançamentos via upload direto
para storage compatível com S3, usando token assinado por arquivo e
validação de propriedade na leitura e remoção.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:05 +00:00
Felipe Coutinho
32da4f906e fix(transactions): avoid crypto.randomUUID on initial load 2026-03-26 14:18:47 +00:00
Felipe Coutinho
f528e75ee1 style(ui): polish dashboard chrome and landing copy 2026-03-25 00:30:55 +00:00
Felipe Coutinho
da32b41bbc chore(tooling): add mockup helper and backup fixes 2026-03-25 00:30:46 +00:00
Felipe Coutinho
1e0c93fb6c fix(finance): preserve visibility and settlement updates 2026-03-25 00:29:36 +00:00
Felipe Coutinho
5f70421f5a feat(dashboard): persist notification center state 2026-03-25 00:29:24 +00:00
Felipe Coutinho
50477fb1be fix(inbox): corrigir agrupamento de data por fuso de Brasilia
O Companion envia hora local com 'Z' literal (nao converte para UTC),
entao o timestamp no DB ja carrega a data correta de Brasilia. Usava-se
+3h no frontend, que deslocava a virada de dia para as 21h locais e
fazia compras da tarde aparecerem como 'Ontem'.

- getItemDateKey: remove offset (data UTC ja e a data de Brasilia)
- getBrasiliaDateKey: usa UTC-3 apenas para calcular hoje/ontem
- Paraleliza insercoes no batch endpoint com Promise.allSettled
- Usa selectDistinct no fetchInboxSourceApps
- Envolve InboxCard em memo e callbacks em useCallback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 00:55:46 +00:00
Felipe Coutinho
60a52b9873 fix(inbox): alinhar horario da tooltip do card 2026-03-21 19:42:55 +00:00
Felipe Coutinho
1d36b12109 style: normalizar formatacao de importacao e suporte 2026-03-21 19:32:38 +00:00
Felipe Coutinho
19a1b1e943 chore(release): preparar versao 2.0.1 2026-03-21 19:31:53 +00:00
Felipe Coutinho
d3fc81db73 fix(inbox): melhorar filtros e identidade visual 2026-03-21 19:31:38 +00:00
Felipe Coutinho
80de9501f6 fix: move proxy.ts para src/ e atualiza dependências
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 17:52:20 +00:00
ImgBotApp
05daac5f57 [ImgBot] Optimize images
*Total -- 806.29kb -> 592.37kb (26.53%)

/public/logos/orama.png -- 32.36kb -> 7.66kb (76.33%)
/public/logos/sofisadireto.png -- 4.95kb -> 1.61kb (67.5%)
/public/logos/vtbbank.png -- 5.12kb -> 1.85kb (63.79%)
/public/images/web-app-manifest-192x192.png -- 5.40kb -> 2.37kb (56.14%)
/public/logos/picpay.png -- 2.38kb -> 1.09kb (54.04%)
/public/logos/toroinvestimentos.png -- 3.45kb -> 1.69kb (50.99%)
/public/logos/z1.png -- 2.03kb -> 1.00kb (50.75%)
/public/images/web-app-manifest-512x512.png -- 18.92kb -> 9.34kb (50.65%)
/public/logos/monetus.png -- 18.34kb -> 9.25kb (49.57%)
/public/logos/cimbbank.png -- 6.67kb -> 3.57kb (46.51%)
/public/logos/agibank.png -- 3.07kb -> 1.65kb (46.19%)
/public/logos/nuconta.png -- 1.79kb -> 0.96kb (46.18%)
/public/logos/ifood-beneficios.png -- 4.13kb -> 2.30kb (44.33%)
/public/logos/woop.png -- 29.46kb -> 16.90kb (42.65%)
/public/logos/banese.png -- 3.29kb -> 1.98kb (40.01%)
/public/avatars/default_icon.png -- 5.41kb -> 3.31kb (38.87%)
/public/logos/tesouronacional.png -- 4.65kb -> 2.88kb (38.14%)
/public/logos/bilhete-unico.png -- 3.62kb -> 2.24kb (38.01%)
/src/app/icon1.png -- 5.41kb -> 3.37kb (37.69%)
/src/app/apple-icon.png -- 5.41kb -> 3.37kb (37.69%)
/public/logos/pluxxe.png -- 1.20kb -> 0.75kb (37.33%)
/public/logos/sodexo.png -- 5.66kb -> 3.75kb (33.8%)
/public/logos/tesourodireto.png -- 4.17kb -> 2.78kb (33.34%)
/public/logos/viacredi.png -- 7.36kb -> 5.00kb (32.11%)
/public/logos/brde.png -- 5.48kb -> 3.93kb (28.16%)
/public/logos/spuerkeess.png -- 2.63kb -> 1.92kb (26.89%)
/public/logos/mais.png -- 8.43kb -> 6.23kb (26.11%)
/public/logos/efi.bank.png -- 2.73kb -> 2.03kb (25.72%)
/public/avatars/4825062.png -- 25.78kb -> 19.30kb (25.13%)
/public/logos/banrisul.png -- 4.15kb -> 3.14kb (24.31%)
/public/avatars/4825021.png -- 21.18kb -> 16.20kb (23.51%)
/public/avatars/4825096.png -- 27.46kb -> 21.06kb (23.32%)
/public/avatars/4825057.png -- 22.96kb -> 17.63kb (23.21%)
/public/avatars/4825076.png -- 26.29kb -> 20.21kb (23.14%)
/public/avatars/4825044.png -- 21.44kb -> 16.60kb (22.59%)
/public/avatars/4825066.png -- 21.82kb -> 16.90kb (22.53%)
/public/avatars/4825038.png -- 25.82kb -> 20.00kb (22.52%)
/public/avatars/4825123.png -- 21.71kb -> 16.83kb (22.48%)
/public/avatars/4825031.png -- 25.69kb -> 19.93kb (22.4%)
/public/avatars/4825072.png -- 28.61kb -> 22.30kb (22.06%)
/public/avatars/4825082.png -- 23.32kb -> 18.21kb (21.91%)
/public/avatars/4825015.png -- 23.36kb -> 18.26kb (21.84%)
/public/avatars/4825108.png -- 20.25kb -> 15.89kb (21.56%)
/public/avatars/4825051.png -- 26.30kb -> 20.79kb (20.95%)
/public/avatars/4825027.png -- 22.74kb -> 17.98kb (20.93%)
/public/avatars/4825087.png -- 21.15kb -> 16.74kb (20.85%)
/public/avatars/4825112.png -- 25.28kb -> 20.04kb (20.72%)
/public/logos/btgpactual.png -- 3.51kb -> 2.85kb (18.62%)
/public/images/logo_text.png -- 26.08kb -> 21.34kb (18.18%)
/public/logos/crefisa.png -- 4.44kb -> 3.64kb (17.98%)
/public/avatars/4825035.png -- 25.01kb -> 20.69kb (17.25%)
/public/images/logo_small.png -- 3.79kb -> 3.16kb (16.79%)
/public/logos/wiipo.png -- 9.57kb -> 7.98kb (16.6%)
/public/avatars/4825047.png -- 20.26kb -> 17.29kb (14.69%)
/public/logos/nubank-ultravioleta.png -- 10.00kb -> 8.93kb (10.68%)
/public/logos/riachuelo.png -- 1.09kb -> 0.99kb (9.55%)
/public/logos/clear-corretora.png -- 4.13kb -> 3.76kb (8.97%)
/public/logos/bradesco-empresas.png -- 3.39kb -> 3.15kb (7.09%)
/public/icons/party.svg -- 4.15kb -> 3.98kb (4.02%)
/public/logos/pix.png -- 1.57kb -> 1.51kb (3.79%)
/public/providers/gemini.svg -- 0.87kb -> 0.86kb (1.46%)
/public/providers/openrouter_light.svg -- 0.56kb -> 0.55kb (1.05%)
/public/logos/creditas.png -- 11.04kb -> 10.94kb (0.95%)
/public/flags/visa.svg -- 1.37kb -> 1.36kb (0.93%)
/public/flags/mastercard.svg -- 5.13kb -> 5.12kb (0.3%)
/public/providers/chatgpt.svg -- 2.61kb -> 2.61kb (0.15%)
/public/providers/chatgpt_dark_mode.svg -- 2.61kb -> 2.61kb (0.15%)
/public/flags/elo.svg -- 1.66kb -> 1.66kb (0.12%)
/public/providers/claude.svg -- 2.51kb -> 2.50kb (0.12%)
/public/flags/amex.svg -- 4.81kb -> 4.81kb (0.04%)
/public/flags/hipercard.svg -- 17.29kb -> 17.29kb (0.01%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2026-03-21 15:28:30 +00:00
Felipe Coutinho
3d850be60f feat(landing): adiciona aba de importação na seção de telas
Inclui aba "Importação" após "Pré-lançamentos" no carrossel de
screenshots, com assets WebP (light/dark) e ícone RiFileDownloadLine.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 15:14:56 +00:00
Felipe Coutinho
56a23c40cf fix: corrige ícones e cor nos cards de métricas do dashboard
Troca as setas de receita/despesa (estavam invertidas) e ajusta a
cor do card de saldo para cyan-600.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:05:39 +00:00
Felipe Coutinho
9377e451de fix: remove gradiente sobreposto da hero da landing page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:04:47 +00:00
Felipe Coutinho
bdb3908dab fix: média em category-trends ignora meses sem gastos
Corrige o cálculo da coluna Média para dividir apenas pelo número de
meses com valores > 0, evitando distorção causada por meses sem
movimentação. Adiciona ícone de informação com tooltip explicativo
no cabeçalho da coluna.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:04:34 +00:00
Felipe Coutinho
a20fe255f3 feat: importação de extratos OFX/XLS com memória de categorias
Adiciona fluxo completo de importação de extratos bancários:
- Upload e parsing de arquivos OFX e XLS/XLSX
- Tela de revisão com virtualização (@tanstack/react-virtual)
- Detecção automática de categoria por histórico de uso
- Deduplicação por FITID (OFX) e importBatchId
- Tabela `import_category_mappings` para persistir mapeamentos
- Botão de acesso ao fluxo na tabela de transações

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:04:30 +00:00
Felipe Coutinho
deb7c775f8 docs: atualiza changelog da versão 2.0.0 2026-03-20 18:43:22 +00:00
Felipe Coutinho
e4dd221709 feat: endurece mutações financeiras e permite zerar conta 2026-03-20 18:42:18 +00:00
Felipe Coutinho
f77c64325d refactor: modulariza insights e atualiza catálogo de IA 2026-03-20 18:41:34 +00:00
Felipe Coutinho
29551ee02f feat: pagina inbox e valida tokens do companion 2026-03-20 18:40:13 +00:00
Felipe Coutinho
3c31ee5d90 refactor: pagina transações e modulariza ações 2026-03-20 18:39:49 +00:00
Felipe Coutinho
41fd8226cb refactor: agrega queries e cache do dashboard 2026-03-20 18:38:20 +00:00
Felipe Coutinho
5b8d25d894 feat: reformula landing page e experiência mobile 2026-03-20 18:35:12 +00:00
Felipe Coutinho
33a5d6f5f0 feat(landing): reformula página inicial e atualiza previews 2026-03-17 17:11:19 +00:00
Felipe Coutinho
58f5a4ab2f style(ui): reordena exports e padroniza rótulos visuais 2026-03-17 17:11:05 +00:00
Felipe Coutinho
a7c6f3c632 refactor(anotações): centraliza transformação dos dados de notas 2026-03-17 17:10:06 +00:00
Felipe Coutinho
076953340f fix(pagadores): corrige envio e seleção de avatar no diálogo 2026-03-17 17:09:59 +00:00
Felipe Coutinho
50177621ff feat(dashboard): refina layout e widgets do painel 2026-03-17 17:09:40 +00:00
Felipe Coutinho
272e90aef9 feat(ui): padroniza avatares e paleta visual da interface 2026-03-17 17:08:54 +00:00