Commit Graph
93 Commits
Author SHA1 Message Date
isaacclad 0c163d5628 Fix deploy tmp paths: drop unset gitea.run_attempt.
Deploy Ladill Transfer / deploy (push) Successful in 2m17s
act_runner v0.2.x does not expose gitea.run_attempt, so release archive and
workspace paths rendered with a trailing dash. Use gitea.run_id only, matching
the Meet/CRM deploy workflows.
2026-07-17 12:54:45 +00:00
isaacclad df2b4cf4bc Remove Merchant, Mini, and Give from the app launcher.
Deploy Ladill Transfer / deploy (push) Successful in 3m14s
Registry marks them soon pending BoG licensing; propagate the clean launcher so every app matches.
2026-07-15 13:29:29 +00:00
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
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 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
isaaccladandCursor e76955eaa4 Reduce Transfer storage price to GHS 0.15 per GB per month.
Deploy Ladill Transfer / deploy (push) Successful in 40s
Updates config default, env examples, and removes hardcoded GHS 1.00 copy on the dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:45:12 +00:00
isaaccladandCursor 45ccd04163 Differentiate Billing from Wallet with storage usage breakdown.
Deploy Ladill Transfer / deploy (push) Successful in 27s
Billing lists per-transfer storage costs and monthly estimates; Wallet stays focused on balance and top-up.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:43:56 +00:00
isaaccladandCursor c0c95c4bc8 Fix settings save 500 by dropping Events-only preference columns.
Deploy Ladill Transfer / deploy (push) Successful in 33s
Transfer qr_settings only stores notify_email and product_updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:29:40 +00:00
isaaccladandCursor b400ca1322 Make Gitea repo creation script executable.
Deploy Ladill Transfer / deploy (push) Successful in 29s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:25:33 +00:00
isaaccladandCursor a1ab03b16d Update Transfer billing page copy for storage pricing.
Deploy Ladill Transfer / deploy (push) Successful in 22s
Replace leftover QR Plus per-code billing text with Transfer retention pricing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:24:22 +00:00
isaaccladandCursor b09a72cefc Scope Afia assistant to Ladill Transfer.
Deploy Ladill Transfer / deploy (push) Successful in 45s
Replace Mini/QR Plus copy and system prompt with Transfer file-sharing context, suggestions, and dashboard metrics.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 10:11:27 +00:00
isaaccladandCursor de999851d0 Add Gitea repo creation script and clean accidental artifacts.
Deploy Ladill Transfer / deploy (push) Failing after 36s
Remove sqlite stub and test disk files from version control.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 09:26:13 +00:00
isaaccladandCursor c1e3d8b3ac Initial Ladill Transfer app — file sharing with QR links.
Scaffolded from the Ladill mini/events extraction pattern: multi-file transfers,
retention controls, public landing pages, analytics, and Gitea deploy workflow.

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