New "Récurrences" section lets users define recurring depense/epargne
models (name, category, default amount, day of month). Nothing is
created automatically: from the day a recurrence is due, it appears
as a pending proposal in Suivi (desktop + mobile) with an editable
amount, so variable bills (electricity, etc.) can be adjusted before
confirming. Dismissing a proposal skips it for the current month
without creating a transaction, and it reappears the following month.
- recurring_transactions table (household/category scoped, active flag,
last_generated_year/month to prevent duplicate generation)
- transactions.recurring_transaction_id nullable FK to trace origin
- RecurringTransactionPolicy mirrors CategoryPolicy tenant scoping
- 10 new Pest tests covering CRUD, tenant isolation, and the
pending/confirm/dismiss lifecycle across month boundaries (travelTo)
58/58 tests pass, Pint clean, verified end-to-end against production
data (test recurrence created and cleaned up).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The default email validation rule was vulnerable to CRLF injection
(GHSA-5vg9-5847-vvmq) in all 11.x releases with no backport available.
Upgraded to v12.64.0, the first patched line for this branch.
All 50 Pest tests pass unchanged, Pint clean, composer audit reports
no advisories. No application code changes needed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Laravel 11 + Livewire 3/Volt + Alpine.js + Tailwind app for household
budget planning, transaction tracking, and financial dashboards.
- Multi-tenant households with member invites
- Plan: monthly/yearly budget per category with overrides
- Suivi: transaction log with running balance (desktop + mobile quick-entry)
- Dashboard: budget vs tracked breakdown + Chart.js donuts
- Flux: Sankey diagram of income allocation
- WCAG 2.1 AA color tokens, dark mode, accessible tables/forms
- 50 Pest tests
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>