You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #74. Depends on the protocol issue; can develop against a mocked host.
Portal currently renders a private 1:1 session; 1:N makes shared state visible for the first time.
Roster panel: connected viewers (session handles from the protocol roster message), who holds input focus, own capability set. Follows the repo UI rule: mono text labels or pixel SVG marks, no emoji.
Focus flows: request focus (pending state while the holder decides or policy resolves), release focus, owner preempt if configured. Focus loss is a first-class UI event (revoked, holder-disconnected, owner-preempted) with distinct, non-alarming messaging; input surfaces (pointer capture, controller activation) must disengage cleanly on loss, reusing the existing control-mode transition machinery in portal/main.js (control transition generation guards, ~lines 145-148 @ 17980ad).
Spectator mode: view-only viewers get a UI that never offers input affordances rather than offering and failing them.
Stream panel: per-viewer adaptive contribution (from the adaptive issue) so a throttled viewer can see it is the constraint.
Part of #74. Depends on the protocol issue; can develop against a mocked host.
Portal currently renders a private 1:1 session; 1:N makes shared state visible for the first time.
portal/main.js(control transition generation guards, ~lines 145-148 @ 17980ad)..mjsmodules with paired tests from the start rather than growing main.js.