Commit Graph
82 Commits
Author SHA1 Message Date
isaaccladandCursor 1ea5a9af03 Serve transfer landing inline for internal ladl.link proxy requests.
Deploy Ladill Transfer / deploy (push) Successful in 38s
Avoid redirecting satellite proxies back to ladl.link, which caused recipient short links to time out.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 20:55:50 +00:00
isaacclad 43ab9c7405 Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 1m8s
2026-06-29 17:53:42 +00:00
isaaccladandCursor eeeca0cfa9 Cap launcher dropdown at 15 visible apps (5 rows).
Deploy Ladill Transfer / deploy (push) Successful in 1m25s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 17:44:31 +00:00
isaaccladandCursor 64b021c582 Hide launcher down arrow when scrolled to the end.
Deploy Ladill Transfer / deploy (push) Successful in 33s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 14:48:17 +00:00
isaaccladandCursor 20dcc8cccc Revert launcher scroll rail and fade; keep down arrow hint.
Deploy Ladill Transfer / deploy (push) Successful in 43s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 14:01:42 +00:00
isaaccladandCursor 5177360395 Make launcher scroll affordance visible on open.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 13:52:26 +00:00
isaacclad d4795cff3c Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 52s
2026-06-29 13:30:17 +00:00
isaacclad 16162e939e Always show launcher scroll indicator and cap at 18 apps.
Deploy Ladill Transfer / deploy (push) Successful in 58s
Apply ladill-launcher-apps scroll styles unconditionally with a persistent
scrollbar track; propagate launcher blade and CSS across all Ladill apps.
2026-06-29 13:04:01 +00:00
isaaccladandCursor 1b70ef4873 Use + icon buttons on mobile dashboards.
Deploy Ladill Transfer / deploy (push) Successful in 37s
Sync mobile-header-btn partials, mobile x-btn.create, and update dashboard header actions for consistent mobile FABs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 16:23:03 +00:00
isaaccladandCursor 250ddd8cd4 Place wallet widget after Billing link in mobile profile sheet.
Deploy Ladill Transfer / deploy (push) Successful in 1m13s
Remove duplicate Billing header above Home; wallet card follows Billing
in menu order to match the desktop avatar dropdown.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 14:07:13 +00:00
isaaccladandCursor 5d4a68b53c Sync mobile profile wallet card and 24h session idle timeout.
Deploy Ladill Transfer / deploy (push) Successful in 52s
Show wallet balance prominently in the mobile profile bottom sheet with refresh
on open; align session lifetime with the platform default.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 12:46:20 +00:00
isaaccladandCursor 0fcf58d9d5 Hide header avatar on mobile and sync shared mobile nav partials.
Deploy Ladill Transfer / deploy (push) Successful in 55s
Profile moves to the bottom nav sheet on small screens; optional search tab
support is synced from the Ladill platform template.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 12:04:33 +00:00
isaacclad e9b0a72c1f Sync app launcher from registry — add Frontdesk.
Deploy Ladill Transfer / deploy (push) Successful in 44s
2026-06-28 01:46:49 +00:00
isaaccladandCursor 076b0f7803 Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 51s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 19:03:58 +00:00
isaaccladandCursor 575316a8fa Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 18:28:04 +00:00
isaaccladandCursor 1564eee380 Redirect legacy /q/* URLs to canonical ladl.link addresses.
Deploy Ladill Transfer / deploy (push) Successful in 33s
External /q requests 301/307 to ladl.link; internal X-Ladill-Internal requests still serve content for platform proxying.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 17:19:04 +00:00
isaaccladandCursor a171276bc2 Wire LadillLink through QrCode model and remaining QR surfaces.
Deploy Ladill Transfer / deploy (push) Successful in 31s
Public URLs, encoded payloads, slug preview, payment callbacks, and asset paths now use ladl.link instead of ladill.com/q/*.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 16:16:25 +00:00
isaaccladandCursor 7a1bc86b9e Use ladl.link URLs for all front-facing QR and short-link surfaces.
Deploy Ladill Transfer / deploy (push) Successful in 1m43s
Public landing pages, asset paths, payment callbacks, and redirects now go through QrCode::publicPath() / LadillLink instead of ladill.com/q/* routes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 15:46:33 +00:00
isaacclad 0505da7b75 Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 1m0s
2026-06-27 15:16:40 +00:00
fda38ec91f Add Accounting to the app launcher
Ladill Accounting is now live at accounting.ladill.com; add its row + icon to
the shared app launcher (byte-identical across all Ladill apps).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 13:49:42 +00:00
isaaccladandClaude Opus 4.8 a0a706093b Transfer: two-step add-funds modal on insufficient balance
Deploy Ladill Transfer / deploy (push) Successful in 48s
Creating a transfer that the wallet can't cover used to flash a bare error.
Detect the insufficient-balance case and open an in-app two-step modal (billing
explainer -> amount -> Paystack) on the create page instead, with an 'Add funds'
button to top up on demand.

- BillingClient::topup -> POST /api/billing/topup (Transfer already holds its key)
- WalletTopupController + route POST /wallet/topup (user.wallet.topup)
- store() flashes open_topup_modal on TransferWalletErrors::isInsufficientBalance
- service-topup-modal made two-step (uses <x-modal>, plain POST -> checkout)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 07:15:38 +00:00
isaaccladandClaude Opus 4.8 c9994129dc Add branded boot splash (Ladill Mail style) on app pages
Deploy Ladill Transfer / deploy (push) Successful in 36s
InjectBootSplash middleware shows a self-branded loading splash once per session
while the app boots, then fades out.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 22:16:01 +00:00
isaaccladandClaude Opus 4.8 0712b7d6c6 Update POS launcher icon (app launcher + marketing)
Deploy Ladill Transfer / deploy (push) Successful in 28s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:47:23 +00:00
isaaccladandCursor 0a16b6578c Sync app launcher config and add POS icon.
Deploy Ladill Transfer / deploy (push) Successful in 30s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 22:53:30 +00:00
isaaccladandCursor 2673901995 Standardize desktop topbar widgets to match CRM layout.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 18:15:44 +00:00
isaaccladandClaude Opus 4.8 004a578218 Add wallet balance widget to the profile menu (after Billing)
Deploy Ladill Transfer / deploy (push) Successful in 30s
Wallet balance peek rendered as a menu row directly under Billing, backed by
a /wallet/balance endpoint (BillingClient) and guarded by Route::has. Also
opens Afia via a direct window event for reliability.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:26:29 +00:00
isaaccladandClaude Opus 4.8 0f2e3d176d Add CRM to the Ladill app launcher
Deploy Ladill Transfer / deploy (push) Successful in 25s
crm.ladill.com is now live in the suite; add its launcher row + icon
(byte-identical shared launcher config).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 22:41:28 +00:00
isaaccladandClaude Opus 4.8 2ef007ee46 Add Invoice to the app launcher
Deploy Ladill Transfer / deploy (push) Successful in 1m10s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 14:19:12 +00:00
isaaccladandClaude Opus 4.8 4a4024799c Fix dropped auth.service middleware alias breaking service APIs
Deploy Ladill Transfer / deploy (push) Successful in 32s
Middleware::alias() replaces the alias map rather than merging, so the
second alias() call (platform.session, added in d491130) silently
removed the auth.service alias. Every service-to-service route
(auth.service:transfer) then failed with "Target class [auth.service]
does not exist", returning 500 to webmail/mobile for Transfer file
listing and uploads. Merge both aliases into a single alias() call.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 21:11:11 +00:00
isaaccladandCursor d491130b14 Bind app sessions to the platform auth session.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Clear local sessions when auth.ladill.com signs out and ping the platform session from keepalive.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-20 08:26:30 +00:00
isaaccladandCursor ccffa1433d Route SMS voice uploads through Transfer with wallet billing.
Deploy Ladill Transfer / deploy (push) Successful in 28s
Add a service API for the Ladill SMS platform to store voice recordings in Transfer and charge monthly storage from the customer wallet.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-20 02:23:18 +00:00
isaaccladandCursor eb9023340f Add Ladill SMS to shared app launcher.
Deploy Ladill Transfer / deploy (push) Successful in 44s
Include sms.ladill.com in the cross-app launcher and ship the SMS icon asset.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 23:12:36 +00:00
isaaccladandCursor c54bce1ca7 Hide the current page link in the unified profile dropdown.
Deploy Ladill Transfer / deploy (push) Successful in 46s
Skip Home, account, and admin menu items when the user is already on that destination.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 10:16:52 +00:00
isaaccladandCursor 2499244049 Fix corrupted profileMenuItems in layouts after menu propagation.
Deploy Ladill Transfer / deploy (push) Has been cancelled
Remove orphaned array entries that caused Blade parse errors and 500 responses on authenticated pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 10:04:58 +00:00
isaaccladandCursor b80dd06831 Unify logged-in profile dropdown with platform account menu.
Deploy Ladill Transfer / deploy (push) Successful in 42s
Wire UserProfileMenu and shared Blade partial into topbar, mobile nav, and layouts so menu items match the account portal (Ladill Mail excluded).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 09:34:07 +00:00
isaaccladandCursor 62f3f73ff7 Remove centralized account nav from app sidebar; redirect legacy URLs.
Deploy Ladill Transfer / deploy (push) Successful in 32s
Wallet, Billing, Team, Developers, and Support live on account.ladill.com.
Siloed sidebars keep product nav and app Settings only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 00:42:38 +00:00
isaaccladandCursor 61a6c6b9cb Restore silent SSO on app entry for users switching between apps.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Guests without a local session try prompt=none SSO first; marketing pages
are only for visitors with no platform session (localhost fix retained).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 13:47:25 +00:00
isaaccladandCursor 9574abba90 Fix guest entry: correct marketing URL and stop auto silent SSO.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Correct localhost marketing_url default and stop redirecting guests through
/sso/connect on visit; SSO starts only via explicit sign-in.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 13:09:17 +00:00
isaaccladandCursor 75fdd0255d Replace native confirm dialogs with Ladill modal for file deletes.
Deploy Ladill Transfer / deploy (push) Successful in 36s
Use the existing ladillConfirm store on the Files page and x-confirm-dialog on transfer delete so confirmations match the rest of Transfer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 23:01:23 +00:00
isaaccladandCursor ea58a13fce Add service API to list mailbox files for Ladill Mail.
Deploy Ladill Transfer / deploy (push) Successful in 1m8s
Expose GET /api/v1/transfers/files so webmail can sync the mobile Files tab with Transfer storage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 00:39:37 +00:00
isaaccladandCursor 26cc0c9a64 Send SSO guests to ladill.com/products/transfer instead of subdomain landings.
Deploy Ladill Transfer / deploy (push) Successful in 57s
Remove interactive OAuth fallback on silent SSO failure and add ladill.marketing_url config so app subdomains open the dashboard when signed in locally.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 22:22:17 +00:00
isaaccladandClaude Opus 4.8 042abc83a5 Afia: render markdown bold in chat instead of showing raw asterisks
Deploy Ladill Transfer / deploy (push) Successful in 47s
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>
2026-06-11 08:41:28 +00:00
isaaccladandClaude Opus 4.8 40bfae6fb6 Afia: fix transfer chat context querying nonexistent download_count
Deploy Ladill Transfer / deploy (push) Successful in 54s
context() selected/used download_count on the transfers table, but the
column is downloads_total (see model + migration) — every Afia chat 500'd
with 'could not respond' before reaching the LLM. Use downloads_total.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 06:19:22 +00:00
isaaccladandClaude Opus 4.8 dac231092b Per-app logout keeps platform SSO session (quick password-less re-entry).
Deploy Ladill Transfer / deploy (push) Successful in 53s
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>
2026-06-10 11:23:42 +00:00
isaaccladandClaude Opus 4.8 6f3a9bb19f Add Merchant to app launcher.
Deploy Ladill Transfer / deploy (push) Successful in 41s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 11:03:20 +00:00
isaaccladandCursor 0a04f31ade Fix SSO popup callback infinite loop and post-login 500.
Deploy Ladill Transfer / deploy (push) Successful in 1m25s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 20:21:38 +00:00
isaaccladandCursor 52b9a6fd6e Make SSO popup fallback URL work without controller changes.
Deploy Ladill Transfer / deploy (push) Successful in 24s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 16:05:26 +00:00
isaaccladandCursor 61838ead09 Fix SSO popup login 500 and add branded signed-out pages.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 15:46:18 +00:00
isaaccladandCursor 60f72cfba5 Keep the app subdomain visible during Ladill SSO login and logout.
Deploy Ladill Transfer / deploy (push) Successful in 43s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 12:15:20 +00:00
isaaccladandCursor 06bbea4593 Add Ladill Give to the shared app launcher.
Deploy Ladill Transfer / deploy (push) Successful in 1m38s
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>
2026-06-09 10:34:03 +00:00