UIA targets
When a Windows app exposes its UI through UI Automation, the host returns sparse click targets with roles, names, and bounds.Set-of-Mark (SoM)
Draw numbered marks on a frame so a vision model can pick a target by id instead of estimating pixels.som_annotate and the grid helpers need the grounding extra
(pip install "glasswarp[grounding]", which pulls in Pillow).The grounding ladder
1
Prefer host UIA targets
Most reliable — real controls with names and bounds.
2
Fall back to CV / grid targets
For canvases and games that expose no UIA, build targets client-side.
3
Use raw coordinates last
click(x, y) still works, but avoid guessing when a target exists.