Add conference stage layouts for plenary and panel discussions.
Deploy Ladill Meet / deploy (push) Successful in 37s

Speakers get a full-screen spotlight with overlapping audience avatars; hosts can configure panels in the green room and switch layouts live.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-01 21:03:02 +00:00
co-authored by Cursor
parent 158b7b650a
commit 1037cd6ee6
14 changed files with 889 additions and 32 deletions
@@ -98,6 +98,7 @@ class ConferenceController extends Controller
'live_captions' => ['sometimes', 'boolean'],
'green_room' => ['sometimes', 'boolean'],
'practice_mode' => ['sometimes', 'boolean'],
'panel_discussions' => ['sometimes', 'boolean'],
]);
$presenterRefs = collect($validated['presenter_refs'] ?? [])
@@ -114,6 +115,9 @@ class ConferenceController extends Controller
'live_captions' => $request->boolean('live_captions'),
'green_room' => $request->boolean('green_room', true),
'practice_mode' => $request->boolean('practice_mode'),
'panel_discussions' => $request->boolean('panel_discussions'),
'stage_layout' => 'plenary',
'panels' => [],
'stage_mode' => true,
'presenter_refs' => $presenterRefs,
];
@@ -201,6 +205,7 @@ class ConferenceController extends Controller
'presenter_refs' => ['nullable', 'array'],
'presenter_refs.*' => ['string', 'max:64'],
'invite_emails' => ['nullable', 'string', 'max:2000'],
'panel_discussions' => ['sometimes', 'boolean'],
]);
$allowedRefs = Member::owned($this->ownerRef($request))
@@ -217,6 +222,13 @@ class ConferenceController extends Controller
$this->conferences->syncPresenterRefs($room, $presenterRefs);
if ($request->has('panel_discussions')) {
$settings = array_merge($room->settings ?? [], [
'panel_discussions' => $request->boolean('panel_discussions'),
]);
$room->update(['settings' => $settings]);
}
$inviteCount = 0;
if ($emails = trim((string) ($validated['invite_emails'] ?? ''))) {
$invites = collect(preg_split('/[\s,;]+/', $emails))