Commit Graph
17 Commits
Author SHA1 Message Date
isaacclad 247ceaf105 Open Paystack from the Pay click gesture, not after fetch.
Deploy Ladill Link / deploy (push) Successful in 59s
Paystack blocks iframes, so checkout uses a popup beside the sheet/modal chrome. Opening about:blank on the user tap keeps that window from being blocked after the async initiate response.
2026-07-21 18:14:13 +00:00
isaacclad ecfb98940e Fix Paystack sheet: stop iframe embeds that Paystack blocks.
Deploy Ladill Link / deploy (push) Successful in 59s
Paystack checkout.paystack.com returns X-Frame-Options: SAMEORIGIN, so the shared sheet opened empty. Keep mobile sheet/desktop modal chrome, launch checkout in a named window with a Continue CTA fallback, and escape payment-return via window.opener or top.
2026-07-21 17:35:43 +00:00
isaacclad f45fdcd159 Add Campaigns module for grouping short links.
Deploy Ladill Link / deploy (push) Successful in 1m26s
Let accounts organise links by promo or launch, attach or detach links, and view combined click totals from the sidebar.
2026-07-16 20:43:11 +00:00
isaacclad 86cac606e0 Surface destination edits as the core dynamic short-link feature.
Deploy Ladill Link / deploy (push) Successful in 1m40s
Move destination editing to the top of the link page, clarify that the short URL never changes, prevent caches from pinning old redirects, and test that later destination updates take effect immediately.
2026-07-16 20:12:14 +00:00
isaacclad d45f4b5c58 Make Ladill Link short URLs fully dynamic at click time.
Deploy Ladill Link / deploy (push) Successful in 1m55s
Forward query strings and path suffixes to the live destination, resolve public hosts from config/custom domains instead of hardcoding ladl.link, and keep proxy Location rewrites on the visitor host.
2026-07-16 20:05:43 +00:00
isaaccladandCursor 520284d766 Exempt Mini Pay POSTs from Link CSRF checks.
Deploy Ladill Link / deploy (push) Successful in 1m4s
Proxied ladl.link/{slug}/pay requests carry CSRF tokens from Mini HTML, which cannot bind to Link's session — the same 419 failure mode as event registration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 23:11:59 +00:00
isaaccladandCursor 344bf76391 Add GeoIP country fallback for link click analytics.
Deploy Ladill Link / deploy (push) Successful in 39s
Resolve countries from CDN headers first, then MaxMind GeoLite2 via visitor IP, with an artisan command to download and refresh the database.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 23:36:01 +00:00
isaaccladandCursor ac7bef1e24 Exempt public event registration POST from ladill-link CSRF checks.
Deploy Ladill Link / deploy (push) Successful in 46s
Registration forms post to ladl.link first; Events-issued CSRF tokens cannot
validate against the Link app session and caused token mismatch errors.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 14:18:33 +00:00
isaaccladandCursor 4dedcf84f6 Forward JSON registration POST bodies through the ladl.link proxy.
Deploy Ladill Link / deploy (push) Successful in 41s
Event signup from ladl.link sends application/json; re-encoding as form
data dropped the payload and caused failed registrations to redirect to
ladl.link/undefined.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 14:06:36 +00:00
isaaccladandCursor 317a2f1981 Route event registration paths directly to Events so confirmation pages resolve.
Deploy Ladill Link / deploy (push) Successful in 1m30s
ladl.link was proxying registered/* through ladill.com first, where registrations
do not exist, causing 404s after successful event signup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 13:44:51 +00:00
isaaccladandCursor 1742fb859f Fall back to Events when platform QR proxy returns 404.
Deploy Ladill Link / deploy (push) Successful in 48s
Event pages like sales-webinar live on events.ladill.com, but ladl.link
only proxied to ladill.com/q/* — fix by retrying events.ladill.com when
the platform hub has no matching code.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 08:19:29 +00:00
isaaccladandCursor c5e92012ff Fix ladl.link transfer QR redirect loop causing 500 errors.
Deploy Ladill Link / deploy (push) Successful in 1m1s
Proxy transfer paths directly to transfer.ladill.com and stop following ladl.link redirects server-side so recipient links resolve.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 20:55:48 +00:00
isaaccladandCursor 0e5e0f6ca5 Add device, platform, and country analytics to link show page.
Deploy Ladill Link / deploy (push) Successful in 32s
Record parsed user-agent and geo data on clicks, then surface breakdowns and richer recent-click context on per-link and account analytics views.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 19:32:40 +00:00
isaaccladandCursor 7cdb1ef409 Redirect legacy /q/* URLs to canonical ladl.link addresses.
Deploy Ladill Link / deploy (push) Successful in 27s
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 5982165128 Fix ladl.link 404s for QR ecosystem slugs.
Deploy Ladill Link / deploy (push) Successful in 31s
Only direct Link redirects use destination_url; catalog QR slugs proxy through the platform resolver instead of malformed summary URLs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 15:26:27 +00:00
isaaccladandCursor 5a3631cd2e Fix Afia AI assistant for Ladill Link.
Deploy Ladill Link / deploy (push) Successful in 31s
Wire the chat route and Link-scoped system prompt, include the Afia panel in the main layout, and point the UI at link.afia.chat instead of the copied QR Plus route.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 14:31:00 +00:00
isaacclad 04e4f6ab51 Bootstrap Ladill Link from QR Plus extract template. 2026-06-27 10:54:31 +00:00