Commit Graph
96 Commits
Author SHA1 Message Date
isaacclad 270d77b901 Remove desktop header search from app topbars.
Deploy Ladill Transfer / deploy (push) Successful in 1m13s
Drop the lg+ topbar search field; mobile search entry points are unchanged.
2026-07-09 06:57:33 +00:00
isaacclad 4c3cc6de6a Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 52s
2026-07-07 23:14:23 +00:00
isaacclad 1d6f1df615 Show boot splash on app open/reload for logged-in users.
Deploy Ladill Transfer / deploy (push) Successful in 1m22s
Replace the once-per-session sessionStorage guard (which suppressed the loading
screen after its first appearance) with entry-aware logic: show on app entry
and reloads, suppress on internal link navigations and back/forward.
2026-07-07 20:36:17 +00:00
isaacclad 28a3d0449c Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 46s
2026-07-07 14:43:32 +00:00
isaacclad 309533ddb0 Prefer system npm in deploy CI when portable node-gyp is broken.
Deploy Ladill Transfer / deploy (push) Successful in 49s
Falls back to downloading Node only when host npm is unavailable, fixing npm ci failures on ladill-deploy-runner.
2026-07-07 00:46:54 +00:00
isaacclad a9bd509985 Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Failing after 2s
2026-07-07 00:22:25 +00:00
isaaccladandCursor 453cb9da24 Hide redundant My files breadcrumb on the Files root page.
Deploy Ladill Transfer / deploy (push) Successful in 1m5s
Only show folder breadcrumbs when navigating inside a folder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 20:55:02 +00:00
isaaccladandCursor 49ff64eda3 Add hero sections to Transfers and Files index pages.
Deploy Ladill Transfer / deploy (push) Successful in 31s
Surface wallet balance and key stats at a glance, matching the layout used across other Ladill apps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 20:47:15 +00:00
isaaccladandCursor aa2db7186a Store transfer files on Contabo Object Storage like Ladill Meet.
Deploy Ladill Transfer / deploy (push) Successful in 50s
Add transfer-files S3 disk, config-driven uploads, and an artisan command to migrate existing local blobs to object storage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 20:01:49 +00:00
isaaccladandCursor ae84295c12 Propagate shared copy-button component and clipboard helper.
Deploy Ladill Transfer / deploy (push) Successful in 1m34s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 23:04:46 +00:00
isaacclad 84afc4bcf7 Sync mobile notification badge and dashboard icon-link partials.
Deploy Ladill Transfer / deploy (push) Successful in 45s
Align mobile unread badge with desktop and add plus icon support for panel actions.
2026-07-03 22:41:01 +00:00
isaacclad c13bf4357c Sync app launcher from registry
Deploy Ladill Transfer / deploy (push) Successful in 1m44s
2026-07-01 17:05:58 +00:00
isaaccladandCursor f13243c4b6 Throttle platform SSO session checks to cut per-request auth latency.
Deploy Ladill Transfer / deploy (push) Successful in 1m5s
Verify auth.ladill.com at most once every 90s; recommend Redis for session/cache in .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 16:51:29 +00:00
isaacclad 5e9fd3861c Add Queue to app launcher config and icon.
Deploy Ladill Transfer / deploy (push) Successful in 32s
Propagated from ladill monorepo launcher sync.
2026-06-29 22:12:15 +00:00
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