whisper-money/app/Http/Controllers
Cline Bot 30a79b6883 feat: add Plaid provider for US bank sync
Adds full Plaid integration as a new banking provider:

Backend:
- Add Plaid to BankingProvider enum (credential fields, account type, usesApiKey)
- Add Plaid to TransactionSource enum
- PlaidClient — wraps Plaid REST API (link/token/create,
  /item/public_token/exchange, /transactions/sync,
  /accounts/balance/get, /accounts/get)
- PlaidController — createLinkToken + store (exchange public_token
  for access_token, create connection with pending accounts)
- PlaidTransactionSyncService — sync via /transactions/sync endpoint
- PlaidBalanceSyncService — sync via /accounts/balance/get
- PlaidSyncer — orchestrator, registered in BankingConnectionSyncerFactory
- plaid config entry in config/services.php
- Routes for /open-banking/plaid/link-token and /open-banking/plaid/connect

Frontend:
- Plaid entry in CONNECT_PROVIDERS registry
- usesSdk flag on ConnectProvider type for SDK-based providers
- Plaid Link flow in useConnectFlow hook (CDN-based Plaid Link SDK)
- ProviderCredentialFields shows description text for SDK providers

Tests:
- PlaidControllerTest (link token, connect, invalid token, validation)
- BankingConnectionSyncerFactoryTest updated for PlaidSyncer
2026-07-07 13:36:28 -05:00
..
Ai fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
Api refactor: consolidate duplicated financial calculations (#643) 2026-07-04 22:26:44 +02:00
Auth fix: verify email via signed link without requiring login (#490) 2026-06-05 10:01:32 +02:00
OpenBanking feat: add Plaid provider for US bank sync 2026-07-07 13:36:28 -05:00
Settings fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
Sync refactor(api): standardize serialization via model $hidden (#492) 2026-06-05 13:57:34 +02:00
AccountBalanceController.php feat: investment benefits — show gains/losses on investment accounts (#140) 2026-02-23 13:59:10 +01:00
AccountController.php perf(accounts): defer the account ledger prop on show (#632) 2026-07-03 17:40:08 +02:00
BudgetController.php feat: add catch-all budgets (#527) 2026-06-15 16:07:19 +00:00
CashflowController.php refactor(api): standardize serialization via model $hidden (#492) 2026-06-05 13:57:34 +02:00
Controller.php Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
DashboardController.php refactor: consolidate duplicated financial calculations (#643) 2026-07-04 22:26:44 +02:00
EncryptionController.php refactor(encryption): strip client-side transaction encryption (#514) 2026-06-20 16:13:26 +00:00
IntegrationRequestController.php feat(integration-requests): add done status and fix review command crash on orphaned author (#601) 2026-06-27 14:42:09 +00:00
LoanDetailController.php feat(loans): backfill historical balances on loan creation (#322) 2026-04-24 13:09:34 +01:00
OnboardingController.php feat(ai): defer per-transaction categorization until onboarding completes (#536) 2026-06-15 17:33:26 +02:00
ReEvaluateTransactionRulesController.php fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
RealEstateDetailController.php feat(accounts): add real estate asset tracking (#241) 2026-03-24 10:21:32 +00:00
RobotsController.php User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
SitemapController.php SEO landing page 2025-11-25 11:33:11 +01:00
SubscriptionController.php feat(subscriptions): trial/pricing A/B/C experiment (#600) 2026-06-27 18:00:15 +02:00
TransactionController.php perf(ai): reduce N+1 in bulk category updates (PHP-LARAVEL-40, partial) (#624) 2026-07-03 07:52:19 +02:00
UserLeadController.php feat: verify waitlist leads (#285) 2026-04-14 11:26:01 +01:00