wazy7 / wazy8 — patch changelog (after wazy6) ===================================== WHERE wazy6 LEFT OFF -------------------- - OTP verify matched Control Panel queue (otpMatches + delivery table). - No PHPMailer/SMTP for inclusion OTP (queue only). - debug-otp.php, tools-hub.php, create-otp-table.php for shared hosting. - Wire beneficiary save + inclusion code modal on wire form. - Stale patch-folders-export.zip warning (use this Desktop build instead). WHAT wazy7 ADDS (perfecting live — do NOT re-register beneficiaries on production) --------------------------------------------------------------------------------- 1. OTP completion dialog - After verify: "Beneficiary added successfully" + Continue wire / View registry. 2. Wire beneficiary picker (main form) - Dropdown lists working-registry accounts already authorized for wires. - Banking details read from system — pick name only; no re-entry on wire form. 3. "Register new beneficiary" panel (collapsed) - ONLY for adding NEW accounts not already on live registry. - Do not use this to re-enter existing live beneficiaries (Canada Ops, etc.). 4. IBAN / account number field - Plain input only: no datalist, no browser remember/autocomplete dropdown. 5. Legacy regional ops desks (Canada Ops, Colombia Ops, …) stay wire-selectable when stuck in awaiting_otp. 6. Fast-track OTP after self-service save (config: inclusion_otp_fast_track_after_save). PRODUCTION SAFETY (live already has beneficiaries) --------------------------------------------------- - MERGE these files over secure/ — do not run OperatorBootstrapSeeder on production. - Do not bulk-register beneficiaries from the wire form for names already on live. - Use "Register new beneficiary" only for genuinely new accounts. - After merge: php artisan optimize:clear (or tools-hub clear_cache=1). wazy8/wazy9 HOTFIX (live "inclusion code is incorrect") ------------------------------------------------------- Root causes on shared hosting: 1. Verify used to issue a NEW code when status was pending_processing or awaiting_otp (invalidates CP code). 2. Control Panel queue auto-repair could rotate codes (now off by default). 3. Digest vs delivery drift — verify now checks bcrypt digest first, then delivery plaintext. Upload wazy9 files, then: php artisan optimize:clear debug-otp.php?account_id=ID&test_otp=CODE (must show MATCH) If still wrong: debug-otp.php?account_id=ID&repair=1 → use ONLY that new code. .env on live (recommended): INCLUSION_OTP_FAST_TRACK_AFTER_SAVE=true INCLUSION_OTP_AUTO_REPAIR_ON_QUEUE_LOAD=false FILES NEW IN wazy7 vs wazy6 --------------------------- - app/Models/Account.php - app/Support/InclusionOtpPresentation.php - resources/views/partials/registration-completion-dialog.blade.php - Updated: WireBeneficiaryAccountService, AccountRegistrationService, WorkingAccountInclusionOtpService, BankTransferController, AccountController, DashboardController, BankTransferWireSecurityService, wire-beneficiary-registration-form, accounts-bank-transfer, accounts-engine-script, bank-transfer-workspace-script, working-accounts-registry-inner, config/accounts.php