48 Commits
Author SHA1 Message Date
isaacclad 25ce2bc9de Retire Events subscriptions and owner payment gateways.
Deploy Ladill Events / deploy (push) Successful in 55s
Make Ladill Events free for all accounts, remove plan upgrade UI, force Ladill Pay only for tickets and contributions, and reinstate standard platform fees.
2026-07-24 14:15:34 +00:00
isaacclad ce5ef67a7c Stop Paystack pre-modal flash on customer checkout.
Deploy Ladill Events / deploy (push) Successful in 1m25s
Use the shared Inline sheet, hold busy until payment UI opens, and avoid locking page scroll during the handoff.
2026-07-24 10:14:40 +00:00
isaacclad 7f65204127 Simplify Paystack checkout handoff
Deploy Ladill Events / deploy (push) Successful in 47s
2026-07-24 08:25:35 +00:00
isaaccladandCursor 1bcbdbfdb1 Make Events payment routing plan-aware.
Deploy Ladill Events / deploy (push) Successful in 51s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 19:47:10 +00:00
isaacclad 837c249634 Restore Paystack Inline in-page sheet/modal; stop separate-browser checkout.
Deploy Ladill Events / deploy (push) Successful in 1m6s
Pass access_code through pay responses and launch PaystackPop from the shared sheet instead of window.open.
2026-07-21 19:12:24 +00:00
isaacclad 14c17fffa7 Keep Paystack sheet/modal visible; open Paystack from Continue.
Deploy Ladill Events / deploy (push) Successful in 34s
Stop auto-popups that steal focus, use one responsive panel, and skip ladl.link redirects for JSON pay requests.
2026-07-21 18:46:26 +00:00
isaacclad d7ce7459a5 Open Paystack from the Pay click gesture, not after fetch.
Deploy Ladill Events / deploy (push) Successful in 57s
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:13:33 +00:00
isaacclad 51244c7bad Fix Paystack sheet: stop iframe embeds that Paystack blocks.
Deploy Ladill Events / deploy (push) Successful in 37s
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:34:35 +00:00
isaacclad 183f0305ce Present Paystack checkout in a responsive mobile sheet and desktop modal.
Deploy Ladill Events / deploy (push) Successful in 1m30s
Standardize customer-facing Ladill Pay checkout shells across products, open them on all viewports, and escape iframe callbacks back to the product flow.
2026-07-21 16:50:07 +00:00
isaaccladandCursor 7b20b71ea0 Route event ticket payments through centralized Ladill Pay.
Deploy Ladill Events / deploy (push) Successful in 45s
Replace per-owner gateway checkout with platform Paystack via the Pay API, drop owner key requirements from settings, and add coverage for init and idempotent completion.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 13:40:13 +00:00
isaaccladandCursor 701cffb143 Seed DemoWorld attendees and speakers for Events demo continuity
Deploy Ladill Events / deploy (push) Successful in 1m18s
Attendee registrations, programme hosts, and event speakers now draw
name/email/phone/company from DemoWorld people instead of generic
placeholders, and staff logins skip the login reseed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 13:40:15 +00:00
isaaccladandCursor da5fc51262 Reseed demo tenants after each SSO login.
Deploy Ladill Events / deploy (push) Successful in 2m18s
Demo Free/Pro/Enterprise accounts wipe and reload sample data on
authorization-code SSO callbacks so every sales walkthrough starts clean.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 11:19:04 +00:00
isaaccladandCursor 66e6e117de Add plan-capped Events demo:seed command.
Deploy Ladill Events / deploy (push) Successful in 2m20s
Seed live events, registrations, and Pro subscriptions without billing APIs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 10:03:03 +00:00
isaacclad a7231ab16f fix(email): use client/org name as From display, not Ladill product
Deploy Ladill Events / deploy (push) Successful in 45s
Customer-facing outbound mail should appear from the business (organizer,
clinic, company, location), not the Ladill product brand.
2026-07-16 12:01:06 +00:00
isaacclad a5ebd1e414 fix(events): point Messaging settings at suite defaults, not API keys
Deploy Ladill Events / deploy (push) Successful in 48s
Mirror Care: suite platform keys count as ready for attendee email/SMS;
Account Messaging is primary, product Bird/SMS keys are advanced.
SmsService now prefers channel=suite before customer API keys.
2026-07-16 11:36:43 +00:00
isaacclad 3d5ffa593d feat(messaging): suite-channel email/SMS and entitlement sync
Deploy Ladill Events / deploy (push) Successful in 48s
Prefer platform suite messaging (channel=suite) for attendee email, fall back
to Bird integrations; sync suite plan entitlements on subscribe/renew.
2026-07-16 11:24:21 +00:00
isaacclad b73b071cb1 Gate payment gateway behind Pro and Business plans.
Deploy Ladill Events / deploy (push) Successful in 46s
Free accounts can no longer connect or use Paystack/Flutterwave/Hubtel;
settings show an upgrade path and checkout requires a paid subscription.
2026-07-15 21:04:03 +00:00
isaaccladandCursor 4c87c786da Add Events Pro/Business and BYO ticket gateways.
Deploy Ladill Events / deploy (push) Successful in 42s
Cut ticket checkouts off Ladill Pay, settle to merchant gateways at 0% platform fee, and mirror Invoice freemium pricing (GHS 49 / 149).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 01:26:28 +00:00
isaaccladandCursor dda52722ce Add Sent via Ladill Events to customer email footers.
Deploy Ladill Events / deploy (push) Successful in 43s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 20:14:19 +00:00
isaaccladandCursor b5debd79c4 Add account company logo for customer event emails.
Deploy Ladill Events / deploy (push) Successful in 1m39s
Upload logo in account settings and prefer it over Ladill product marks in event notification headers.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 20:07:55 +00:00
isaaccladandCursor 407f1364fb Use generic copy on messaging Integrations screens.
Deploy Ladill Events / deploy (push) Successful in 44s
Drop wallet/brand marketing language so credential setup reads as neutral configuration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 18:40:05 +00:00
isaaccladandCursor 6e42cd1cb2 Add per-customer SMS and Bird Integrations for event messaging.
Deploy Ladill Events / deploy (push) Successful in 28s
Attendee and speaker comms use encrypted tenant relay credentials and skip platform-key fallback and Bird wallet double-debit.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 17:05:54 +00:00
isaaccladandCursor 6cf069d630 Return programme snapshot from Events link-room API.
Deploy Ladill Events / deploy (push) Successful in 31s
Meet can persist the agenda locally when linking, even if the service-to-service Meet sync fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 22:25:12 +00:00
isaaccladandCursor 422c7e01bf Fix Meet programme sync when linking an existing room.
Deploy Ladill Events / deploy (push) Successful in 37s
PATCH the pre-linked room by UUID so programme_snapshot lands on the room users join instead of creating a duplicate.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 22:12:12 +00:00
isaaccladandCursor 71ab6e9d0e Remove QR Plus customization hint from event and programme show pages.
Deploy Ladill Events / deploy (push) Successful in 59s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 12:42:55 +00:00
isaaccladandCursor dac095ef92 Align programme flow with Events: system-generated QR, no customizer.
Deploy Ladill Events / deploy (push) Successful in 31s
Replace the QR-first create and edit experience with simple programme forms that auto-generate Ladill Link codes like events do.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 12:39:11 +00:00
isaaccladandCursor a00f032b5b Fix Events mail calendar sync when virtual sessions lack ids.
Deploy Ladill Events / deploy (push) Successful in 52s
Generate session ids before upserting and fall back to the main event date so August events reach Mail calendar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 12:27:48 +00:00
isaaccladandCursor d25682bc6c Complete Ladill Pay payouts UI for Events.
Deploy Ladill Events / deploy (push) Successful in 38s
Show per-event payment history with fees and net amounts, and let organizers manage payout accounts and withdrawals without leaving the app.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 12:06:43 +00:00
isaaccladandCursor 9cdfc331b0 Sync Ladill Events to the Mail utility calendar.
Events upsert calendar entries by stable external_ref keys, prefer the
owner's linked mailbox, and Meet skips mail sync for events-sourced rooms
so linked virtual sessions appear only once on the calendar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 11:48:37 +00:00
isaaccladandCursor 1746874aaa Use noreply@ladill.com for Events mail like other Ladill apps.
Deploy Ladill Events / deploy (push) Successful in 49s
Stop overriding the From display name with the event title; rely on MAIL_FROM_ADDRESS and MAIL_FROM_NAME only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 17:20:45 +00:00
isaaccladandCursor 0c5a1ddb23 Send Events mail from platform SMTP like Invoice, not owner Bird domain.
Deploy Ladill Events / deploy (push) Successful in 31s
Use EventMailer with MAIL_FROM and organiser Reply-To instead of the Bird API, which rewrote the From address onto the account's verified domain (e.g. climp.me). Redesign the speaker invitation to use the shared Events email layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 17:09:05 +00:00
isaaccladandCursor 99ffc510f9 Improve speaker invites and redesign roster add flow.
Deploy Ladill Events / deploy (push) Successful in 41s
Surface specific send failures, allow resend, use ladl.link portal URLs, and replace stacked speaker forms with a single add-to-list pattern.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 16:01:47 +00:00
isaaccladandCursor fec24da7bd Add speaker invitations with portal page and programme host picker.
Deploy Ladill Events / deploy (push) Successful in 47s
Speakers require email, get a personal holding page with programme and stage links, auto-invites when programme hosts are saved, and manual send for events without a schedule; also fix wallet copy on event create and anchor attendee comms.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 15:48:32 +00:00
isaaccladandCursor 42d997a599 Fix Blade syntax error on event speakers page.
Deploy Ladill Events / deploy (push) Successful in 42s
Split inline @if directives in programme assignment rows so the speakers view compiles and loads without a 500.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 15:18:50 +00:00
isaaccladandCursor 7cce194567 Return Meet attendees to join flow after event registration.
Deploy Ladill Events / deploy (push) Successful in 47s
Add badge verification API, preserve meet_return through registration and payment, and link confirmation back to Meet with badge auto-login.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 14:36:42 +00:00
isaaccladandCursor 9eab538f2e Fix webinar registration redirecting to ladl.link/undefined.
Deploy Ladill Events / deploy (push) Successful in 29s
Exempt public register POST from cross-site CSRF, collect email on the
landing form, and handle API errors instead of navigating to a missing
success_url.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 14:06:37 +00:00
isaaccladandCursor d2ec31f7a5 Fix post-registration 404, add speaker management, and simplify event creation.
Deploy Ladill Events / deploy (push) Successful in 28s
Proxy registration transaction paths on Events, add a join button on the
confirmation page, introduce speaker roster management, and replace the QR
design wizard with merchant-style create/show flows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 13:44:53 +00:00
isaaccladandCursor d942ebaa83 Fix event branding images broken by legacy QR redirect.
Deploy Ladill Events / deploy (push) Successful in 25s
Keep logo and cover asset URLs on Events instead of redirecting them to
ladl.link, which does not serve uploaded QR storage files.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 08:14:17 +00:00
isaaccladandCursor 32c721b4f2 Add service API for Meet to list and link virtual events.
Deploy Ladill Events / deploy (push) Successful in 1m17s
Meet can attach existing conference or webinar rooms to event virtual sessions so registration stays in Events.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 07:38:56 +00:00
isaaccladandCursor 93272f968a Fix programme attachment dropdown always appearing disabled on events.
Deploy Ladill Events / deploy (push) Successful in 31s
Load itinerary options in the event show controller and link to programme creation when none exist yet.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 00:10:58 +00:00
isaaccladandClaude Opus 4.8 75bb72abb3 Fix custom-domain test fixtures (public_id, bypass platform.session)
Deploy Ladill Events / deploy (push) Successful in 39s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 17:06:27 +00:00
isaaccladandClaude Opus 4.8 8cca4fb6e3 Add opt-in custom domains with automatic SSL
Deploy Ladill Events / deploy (push) Successful in 1m23s
Customers can connect their own domain to a events page (storefront/event):
add a domain, point an A record (apex + www) to the app server, click Verify —
DNS is checked, then Ladill Domains' central SSL service issues + installs the
Let's Encrypt cert and calls back to flip it live. The custom domain then serves
the mapped page (host resolution on /). Feature-gated: only active when a Domains
SSL API key is set, so this deploy is inert until wired.

