Camera controls panel reads the device synchronously inside render
crates/openlogi-desktop/src/features/camera/controls.rs: render calls ensure_built, which calls openlogi_camera::read_camera_state(uid) — a series of UVC control transfers — on the UI thread, on the frame the panel first appears for a camera (and again after a rejected batch). The panel also has no tests.
The read belongs in a background task that publishes a CameraState the panel renders from, like the device inventory does; the panel then becomes testable with a fake state.
Deferred from the September refactor survey: verifying it needs a Logitech webcam (Brio-class with exposure/white-balance controls) to confirm the sliders still seed from the device, auto toggles still take over, and a rejected batch still re-reads. Related, the ordered-range clamp fix landed in #1506.
Source: AprilNEA/OpenLogi