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>
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>
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>
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>
Return the Bird API error instead of a generic wallet message so domain and balance issues are actionable.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
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>
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>
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>
Programme sync to Meet rooms, wallet-billed mass comms, webhook lifecycle updates, and registration access bridge with join-window gating on public pages.
Co-authored-by: Cursor <cursoragent@cursor.com>
Events can define hybrid/virtual sessions synced to Meet rooms; SMS and email use wallet-billed platform APIs instead of Termii and Laravel mail.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ticket and contribution checkouts use platform Pay for fees and wallet settlement, with legacy QREP-* fallback via Billing.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>