Appearance
Interface: DeviceList
Device enumeration and selection.
Two details that are not obvious and cost every application that meets them:
enumerateDevices()before a permission grant returns entries with empty labels and emptydeviceIds. A picker built from that list shows three blank rows, solist()says whether labels are available and the host can ask for permission first rather than rendering nothing.deviceId: { exact }is what actually pins a device. PlaindeviceId: idis a hint, and a browser is free to ignore it — which it does, usually on the machine of the one person who reported the bug.