- Shipped
- September 3, 2026 at 4:50 PM UTC
- Author
- Kamo
- Commit
- 768f5cc
The feature worked, and almost nobody would have found it. The only way to ask was an item in a thumbnail's overflow menu — hover the right person in the filmstrip, open the three-dot menu, and recognise a label reading "Start / Stop remote control", which names a toggle rather than telling you what pressing it now would do. It was also missing from the participants pane entirely, so the one surface built for acting on a person could not do this one thing. There are three ways in now, and they agree with each other. A "Request control" button sits on the shared screen while someone who can be controlled is presenting. That is where attention already is at the moment the thought occurs, and it needs no prior knowledge that the feature exists. It stays quiet at rest and comes forward on hover. While a request is outstanding it becomes "Waiting for <name> to allow it" with a Cancel. That Cancel withdraws the request rather than only forgetting it locally. Without this the other person was left with a dialog offering something nobody was waiting for, and allowing it would have started a session the asker had moved on from — so a withdrawal now reaches them and takes the question off their screen. The participants pane offers it too, sharing one selector with the thumbnail menu so the two cannot disagree about when control can be asked for. The menu item's words follow its state: Request control, Request sent, Stop controlling. While in there: the hook driving that menu item was declared inside the branch that renders it, so the number of hooks changed the moment a participant became controllable. That was always a latent crash, and agent discovery being asynchronous means it now happens a few seconds into a call — while a menu can be open. It is unconditional, and REMOTE_CONTROL_MENU_STATES moved into the feature it belongs to, resolving the TODO that asked for exactly that. tsc web and native; eslint across remote-control, video-menu, participants-pane and conference; all 7 webpack bundles.