Create rooms via the LiveKit API, retry egress when the room is missing, and resume server egress after the host connects when auto-record fell back to browser capture.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a dedicated meet-recordings S3 disk with path-style endpoints for Contabo, and pass force_path_style through to LiveKit egress uploads.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pass null encoding preset to match the PHP SDK, and register the meet webhook on each egress start so LiveKit Cloud does not need a global webhook URL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Server-side room composite egress replaces fragile MediaRecorder DOM capture when enabled, with webhook completion and browser fallback when egress is unavailable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Events linking UI and service client, remove Meet-native registration and invitation flows for these room types, and redirect attendees to Events registration when joining.
Co-authored-by: Cursor <cursoragent@cursor.com>
Templates duplicated create-form settings without edit/delete flows; drop the feature and table. Conference and webinar pages render synced programme snapshots and link back to Ladill Events.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route guests through silent SSO to the Meet product page, fix Afia context
query, add conference green-room UX and copy, and extend service API for
Care/CRM/Invoice calendar integration.
Co-authored-by: Cursor <cursoragent@cursor.com>
Split town_hall into a Conferences sidebar flow and Spaces-style Rooms with host/speaker/listener roles; enforce audio-only LiveKit UI for rooms; show schedule icon on mobile meetings index.
Co-authored-by: Cursor <cursoragent@cursor.com>
Meetings and webinars now share GHS 0.30 per peak participant, with usage UI and plan quotas updated to match.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add restart meeting actions, a dedicated webinar sidebar flow billed at GHS 0.30 per participant, and reserve speaker-line space with a placeholder to prevent layout shift.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture the meeting in the host browser, upload to Ladill storage on stop, and remove the LiveKit egress placeholder job.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wallet debits at session end, on recording/file storage, and via daily renewals with grace period before asset deletion.
Co-authored-by: Cursor <cursoragent@cursor.com>
Phases 0–18: core meetings, webinar, breakouts, team chat, live streaming, town hall, billing, and Ladill Mail calendar wiring.
Co-authored-by: Cursor <cursoragent@cursor.com>