Aproveitamento parcial da PR #18 (fechada):
- Bulk delete: quando todos os selecionados pertencem à mesma série
(parcelado/recorrente), abre dialog de escopo com 3 opções ao invés
de deletar direto
- Recorrente no cartão: despesa recorrente só consome limite quando
purchaseDate <= current_date (cartões ativos, inativos e relatório)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Corrigir layout truncado no card de parcelas (analise-parcelas)
- Empilhar cards de top estabelecimentos e categorias no mobile
- Ajustes gerais de responsividade em múltiplos componentes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Separar selects de conta e cartão por forma de pagamento
- Remover opção Boleto do modal
- Usar InlinePeriodPicker ao selecionar cartão de crédito
- Grid full-width (sm:grid-cols-3) e DatePicker compact
- Reduzir espaçamento geral do modal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
Formatação automática do Biome em fatura/page, categorias/page e
extrato/page — apenas line wrapping de destructuring de Promise.all.
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>