- custom_domains table + CustomDomain model
- CustomDomainService (DNS verify, request cert), DomainsSslClient, DnsResolver
- settings UI panel, signed SSL callback receiver, host resolution on /
- feature tests (DNS verify/fail, signed callback, ownership)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 16:59:25 +00:00
isaaccladandCursor 849617da85 Add mobile and desktop search for Events.
Deploy Ladill Events / deploy (push) Successful in 29s
Introduce a dedicated /search page, wire the bottom nav and topbar to it, and expose JSON results for live lookup of events and programmes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 15:37:44 +00:00
isaaccladandCursor 30528a0c7f Expand settings beyond QR into a full Events preferences page.
Deploy Ladill Events / deploy (push) Successful in 51s
Add event notification toggles, new-event defaults that pre-fill creation, and tuck QR styling into a secondary section.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 13:31:22 +00:00
isaaccladandCursor 51745193da Fix events import payload decoding and programme link remapping.
Deploy Ladill Events / deploy (push) Successful in 25s
Decode JSON-string payloads from the platform export so event content, covers, and programme references import correctly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 12:16:25 +00:00
isaaccladandCursor 2c1c3cdd3e Enforce Events favicon everywhere and fix deploy pipeline failures.
Deploy Ladill Events / deploy (push) Successful in 30s
Add favicon partial to all standalone pages, regenerate the Events icon asset, and stop marking deploys failed when the nginx vhost step cannot sudo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 11:56:27 +00:00
isaaccladandCursor a9b2960893 Remove redundant type picker from event and programme creation.
Deploy Ladill Events / deploy (push) Failing after 23s
Events is a single-product app — type is implicit on create, so drop the Type card, default-type setting, and rebrand the create flow copy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 11:14:10 +00:00
isaaccladandCursor d8dbc83e2d Extract Ladill Events as a standalone events suite at events.ladill.com.
Deploy Ladill QR Plus / deploy (push) Successful in 28s
Full control center for ticketed events, contributions, attendees, badges,
and programmes — not a QR utility clone. Includes SSO shell, import command,
and platform cutover runbook.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 09:39:53 +00:00