Commit Graph
58 Commits
Author SHA1 Message Date
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
isaaccladandCursor 9f0822d1ba Unify primary buttons with gradient pill design across the app.
Deploy Ladill Transfer / deploy (push) Successful in 26s
Add shared btn-primary components and plus icons on create/new actions; limit overview recent transfers to three.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:40:41 +00:00
isaaccladandCursor 1a95915e21 Separate share transfers from Files storage and add folder upload to New transfer.
Deploy Ladill Transfer / deploy (push) Successful in 28s
Transfers lists only intentional shares while Files shows all storage, and New transfer accepts folder picks with flattened file uploads.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:31:45 +00:00
isaaccladandCursor be3b719437 Make folders selectable and downloadable with item count and sharing status.
Deploy Ladill Transfer / deploy (push) Successful in 35s
Folder rows match the file table layout, support zip download, and participate in bulk selection, share, and copy-link actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:21:39 +00:00
isaaccladandCursor 449b9dc2ff Use standard folder input instead of showDirectoryPicker for uploads.
Deploy Ladill Transfer / deploy (push) Successful in 32s
Avoids the broader browser file-access permission dialog; the custom Ladill confirm modal still runs after folder selection.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:06:23 +00:00
isaaccladandCursor 7bf92e2d2c Create a Ladill folder when uploading a local folder and place files inside it.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Folder upload now names and creates the destination folder from the picked directory, uploads all files into it, and redirects to the new folder view.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:03:03 +00:00
isaaccladandCursor 14b00511ef Add custom upload confirmation and flatten folder uploads to individual files.
Deploy Ladill Transfer / deploy (push) Successful in 35s
Users confirm uploads in a Ladill modal before transfer, and folder picks upload flat file names into the current location instead of preserving local directory paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 22:00:29 +00:00
isaaccladandCursor 1f8f816f34 Widen filter dropdowns so labels clear the chevron icons.
Deploy Ladill Transfer / deploy (push) Successful in 25s
Give status and sort selects minimum width and extra right padding on Transfers and Files toolbars.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 21:54:19 +00:00
isaaccladandCursor f458dccd49 Polish Files UI and scope search to mobile-only transfers/files.
Deploy Ladill Transfer / deploy (push) Successful in 41s
Remove desktop header search, wire mobile search to the transfers and files page, refine file icons and Shared badge, and align Transfers toolbar with Files.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 21:47:33 +00:00
isaaccladandCursor f9b16f6b61 Add Files page upload flow with manual folders and duplicate handling.
Deploy Ladill Transfer / deploy (push) Successful in 44s
Users can create folders, upload files or folders, and choose replace or keep both on name conflicts instead of auto-grouping by transfer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 21:27:39 +00:00
isaaccladandCursor 19170d6bc7 Add transfer search and OneDrive-style Files storage UI.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Transfers now lists all shares with filters and pagination; Files becomes a selectable cloud view with download, share, delete, move, and open-in-email actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 20:59:05 +00:00
isaaccladandCursor b36148eeb6 Move Support under Account and fix transfer billing copy.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Align new-transfer and billing page wording with monthly wallet debits instead of implying transfers stay active indefinitely.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 20:28:06 +00:00
isaaccladandCursor 323fd1dd5c Add app-specific mail branding and sidebar Support links.
Deploy Ladill Transfer / deploy (push) Successful in 33s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 20:11:43 +00:00
isaaccladandCursor 7be2e67dd4 Reduce email template logo sizes, especially Ladill Transfer.
Deploy Ladill Transfer / deploy (push) Successful in 1m7s
Lower the shared header logo and add a smaller transfer-specific class instead of the oversized inline override.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 19:16:05 +00:00
isaaccladandCursor 151c15cb85 Return insufficient_wallet when Transfer billing fails for zero balance.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Expose a stable error_code on chunked upload finalize so webmail can prompt wallet top-up instead of a generic upload failure.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 17:13:19 +00:00
isaaccladandCursor c173256ded Use short ladill.com/q links for transfer shares and emails.
Deploy Ladill Transfer / deploy (push) Successful in 55s
Share URLs and API public_url values again use the platform domain so
ladill.com/q/* forwards to transfer.ladill.com like other Ladill apps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 16:08:22 +00:00
isaaccladandCursor c396c97ce2 Fix transfer share links and redesign recipient download email.
Deploy Ladill Transfer / deploy (push) Successful in 36s
Use transfer.ladill.com share URLs in notifications and APIs, add the email
logo, and show file details with a prominent download button.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 15:56:06 +00:00
isaaccladandCursor a0fce19402 Fix transfer recipient emails not sending in production.
Deploy Ladill Transfer / deploy (push) Successful in 48s
Map MAIL_ENCRYPTION to a valid SMTP scheme, send recipient notifications
synchronously, document mail/queue env vars, and add a supervisor worker template.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 15:04:19 +00:00
isaaccladandCursor 6cd2a75498 Fix transfer create uploads getting stuck and failing on submit.
Deploy Ladill Transfer / deploy (push) Successful in 31s
All files now upload through chunked sessions only, the file picker no longer
rewrites the queue on change, and create submits upload_ids instead of a broken
multipart files field.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 13:36:27 +00:00
isaaccladandCursor 4b616a7f04 Simplify recipient emails and add live upload progress on create.
Deploy Ladill Transfer / deploy (push) Successful in 47s
Recipients always get the download link immediately when an email is set.
Large files upload in the background with per-file and overall progress bars.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 13:25:43 +00:00
isaaccladandCursor c53191a41b Notify transfer owners when files enter grace period.
Deploy Ladill Transfer / deploy (push) Successful in 1m0s
Send grace-entered and countdown emails to owners alongside recipient grace milestones so unpaid transfers get clear wallet top-up reminders before deletion.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:44:38 +00:00
isaaccladandCursor 7c4673adb6 Add recipient email and milestone notifications on transfer create.
Deploy Ladill Transfer / deploy (push) Successful in 44s
Recipients can be emailed the download link immediately and at optional
reminders (7/3/1 days before unavailable, or when grace period starts).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:38:58 +00:00
isaaccladandCursor 311b5b40bb Bill transfer storage monthly with a 15-day grace period before deletion.
Deploy Ladill Transfer / deploy (push) Successful in 51s
Files stay available while wallet renewals succeed each month. Failed renewals
keep files for TRANSFER_GRACE_PERIOD_DAYS (default 15) before automatic cleanup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:28:33 +00:00
isaaccladandCursor 65b634bb0b Add chunked uploads and raise storage rate to GHS 0.30/GB/month.
Deploy Ladill Transfer / deploy (push) Successful in 39s
Large files upload in 5 MB chunks (hosting file manager pattern) for the
transfer UI and Ladill Mail S2S API, with no app-level file size cap when
TRANSFER_MAX_FILE_BYTES=0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:07:27 +00:00
isaaccladandCursor fb131cd7fa Add service API for Ladill Mail large attachment uploads.
Deploy Ladill Transfer / deploy (push) Successful in 39s
Webmail can POST /api/v1/transfers with a mailbox address to create share links for files above 25 MB.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 11:00:11 +00:00