Ship full-featured mobile clients with auth, payments, QRs, push notifications, and iOS polish including Figtree typography, app icons, and QR previews.
Co-authored-by: Cursor <cursoragent@cursor.com>
settings() now fetches phone from the central identity profile (guarded), so the
app's Profile screen shows the phone the user previously saved.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
GET /api/v1/mini/wallet/banks?type=bank|mobile_money proxies to the central
identity banks endpoint so the app's payout sheet populates from Paystack.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Support is now a ticket system proxied to the central identity support API:
GET/POST /mini/support/tickets and GET /mini/support/tickets/{id}. Removed the
Afia-backed /support/chat route.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds account avatar upload (multipart proxy to identity), wallet payout-account
+ withdrawal endpoints, and a hourly mini:cancel-stale-payments command that
cancels payments pending beyond 6h (new MiniPayment::STATUS_CANCELED).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds /api/v1/mini account (settings, profile, change-password), wallet (balance
+ ledger, Paystack top-up) and support (Afia chat) endpoints. Account/profile/
password/top-up proxy to the central identity API via a CallsIdentityApi trait;
notifications, wallet balance and support chat are served locally.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Replies came back with **bold** markup that displayed literally to users.
Render the bubble as HTML (escaped first for safety) and convert **text** to
<strong>; newlines already handled by whitespace-pre-line.
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>
Mini shipped the QR Plus Afia prompt. Rewrite it for Ladill Mini — payment
QRs, payments, payouts, 5% fee.
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>
Sync ladill_launcher.php and give.svg across all extracted apps so Give appears in every product switcher.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace stale placeholder text about future Ladill Pay integration with accurate wallet withdrawal guidance.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace Ladill Mini with Secured by Paystack. Powered by Ladill Pay on checkout and Paystack sheet footers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Checkout and settlement now go via platform Pay instead of direct Paystack + Billing credit, with legacy MIN-* support retained.
Co-authored-by: Cursor <cursoragent@cursor.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>
Route Paystack receipts to pay@ladill.com instead of vendor emails, and load Figtree on the public payment and confirmation screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Restore the bottom-sheet iframe on mobile and redirect desktop to the hosted checkout URL, matching other Ladill apps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Paystack blocks checkout in third-party iframes, so payment QRs now navigate to the hosted checkout URL and prefer authorization_url from the initialize response.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bottom sheet on mobile and centered dialog on desktop, with clear consequences and the public link shown before confirming.
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>
Use a flex column layout so the bottom sheet hugs amount, Pay, and footer while branding fills the space above.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the icon card, enlarge the launcher, and keep amount entry in the half-height bottom sheet only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show the Ladill Mini launcher icon in the page header with the payment form in a 50vh bottom sheet containing the merchant name and amount entry.
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>
Define QR type before the wallet balance check so payment codes skip billing without hitting an undefined variable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add a platform DB connection and PlatformSetting model so Mini uses the same admin-panel Paystack credentials as the monolith and other extracted apps.
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>