Currency conversion and password robustness
FX:
- Authenticated GET /rates endpoint; FX engine moved to the Currency context
- Currency converter screen + FX budget hint
- Consistent, currency-correct conversions across all screens (expenses
shown in the user's preferred currency)
Password robustness:
- Server-side password policy (min 12 + lowercase, uppercase, digit,
special char) enforced on registration and password change
- HaveIBeenPwned breached-password check (fail-open on outage)
- Frontend strength meter + rule hint on register and profile
Tooling: front-lint make target (angular-eslint) wired into pre-commit.