Commit Graph

357 Commits

Author SHA1 Message Date
Felipe Coutinho
7cd7d95245 docs: atualizar README, .env.example e CLAUDE.md para a versão 2.1.0
Documenta variáveis S3 opcionais, instruções de self-hosting com anexos
e padrão de commit messages no guia do projeto.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:44 +00:00
Felipe Coutinho
9bd762f7a3 chore(db): reorganizar migrations e adicionar tabelas de anexos
Consolida migrations anteriores e adiciona tabelas `anexos` e
`lancamento_anexos` com constraints de integridade referencial.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:39 +00:00
Felipe Coutinho
9b76db4ce9 chore(deps): adicionar AWS SDK S3 e atualizar dependências
Adiciona @aws-sdk/client-s3 e @aws-sdk/s3-request-presigner para
suporte a anexos; atualiza ai-sdk, better-auth, drizzle-orm, recharts,
biome e typescript para versões mais recentes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:30 +00:00
Felipe Coutinho
91457b6490 chore(ci): adicionar workflow de release automático
Cria tag e GitHub Release a partir da versão do package.json e da
entrada correspondente no CHANGELOG.md ao fazer push na branch main.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 15:13:26 +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
0bd9d0ac47 chore(docker): simplify compose file for public self-hosting
Remove build step (use published image), strip verbose comments,
and inline pgcrypto init instead of external script.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 19:16:56 +00:00
Felipe Coutinho
9f45fd1ecd chore(release): publish 2.0.2 2026-03-25 00:31:16 +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
c9205f2be9 style(drizzle): normalizar snapshots gerados 2026-03-21 19:32:49 +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
Felipe Coutinho
7dd480284e fix: corrige path do schema no Dockerfile para src/db
O diretório db/ foi movido para src/db/ na v2.0.0.
O COPY no stage runner ainda apontava para o caminho antigo,
causando falha no build da action.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 15:37:31 +00:00
Felipe Coutinho
0a7c65ec9e Merge pull request #28 from felipegcoutinho/imgbot
[ImgBot] Optimize images
2026-03-21 12:32:04 -03: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
a893473388 Merge pull request #27 from felipegcoutinho/release/v2.0.0
release: v2.0.0
2026-03-21 12:23:55 -03: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
dd8fd61c32 refactor: simplifica backup.sh — pg_restore, log dinâmico e rclone escopado
- Substitui terceiro pg_dump (data-only) por pg_restore sobre o .dump já
  criado, eliminando uma conexão extra ao banco em ambos os modos
- Move timestamp para dentro de log() para refletir o horário real de
  cada mensagem, não apenas o instante de início do script
- Escopa rclone copy por TIMESTAMP para não re-enviar backups anteriores
  a cada execução

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 15:06:36 +00:00
Felipe Coutinho
eef80b4daa feat: adiciona export data-only (*.data.sql.gz) ao backup
Gera um dump adicional com dados puros de todas as tabelas públicas
(--data-only --schema=public) para ambos os modos remote e docker.
Remove --min-age do rclone para garantir upload imediato do arquivo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:28:35 +00:00
Felipe Coutinho
6d891d3b29 docs: atualiza README para a v2.0.0
- Nuança o aviso de "sem Open Finance" mencionando importação OFX/XLS
- Atualiza linha de funcionalidades de transações
- Adiciona pnpm backup na seção de scripts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:12:46 +00:00
Felipe Coutinho
4b6f791265 docs: simplifica descrição do backup.sh no changelog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:10:56 +00:00
Felipe Coutinho
655fc64977 docs: corrige e completa changelog da v2.0.0
- Corrige formatação quebrada do item de importação (commit message colado cru)
- Enxuga o item do script de backup
- Adiciona os 3 fixes do dia (category-trends, dashboard cards, landing page)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:09:51 +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
3e0ce15258 chore: atualiza setup, backup e toolchain 2026-03-20 18:43:03 +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
Felipe Coutinho
7064c0b0bc feat(categorias): adiciona seletor pesquisável de ícones 2026-03-17 17:08:11 +00:00