Adiciona Labels (Título, Conteúdo, Tipo de anotação, Adicionar tarefa)
seguindo o padrão dos demais dialogs do projeto (space-y-1 + Label).
DialogDescription visível novamente com texto contextual.
Scroll apenas no form (-mx-6 max-h-[80vh] overflow-y-auto px-6),
header e footer fixos — mesmo padrão do lancamento-dialog.
Footer movido para fora do form; submit via requestSubmit().
Corrige useMemo antes do early return no note-details-dialog.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove onFocus que abria o popover automaticamente ao focar no input
vazio. Agora só abre quando o usuário começa a digitar.
Remove RiCheckLine dos itens da lista; item selecionado aparece em
bold (font-semibold) em vez de check verde.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Quando o lancamento-dialog abre com cartaoId já definido (ex: vindo de
pré-lançamentos), agora roda deriveCreditCardPeriod() na inicialização
para calcular o período correto da fatura automaticamente, sem precisar
trocar o cartão e voltar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Substitui w-96 fixo por w-full no account-card e flex-wrap por
grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3, mesmo padrão
dos cards de cartões e anotações.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tarefas pendentes agora aparecem primeiro, concluídas por último,
tanto nos cards quanto nos modais (details e edit).
Note dialog mais minimalista: remove labels redundantes, contadores
de caracteres, descriptions verbosas. Tarefas com line-through
quando concluídas, botão de remover mais sutil.
Cards de anotação agora usam grid responsivo (1/2/3 colunas)
igual aos cards de cartões, em vez de largura fixa 440px.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- magnet-lines: move useEffect antes do early return (hooks não podem
ser chamados condicionalmente), adiciona disabled aos deps
- use-month-period: memoiza [...MONTH_NAMES] com useMemo
- lancamentos-filters: handleFilterChange em useCallback
- inbox-page: sortByTimestamp em useCallback, atualiza deps dos useMemo
- note-card: remove formattedDate não utilizado do useMemo
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>
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>
- 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>
- 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>
- 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>
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>
- 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>
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>
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>
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>
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>
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>
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>