-
@@ -722,6 +722,25 @@
+
+ Plenary shows one speaker on the main stage. Everyone else appears in the strip below.
+
+
+
+
On stage
+
+
+
+
+
+
+
Switching to panel discussion changes the live stage to a multi-speaker grid for everyone in the room.
@@ -744,10 +763,10 @@
diff --git a/tests/Feature/MeetWebTest.php b/tests/Feature/MeetWebTest.php
index ef5f64a..67df16b 100644
--- a/tests/Feature/MeetWebTest.php
+++ b/tests/Feature/MeetWebTest.php
@@ -1048,6 +1048,66 @@ class MeetWebTest extends TestCase
$this->assertCount(1, $room->setting('panels'));
}
+ public function test_host_can_spotlight_guest_panelist_by_participant_uuid(): void
+ {
+ $room = Room::create([
+ 'owner_ref' => $this->user->public_id,
+ 'organization_id' => $this->organization->id,
+ 'host_user_ref' => $this->user->public_id,
+ 'title' => 'Summit keynote',
+ 'type' => 'webinar',
+ 'status' => 'live',
+ 'scheduled_at' => now()->addHour(),
+ 'timezone' => 'UTC',
+ 'settings' => array_merge(config('meet.default_settings'), [
+ 'stage_layout' => 'plenary',
+ ]),
+ ]);
+
+ $session = Session::create([
+ 'owner_ref' => $this->user->public_id,
+ 'room_id' => $room->id,
+ 'media_room_name' => 'meet-'.$room->uuid,
+ 'status' => 'live',
+ 'started_at' => now(),
+ ]);
+
+ $hostParticipant = \App\Models\Participant::create([
+ 'owner_ref' => $this->user->public_id,
+ 'session_id' => $session->id,
+ 'user_ref' => $this->user->public_id,
+ 'display_name' => $this->user->name,
+ 'role' => 'host',
+ 'status' => 'joined',
+ 'joined_at' => now(),
+ ]);
+
+ $guestSpeaker = \App\Models\Participant::create([
+ 'owner_ref' => $this->user->public_id,
+ 'session_id' => $session->id,
+ 'display_name' => 'Guest Speaker',
+ 'email' => 'speaker@example.com',
+ 'role' => 'panelist',
+ 'status' => 'joined',
+ 'joined_at' => now(),
+ ]);
+
+ $this->actingAs($this->user)
+ ->withSession(["meet.participant.{$session->uuid}" => $hostParticipant->uuid])
+ ->postJson('/room/'.$session->uuid.'/stage', [
+ 'stage_layout' => 'plenary',
+ 'spotlight_speaker_ref' => $guestSpeaker->uuid,
+ ])
+ ->assertOk()
+ ->assertJson([
+ 'stage_layout' => 'plenary',
+ 'spotlight_speaker_ref' => $guestSpeaker->uuid,
+ ]);
+
+ $room->refresh();
+ $this->assertSame($guestSpeaker->uuid, $room->setting('spotlight_speaker_ref'));
+ }
+
public function test_poll_includes_stage_config_for_conference(): void
{
$room = Room::create([