presentUser() ran on the public login/register routes where SetActingAccount
never runs, so ladill_account() was null and dereferencing it 500'd. Default
the acting account to the user at sign-in, and route identity-API calls through
a helper with timeouts that turns ConnectionException into a clean message
instead of an unhandled 500.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Use paymentTypes() (this app's catalog) so the chat context loads instead of
500ing — the eventTypes() call was a QR Plus leftover.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Login no longer uses the OAuth password grant (which wasn't enabled, the cause
of login failures). Both login and the new register endpoint proxy to
auth.ladill.com /api/identity/auth/* (shared IDENTITY_API_KEY_MINI), provision
the local mirror, and issue a Sanctum token — one Ladill identity across web
and app.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Token login via OAuth password grant against auth.ladill.com (AuthController),
plus /api/v1/mini endpoints (overview, payment-qrs CRUD + preview, payments,
payouts) mirroring the web Mini controllers. Sanctum abilities mini:read/write.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Local-only sign-out: end this app's session but leave the auth.ladill.com
session intact, so the signed-out page's Sign in again re-auths silently via
prompt=none. Full sign-out of all Ladill apps remains on account.ladill.com.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Persist payment QR business fields on update, handle is_active correctly, and keep the amount bottom sheet flush to the screen while moving with the keyboard on iOS.
Co-authored-by: Cursor <cursoragent@cursor.com>
Vendors can remove a payment QR from the show page; stored images are cleaned up and the short link stops resolving.
Co-authored-by: Cursor <cursoragent@cursor.com>
Amount entry slides up from the bottom on mobile; Paystack opens in a Ladill Mini sheet on mobile and a centered modal on desktop instead of leaving the site.
Co-authored-by: Cursor <cursoragent@cursor.com>
Customers enter an amount and tap Pay; the merchant's account email (or notifications email from settings) is passed to Paystack instead of asking the payer for details.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match Events/QR Plus pattern so QR images render without a separate authenticated preview URL, and add a styled preview card on the show page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Lean control center at mini.ladill.com: payment QR CRUD, Paystack checkout with 5% fee settlement via Billing API, payments feed, and payouts. QR codes use a fixed black-and-white preset only.
Co-authored-by: Cursor <cursoragent@cursor.com>