- Nova Landing Page institucional em /
- Seções: Hero, Features, Pricing, FAQ, CTA, Footer
- Pricing integrado com API de planos
- Register.jsx agora suporta seleção de plano
- Parâmetro ?plan=slug na URL do registro
- Traduções EN, ES, PT-BR para landing
- PayPal configurado no servidor (sandbox)
Versão: 1.54.0
- Add UserManagementController@store for creating users
- Add POST /api/admin/users endpoint
- Support user types: Free, Pro, Admin
- Auto-create 100-year subscription for Pro/Admin users
- Add user creation modal to Users.jsx
- Complete SaaS limit testing:
- Free user limits: 1 account, 10 categories, 3 budgets, 100 tx
- Middleware blocks correctly at limits
- Error messages are user-friendly
- Usage stats API working correctly
- Update SAAS_STATUS.md with test results
- Bump version to 1.51.0
- Criar tabela plans com Free, Pro Monthly, Pro Annual
- Criar tabela subscriptions com status e integração PayPal
- Criar tabela invoices com numeração sequencial WM-YYYY-NNNNNN
- Models: Plan, Subscription, Invoice com helpers
- User: hasActiveSubscription(), onTrial(), currentPlan(), etc.
- API: GET /api/plans (público)
- Seeder: PlansSeeder com 3 planos base
- Fase 2 do roadmap SaaS concluída
## New Features
- Email notifications for overdue and upcoming payments
- User preferences page for notification settings
- Daily scheduler to send alerts at user-configured time
- Smart analysis: payable items, transfer suggestions between accounts
## Backend
- Migration for user_preferences table
- SendDuePaymentsAlert Artisan command
- DuePaymentsAlert Mailable with HTML/text templates
- UserPreferenceController with test-notification endpoint
- Scheduler config for notify:due-payments command
## Frontend
- Preferences.jsx page with notification toggle
- API service for preferences
- Route and menu link for settings
- Translations (PT-BR, EN, ES)
## Server
- Cron configured for Laravel scheduler
Version: 1.44.5
- Adicionado selectedCategory nas dependências do useCallback
- Criado useEffect separado para recarregar quando categoria muda
- Removido loadData() dos handlers (agora feito pelo useEffect)
Isso resolve o problema de estado assíncrono onde setSelectedCategory
não atualizava antes de loadData() ser chamado.
A query padrão agora agrupa por categoria pai usando COALESCE(c.parent_id, c.id),
somando as transações de todas as subcategorias.
Antes: Transações em subcategorias (Supermercado, Restaurantes) não apareciam
Agora: Alimentação mostra total de Supermercado + Restaurantes + todas subcategorias
ADDED:
- Relatório Por Categoria agora suporta drill-down clicável
- Clicar em categoria pai exibe gráfico com suas subcategorias
- Botão Voltar para retornar às categorias principais
- Hover visual em linhas de tabela e cards clicáveis
- Backend aceita parent_id como parâmetro em /reports/by-category
CHANGED:
- Backend: query padrão mostra apenas categorias pai (parent_id IS NULL)
- Backend: nova query para subcategorias quando parent_id é fornecido
- Frontend: estado selectedCategory para rastrear navegação
- Frontend: onClick handlers em gráfico, tabela e cards
TRANSLATION:
- pt-BR: Distribuição de Subcategorias
- es: Distribución de Subcategorías
- en: Subcategory Distribution
- Usar displayColor ao passar cor para filhos (não category.color)
- Fallback para cor padrão se categoria não tiver cor
- Garante que todas as subcategorias usem a mesma cor da categoria pai
- Service Worker v1.39.0 com estratégias offline-first
- Cache-First: imagens, fontes (resposta imediata)
- Network-First: chamadas API (dados frescos)
- Stale-While-Revalidate: HTML/CSS/JS
- Verificação de atualizações a cada 1 hora
- Prompt de atualização quando nova versão disponível
- manifest.json otimizado: scope, categories, prefer_related_applications
- Meta tags iOS: apple-mobile-web-app-capable, black-translucent
- Registro automático do Service Worker em main.jsx
- Documentação completa: docs/INSTALACAO_iOS.md
- Compatível com upgrade futuro para Capacitor (30 min, zero mudanças)
Deploy: frontend/dist deployed to 213.165.93.60