Meet

SurfaceShareVideo + SharePresenterLabel (a share on a surface, in flat view)
MeetBanner (non-origin surface)
Call#planning1:35
ARMOKMACJP+1
Atrium
MeetControls (origin-header cluster)
Call#planning1:35
ARMOKMACJP+1
Atrium
ElapsedLabel1:35RoomChipAtriumParticipantTileMOAudioButton
IncomingCall
MO
Mira OkaforIncoming video call…
MeetingCallRing (issue #743 — ring-on-add's ringee card; one Join, no audio/video split)
MO
Mira Okafor is callingWeekly sync
CallRingingInvitees (issue #743 — the moderator's roster "Calling…" chip)
  • PSPriya ShahCalling…
  • MWMarcus WebbCalling…
OutgoingCall (caller "Calling…" stage)
MO
Calling Mira Okafor…Video call
OutgoingCall (callee's ring expired, caller still waiting — issue #183)
MO
Calling Mira Okafor…Video callNo answer yet
CallOutcome (terminal screen shell)

No answer

CallFeedback (post-call screen)

How was the call quality?

8m 12s

MeetingLeaveControl (organiser split action)
CallJoining (issue #1261) — the handshake, before the roster arrives. Says nothing about who is present, because nothing is known yet: the other two stages both claimed an empty room here, and others were already in the call.
Joining…Connecting you to the call
CallSolo (alone in an active call)
You're the only one hereWaiting for others to join…
CallInvitePrompt (issue #742's G3) — the "Meet now" host's post-start nudge to invite people, shown once and dismissible. Shares demoJoinPolicy with the People-panel controls below, so its hint (F1) tracks the same picker: set the policy to anything but "Colleagues in, others wait in the lobby" to see it.
Invite people to join you

Guests can't use this link yet — .

CallLaunchButton (DM / group / channel · live)
CallInProgressBar (live session · shown to people not in the call)
Call in progress1:35
CallGallery (engineless-2D · avatar fallback; live tiles host a desplit canvas)
AR
Alex Rivera (You)
MO
Mira Okafor
KM
Kai Müller
CallGallery — responsive fit at a low-res floor (issue: 4-tile call clipped off-screen on a low-res Windows display). Boxes below match the gallery's available canvas at 1280x720 and 1024x600 after the call chrome (top bar, controls, margins) — every tile must stay fully inside the border, at any count.
Tile count
123456
1280x720 floor (canvas 1256x560)
AR
Alex Rivera (You)
MO
Mira Okafor
KM
Kai Müller
AC
Ana Castellanos
1024x600 floor (canvas 1000x460)
AR
Alex Rivera (You)
MO
Mira Okafor
KM
Kai Müller
AC
Ana Castellanos
CallGallery — pagination + recent-speaker promotion + tiny-window collapse (issue #528, scale Phase 2). One participant (#17) is speaking off-page: the shared feed-priority ranking promotes them onto whichever page you are looking at, taking the LAST slot so the top rows hold. Everyone beyond the page shows as an initials card in the overflow row. Page-size options are Teams' rungs minus 49 (our product target tops out at 20-25 tiles). The DEFAULT is per device class (issue #537, from the Phase 1 knee measurement): 10 tiles low-end — the machine has 8 hardware decoders and the 9th stream is the first to fall to software — and 20 high-end. 25 stays offered, but nothing defaults there.
Device class
low-endhigh-end
Max visible tiles
491625
Participants
6122024
SC
scale-0 (You)
SC
scale-1
SC
scale-2
SC
scale-3
SC
scale-4
SC
scale-5
SC
scale-6
SC
scale-7
SC
scale-17
1 / 3
Tiny-window collapse — the same gallery in a 240x170 box (a call parked in a screen corner): tiles drop to face-icon initials cards, packed square instead of letterboxed, and the visible page's wanted set goes empty so nothing decodes. The pager stays, since it is the only way to reach the rest of the room.
SC
scale-0 (You)
SC
scale-1
SC
scale-2
SC
scale-3
SC
scale-4
SC
scale-5
SC
scale-6
SC
scale-7
SC
scale-17
1 / 3
Call tile gradient (#2208) — toggle Light/Dark theme (top bar) to see both. Every CallParticipantTile paints bg-call-tile with no border.
Kai Müller
Cutout feed on the gradient
Mira Okafor
Raw camera feed — opaque, so it covers the tile the way the real feed does
AR
Alex Rivera (You)
No video (avatar only)
MO
Mira Okafor
Face card
Alex Rivera (You)
MO
Mira Okafor
Kai Müller
AC
Ana Castellanos
Jun Park
LV
Lena Vogt
A grid of six on the unchanged page background. Measured contrast of the name label per gradient stop, in the current theme:
    CallParticipantTile
    MO
    Mira Okafor
    MeetTakeover (flat)
    Call#planning
    ARAlex Rivera (you)
    MOMira Okafor
    KMKai Müller
    ACAna Castellanos
    JPJun Park
    LVLena Vogt
    SpatialToggle (the 3D room's Flat/Spatial control)
    CallReactionPicker (in-call reactions) — three groups: one-shot reactions, Yes/No, and the persistent Raise hand toggle. Click Raise hand to see its Raised state; close and reopen and it stays. Escape and an outside click close it.
    CallReactionOverlay (flat-mode reaction display, issue #409)
    ✋❌
    CallTopBar (the 3D room's top strip)
    1:35Reconnecting…Connection lostThis meeting is being recorded and transcribed by the organiser.The organiser is recording this meeting and needs your consent.
    CallSidePanel + CallPeoplePanel (docked, resizable; click a top-bar button above to open). People also carries the Invite affordance (issue #681's in-call invite) and the Meeting options gear (issue #742's G2, MeetingOptions) via CallSidePanel's headerAction slot — click the gear to swap in the "Who can join" picker, or the plus to swap in CallInviteBar above the roster. Set the policy to anything but "Colleagues in, others wait in the lobby" to see CallInviteBar's F1 hint on Copy join link. Typing "taken@example.com" demonstrates the already-invited failure path; "cancelled@example.com" demonstrates the DIFFERENT cancelled-meeting one (#742 review round 2); anything else succeeds. Above both sits CallLobbyQueue — the host's admit/deny queue for a meeting's lobby (issue #681), which renders nothing once the queue empties; that is also when the People button loses its dot. Hovering a removable row reveals Remove (issue #674 step 4) — a moderator's eject, behind an inline two-step confirm rather than a dialog over the call stage.
    Call stage
    CallKnockCard — the same door, announced OVER the call instead of inside the People panel (issue #1706), for the host who never opens that panel. Its clock lives in the app (hws-web's knock-alerts.ts): 15s per showing, one repeat a minute later, then only the People button's dot. Rows stack oldest-first and Admit all appears once there is a crowd. Drag the browser narrow: the buttons wrap under the name rather than the name truncating.
    Call stage (flat or 3D)

    Waiting to join

    3
    • NHNadia Haddad
    • GGGrace GuestGuest
    • SOSomeone
    CallLobbyWaitingCount — the same door seen by a participant who cannot admit (issue #1708). It sits where CallLobbyQueue sits, at the top of the People panel, but says only how many people are waiting: no names, no avatars, no Admit/Deny, and nothing to fire a sound or a toast from. It is driven by the same waiters as the card above, so admitting somebody there counts down here; it renders nothing at all once the lobby empties.
    3 waiting

    In this call

    3
    • MOMira Okafor✋
    • ARAlex Rivera (you)❌
    • KMKai Müller✅
    CallPeoplePanel status — raise and lower hands, and answer Yes/No, to see the chips and the order: raised rows move to the top in their usual order; an answer never moves a row.

    In this call

    4
    • APAda Park
    • BOBen Ortiz (you)
    • CLCy Lang
    • DMDee Moss