Releases: itjuanpablo/finance-dashboard
Release list
v.4.3.4
Changelog 📥
[4.3.4] — 02/08/2026
Correções de CSS
Administrar, Crescer e Resumos tinham os botões 🌐 🔒 👁 ◐ como filhos diretos do <header>, que é flex com space-between — o navegador espalhava os quatro pela largura da tela. Faltava o invólucro .header-right, que as outras páginas tinham.
A causa era o bloco estar copiado em cinco páginas com os mesmos handlers. Extraído para components/AcoesCabecalho.js; as seis páginas passam a usá-lo, e Relatório ganha o seletor de idioma que era a única tela sem ele.
Teste estático novo conta os filhos diretos de cada <header>: é um defeito que não lança erro, não quebra teste e desaparece em tela estreita por causa do flex-wrap — só aparece no monitor de quem usa.
Também: barra de limite do cartão com largura mínima. Uma fatura de 14,90 num limite de 3.100 rendia três pixels que pareciam sujeira na tela.
v4.3.3
Changelog 📥
[4.3.3] — 01/08/2026
Resumo de cartão do Mercado Pago - Argentina
-
A seção de ideias de /evoluir sai por ora: catálogo, filtros e 61 chaves de tradução por idioma. Sobra a calculadora de juros compostos, que é o que a página promete no nome.
-
Atalhos do cabeçalho ganham 18px de ícone e 38px de altura — sem rótulo há folga de ~290px na largura útil, contra os 4px que existiam antes.
-
.gitattributescom export-ignore tira os.mjs, docs/ eempacotar-fluxo.shdo tarball que o GitHub gera para as releases, sem tirá-los do controle de versão. Quem instala recebe só os .sh; quem desenvolve continua com os testes e o histórico.instalar.shavisa quando não há suíte para rodar, em vez de calar.
Commit: bf418d3
O Fluxo passa a ler o "Resumen de tarjeta de crédito" do Mercado Pago Argentina. Antes o arquivo era rejeitado com "não reconheço o formato".
Três cuidados que valem saber:
-
Consumos em dólares ficam de fora. O resumo cobra dólar em coluna separada e não traz cotação — ele mesmo diz que o câmbio é o do dia do pagamento. Converter por um número inventado mostraria na tela um gasto que ninguém teve. O app avisa quantos consumos e qual o total em dólar ficaram de fora, para lançar à mão se quiser.
-
O ano é suposto. Nenhuma data do resumo traz ano, nem o fechamento. O app assume o fechamento mais recente que já passou e avisa qual ano usou. Ao importar um resumo antigo, confira as datas.
-
Se um total não bater, nada é importado. Os três valores que o documento declara são conferidos ao centavo a cada importação.
v4.3.2
Changelog 📥
[4.3.2] — 01/08/2026
O app abre no seu idioma
Na primeira execução o Fluxo passa a seguir o idioma do navegador em vez de abrir sempre em português. Quem instalou versões anteriores também é atendido: uma migração automática remove o idioma que a instalação gravou sozinha no
primeiro boot.
Se você já escolheu um idioma no botão 🌐, nada muda — escolha feita continua valendo e vence a detecção.
Precedência, do mais forte para o mais fraco:
- o que você escolheu no 🌐
NEXT_PUBLIC_FLUXO_LOCALEno.env.local(para travar o idioma)- idioma do navegador
- português
Cabeçalho estável em qualquer idioma
Os atalhos do painel agora são só ícone no computador, com o nome no balão ao passar o mouse. Antes os botões estouravam a largura disponível e apareciam cortados — o texto em espanhol ocupa 13% mais espaço que em português, e não havia margem sobrando nem em português. Ícones ocupam o mesmo em toda língua, então o problema não volta com o próximo idioma.
No celular a navegação inferior continua com os nomes escritos.
Instalação
scripts/instalar.sh agora oferece "detectar pelo navegador" como opção padrão. Fixar um idioma continua possível para quem quiser.
v4.3.1
Changelog 📥
[4.3.1] — 01/08/2026
Cabeçalho arrumado no notebook e atualização em dois cliques
O cabeçalho não fica mais cortado
Em telas de notebook 13" — MacBook Air, por exemplo — os atalhos do topo apareciam quebrados, com o ícone numa linha e o nome na outra, cortados pela metade. Agora cabem em uma linha só.
Se ainda faltar espaço (zoom do navegador aumentado, fonte do sistema maior), o cabeçalho quebra em duas linhas inteiras em vez de espremer os botões.
De quebra, a tabela de lançamentos ganhou cerca de 250px de largura nessas telas: descrição longa que virava "…" agora aparece inteira.
Atualizar ficou dois cliques
Novo atalho Fluxo na Área de Trabalho. Dois cliques nele e o app:
- procura a última versão publicada no GitHub;
- se houver novidade, faz uma cópia dos seus dados e atualiza;
- abre no navegador.
Para criar o atalho, uma vez só, no Terminal:
cd ~/Fluxo && bash scripts/criar-atalho.shSeus dados nunca são tocados pela atualização, eles ficam num arquivo que não vem no pacote baixado. Ainda assim, uma cópia é feita antes de cada atualização.
Se o download vier incompleto ou em formato estranho, ele avisa e não altera nada, em vez de dizer que atualizou sem ter atualizado.
v4.3.0
Changelog 📥
[4.3.0] — 01/08/2026
"Estou melhorando?" e dividir um lançamento
Evolução: a pergunta que faltava
Nova tela Evolução (📈). O Fluxo respondia bem onde meu dinheiro foi este mês e não respondia estou melhorando? — o painel e o relatório eram os dois mensais, e mês isolado não mostra tendência. Dá para ter nove meses seguidos de melhora e não perceber nenhuma.
Agora há a curva de saldo ao longo do tempo e o resumo mês a mês, com filtro por ano.
Dois números na mesma tela que não batem, e os dois estão certos. O resultado do mês é tudo que entrou menos tudo que saiu, incluindo compras no cartão no mês em que você comprou. O saldo é o que estava na conta no fim do mês, e a compra no cartão só sai da conta quando a fatura é paga. A tela explica isso; sem a legenda, pareceriam dois números discordando.
Se você ainda não cadastrou uma conta com saldo inicial, a tela mostra a variação acumulada e avisa que é variação. Inventar um ponto de partida deixaria a linha bonita e o número errado.
Dividir um lançamento
Compra de mercado que é metade comida e metade produto de limpeza. Farmácia com remédio e cosmético. Até agora, escolher uma categoria era escolher qual mentira contar.
O botão ⑂ na lista de lançamentos (Gerenciar › Lançamentos) reparte o valor entre quantas categorias você quiser. A tela mostra o tanto que falta distribuir o tempo todo e só deixa salvar quando fecha — dividir reorganiza um gasto, não cria nem some com dinheiro. A última parte se autocompleta com o resto.
O lançamento original some da lista e as partes tomam o lugar dele. Ele continua guardado por baixo, e é o que impede a reimportação do mesmo extrato trazer a compra de volta duplicada. Desfazer a divisão devolve tudo como estava.
O app não abre mais em branco
Erro de tela. Antes, um erro de programação em qualquer página deixava a tela completamente em branco, sem uma palavra. Agora aparece uma mensagem que diz, em primeiro lugar, que seus dados estão salvos — porque essa é a primeira coisa
que se pergunta ao ver um app de finanças quebrar. Os detalhes técnicos ficam recolhidos e copiáveis, para você me mandar.
Sem conexão. O Fluxo tem ícone na tela de início do iPhone e abre em tela cheia como aplicativo, mas os dados vêm do seu computador. Com o Mac desligado ou o Tailscale fora do ar, ele abria em branco.
Agora abre com os números da última vez, e uma tarja no topo diz de quando eles são. Lançar e importar ficam bloqueados enquanto estiver sem conexão, um app de finanças que finge ter salvo é pior do que um que avisa que não deu.
Lixeira. Lançamentos excluídos ficam listados e podem ser restaurados quando você quiser. Antes eles sumiam depois dos 4 segundos do aviso na tela.
Primeira tela de quem está começando
Quem instalava abria um painel vazio sem saber o que fazer. Agora as telas vazias explicam para que servem e qual é o próximo passo. E três situações que mostravam a mesma frase passaram a ser tratadas como o que são: não há nada ainda (arraste um extrato), este mês está vazio (troque o período) e o filtro não achou nada (limpe o filtro).
Versão na tela
O rodapé mostra a versão instalada. Quando algo der errado, é a primeira coisa que eu vou perguntar.
Para quem mexe no código: a divisão de lançamento cria um risco novo, uma consulta que esqueça de excluir o lançamento-pai conta o valor duas vezes, e o erro é invisível porque o total só fica maior. Existe agora o predicado ACTIVE_TX em lib/db.js e um teste que varre app/ e lib/ procurando quem filtre deleted_at sem ele.
v4.2.0
Changelog 📥
[4.2.0] — 29/07/2026
Categorização funcional e um banco estrangeiro novo
Corrigido: nada estava sendo categorizado
Toda transação importada caía em "A revisar", em qualquer idioma. O app importava, somava certo e simplesmente não reconhecia nada — parecia que a categorização automática não servia.
A causa era uma variável trocada no código de importação, que fazia o categorizador receber a descrição vazia. Não dava erro em lugar nenhum: por isso passou pelos testes, que checavam a leitura do arquivo e não o caminho completo.
Depois de atualizar, as transações antigas continuam em "A revisar". Para recategorizar sem refazer nada: abra Gerenciar › Lançamentos, use a revisão em massa e corrija um comércio de cada tipo — a regra aprendida se aplica ao resto de uma vez.
Corrigido: instalação em espanhol usava o dicionário brasileiro
Quem escolhia espanhol no seletor 🌐 continuava sendo categorizado por palavras brasileiras. "MONOTRIBUTO", "SUPER MAMI", "IMP. AFIP" caíam todos em "Por revisar". Só funcionava para quem tinha configurado o idioma no arquivo antes de abrir o app pela primeira vez — ou seja, quase ninguém.
Você pode ensinar o que é transferência interna
Dinheiro que sai de uma conta sua para outra conta sua não é despesa nem receita, mas nem sempre o app reconhece — uma transferência recebida da sua própria conta em outro banco é indistinguível de um pagamento que você recebeu.
Antes não havia o que fazer: mudar a categoria alterava o gráfico e não alterava o total do mês, com duas telas discordando. Agora, marcar um lançamento como Transferências já o tira dos totais, e a regra aprendida vale também para as próximas importações.
Num extrato real isso mudou a renda do mês de R$ 463.330 para R$ 26.000 — a diferença entre um número sem sentido e um número.
Banco estrangeiro novo
Extratos de conta no formato "Últimos movimientos" passam a ser lidos. Esse layout escreve o valor negativo de um jeito diferente (-$ 1.234,56), e ler errado importaria despesa como receita — por isso a importação confere o saldo de cada linha contra o que o documento declara e recusa o arquivo se algum elo não fechar.
Categorização argentina reconhece agora monotributo, impostos da AFIP e capitalização de poupança (que é receita, não transferência).
Instalação em um comando
git clone <repo> ~/Fluxo && cd ~/Fluxo && bash scripts/instalar.shConfere a versão do Node, instala as dependências exatas, pergunta o idioma e roda a bateria de testes antes de liberar o uso. Se algum teste falhar, ele para e avisa para não importar extratos ainda.
Também nesta versão
- Parcelas futuras deixaram de perder o último mês do compromisso.
- Desfazer importação agora faz backup antes e avisa quantos lançamentos você
tinha editado à mão — eles não voltam reimportando o arquivo. - O serviço não fica mais exposto na rede. Até a v4.1 ele subia em todas as interfaces: qualquer aparelho no mesmo wifi abria suas finanças sem senha. Agora escuta só em
127.0.0.1. Se você instalou o serviço antes, rodebash scripts/instalar-autostart.shde novo. - Vencimentos e relatórios não erram mais o dia quando usados à noite.
- Backup que falha agora avisa, em vez de parar em silêncio.
v4.1.0
Changelog 📥
[4.1.0] — 27/07/2026
🔄 🇪🇸🇺🇸🇧🇷 - Trocar de idioma pela tela e ler arquivo de qualquer banco
Botão de idioma no cabeçalho
O 🌐 no topo abre idioma e moeda. A escolha vale na hora — sem editar arquivo, sem reiniciar o servidor — e fica salva no seu banco, então continua valendo na próxima vez que abrir.
A moeda é um campo separado, e isso é de propósito. Seus lançamentos são guardados em centavos, sem moeda nenhuma junto. Se trocar o idioma trocasse a moeda automaticamente, um saldo de R$ 1.000 passaria a aparecer como $ 1.000 em pesos: o mesmo número, com outro significado, sem nada ter sido convertido. Trocar o idioma muda texto, mês e formato de data; a moeda só muda se você mudar.
Lê arquivo de banco brasileiro e estrangeiro (teste com Mercado Pago - Argentina) sem tropeçar na formatação
Um punhado de detalhes chatos que faziam extrato bom ser lido errado:
Acentuação. Extrato de banco costuma vir em Windows-1252, não em UTF-8. Antes, "Transferência" virava "Transferência" — e entrava assim no banco de dados. Agora a codificação é detectada (inclusive quando o arquivo mente sobre qual usa) e o texto entra íntegro.
Separadores e datas. O leitor de CSV decide o formato olhando a coluna inteira, não cada célula isolada: se qualquer valor da coluna usa vírgula decimal, a coluna toda é lida no padrão brasileiro/argentino; se alguma data tem dia acima de 12, a ordem dia/mês fica definida para todas as linhas. Também aceita ponto e vírgula, vírgula, tabulação e barra vertical como separador, campo entre aspas com vírgula dentro, valor negativo entre parênteses ou com sinal à direita, colunas separadas de débito e crédito, e o espaço invisível que alguns bancos colocam no meio dos números.
Linhas que não são transação. Preâmbulo, cabeçalho repetido a cada página, saldo, subtotal e rodapé deixam de ser importados como lançamento. No OFX, a linha "SALDO ANTERIOR" que alguns bancos emitem disfarçada de transação aparecia como uma receita do tamanho do seu saldo.
Conferência por saldo. Quando o arquivo traz saldo, o app reconstrói a sequência inteira e confere: saldo inicial + lançamentos = saldo final. Se não fechar, ele avisa em vez de gravar. Foi esse tipo de checagem que pegou um erro que a simples soma de totais deixava passar.
Você vê quem leu o arquivo. A importação informa qual banco foi reconhecido, com que confiança e em que codificação — para você saber quando desconfiar.
Correção
Renomear uma categoria padrão passou a valer também na resposta da API, que ntes podia mostrar o nome traduzido enquanto a tela mostrava o seu.
Para quem mexe no código
Idioma e moeda vivem na tabela settings (esquema v5, criada automaticamente). Nada de formatação pode ser calculado na carga do módulo — um Intl no topo do arquivo passa no teste da primeira execução e mente na segunda; node scripts/testar idioma.mjs existe justamente para pegar isso. A suíte dos leitores de arquivo foi de 166 para 229 verificações.
v4.0.0
Changelog 📥
[4.0.0] — 27/07/2026
🇪🇸 Espanhol, mais bancos e categorias que não quebram ao renomear
Esta versão faz três coisas: ensina o Fluxo a falar espanhol, amplia bastante os bancos reconhecidos na importação e conserta um problema antigo de arquitetura que só aparecia quando você renomeava uma categoria.
O Fluxo passou a falar espanhol
Espanhol rioplatense de verdade (voseo: arrastrá, elegí, cargá) e vocabulário financeiro correto — a fatura do cartão é resumen, lançamento é movimiento, parcela é cuota. Junto com o texto muda a moeda, o formato de número e data, os nomes das categorias, o dicionário de categorização automática (o app não vai adivinhar "Ecogas" com um dicionário brasileiro) e
os perfis de banco preferidos na detecção.
Na v4.0 o idioma era escolhido num arquivo de configuração. Desde a v4.1 há um botão na tela.
Muito mais bancos reconhecidos
Antes, só o PDF do Mercado Pago era entendido de verdade; o resto caía num leitor genérico de CSV que funcionava "na sorte" do cabeçalho. Agora existe uma lista de perfis, e o Fluxo identifica o arquivo pelo conteúdo:
- Brasil: Nubank (extrato e fatura, que têm formatos diferentes), Itaú, Bradesco, Banco do Brasil, Inter, C6 e o Mercado Pago.
- Argentina: Mercado Pago, Galicia, Santander, BBVA, Brubank, Ualá e Naranja X.
**Cada perfil é honesto sobre o quanto se pode confiar nele.**Os conferidos contra um arquivo real estão marcados como confiança alta. Os montados a partir da documentação do formato só são aceitos quando o nome do banco aparece no arquivo — e, se nada casar, o Fluxo usa o leitor genérico em vez de arriscar. A regra que guiou tudo: em dado financeiro, errar calado é pior do que não
reconhecer.
Renomear categoria não bagunça mais nada
Até então o nome da categoria era também o identificador dela. Renomear "Renda" para "Salário" obrigava o Fluxo a reescrever o nome em todas as transações, regras e metas — e qualquer parte do programa que ainda esperasse "Renda" parava de funcionar em silêncio.
Agora cada categoria tem um identificador interno que nunca muda:
- renomear é instantâneo e não toca em nenhum lançamento;
- as categorias que você criou nunca são traduzidas — o nome que você escolheu
é o que fica; - renomear uma categoria padrão faz o Fluxo entender que a sua escolha vale mais
que a tradução dele.
A conversão do banco é automática, numa única operação, depois de salvar uma cópia em data/backups/fluxo-pre-v4-*.db. Se algo der errado, nada é alterado.
A conversão reconhece os nomes originais do Fluxo. Se você renomeou uma categoria padrão antes de atualizar, ela vira categoria sua — funciona, mas o app perde o significado dela. Para corrigir:
node scripts/remapear-categoria.mjs --listar # ver o que tem
node scripts/remapear-categoria.mjs salario income # ensaio, não grava
node scripts/remapear-categoria.mjs salario income --aplicarCorreções
Transferência para você mesmo não é despesa. Dinheiro que você manda da sua conta para outra conta sua era contado como gasto e inflava a projeção do mês.
Parcelas em extratos em espanhol. O rótulo era procurado só em português; num extrato em espanhol ("cuota 2/6"), as parcelas futuras não eram detectadas, o ciclo da fatura saía errado e o agrupamento de regras falhava — sem dar erro.
Data de geração do PDF virando transação. O rodapé do extrato traz a data em que o arquivo foi gerado, no mesmo formato de uma data de lançamento. O leitor confundia as duas e engolia a transação seguinte, gravando a data de emissão e o endereço da empresa no lugar da data e do estabelecimento reais. O mais desconfortável: as somas continuavam corretas, porque o valor estava certo — o erro passava por qualquer conferência de total.
Próxima versão — planejado
Mais bancos, à medida que houver extratos reais para conferir. A estrutura já aceita: adicionar banco é acrescentar um perfil declarativo, não escrever código de leitura. O que falta é arquivo — a prioridade é fatura de cartão, que é o que o app entende menos e onde estão as parcelas.
v3.2.0
Changelog 📥
[3.2.1] — 13/07/2026
📲 Polimento visual
- Fonte Inter embutida via next/font (sem dependencia do sistema);
- Animacao de entrada nos modais e pulso no carregamento;
- Focus rings acessiveis em botoes, links e inputs;
- Micro-interacoes: active scale, hover lift nos insights;
- Scrollbar fina tematizada; transicao suave no modo privacidade.
v3.1.1
Changelog 📥
[3.1.1] — 13/07/2026
📲 Melhorias de responsividade mobile
- Bottom nav (Inicio/Faturas/Evoluir/Gerenciar) no celular, com aba ativa destacada e safe area da barra de gestos.
- Removidos do header mobile os botões redundantes que causavam scroll horizontal e larguras quebradas.
- Header mobile mais enxuto: logo, mês, privacidade e tema.