Clone via loopback with retries so Checkout does not fail after long queue waits on the shared deploy runner.
Co-authored-by: Cursor <cursoragent@cursor.com>
Organization and branch names now come from DemoWorld business/branch
catalogs, meet-role staff are mirrored as Members by email until SSO
remaps to public_id, and guest participants use DemoWorld people for
cross-app continuity. Staff logins skip the login reseed.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Queue summarization on session end (with a short delay for late captions),
keep recording-ready as a refresh path, and unique the summary job so end
plus recording do not double-process the same transcript.
Stop clearing the overlay on transient mute/unsubscribe, re-attach existing
screen tracks for all viewers, and resume LiveKit upstream if the browser
briefly mutes the capture while the presenter focuses another window.
Heavy per-participant poll queries were saturating the shared host during
live rooms. Cache the shared room payload for 2s, return 304 when unchanged,
throttle breakout expiry and captions, and slow client polling (6s / 20s
when hidden) so concurrent attendees no longer fan out full Laravel work.
Care appointments can create Meet rooms for accounts that have never opened Meet, matching the Sales Centre provisioning path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Create rep user, organization, and branch on first demo room request so sales reps do not need to onboard in Meet first.
Co-authored-by: Cursor <cursoragent@cursor.com>
Defer summarization until recordings finish, merge chat with deduplicated live captions, and clear the screen-share overlay so participant cards return after sharing ends.
Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Stack time, title, and details vertically in compact cards for the narrow live-room sidebar and agenda views.
Co-authored-by: Cursor <cursoragent@cursor.com>
Teleport modals to body, hide until Alpine is ready, use a single fade transition, and lock scroll on html with stable scrollbar gutter.
Co-authored-by: Cursor <cursoragent@cursor.com>
Link opens an in-page modal on conference and webinar show pages; unlink uses the shared confirm-dialog component.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store programme_snapshot from the link-room response locally and merge existing room settings on service API updates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Service API store now resolves meet_room_uuid before source lookup so programme snapshots apply to pre-linked rooms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Events owns calendar entries for events-sourced rooms so virtual sessions
do not duplicate on the webmail calendar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use the connected mail calendar mailbox when set, skip API calls when
MAIL_API_KEY_MEET is unset, and call syncRoomUpdated on room edits.
Co-authored-by: Cursor <cursoragent@cursor.com>
Laravel's S3 driver requires this package; without it the meet-recordings
disk fails when completing egress uploads from Contabo Object Storage.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Remove icon-only restart buttons on webinar and conference pages; btn-group now carousels on narrow screens when actions overflow.
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>
Remove the duplicate webinar header button and make the primary purple action
first in the join card, with a mobile rotate icon when restarting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace restart button text with a compact arrow-path icon on small screens while keeping the full label on desktop.
Co-authored-by: Cursor <cursoragent@cursor.com>