Typically the abstraction to draw elemnts inside a app window is in the application framework, like GTK, Qt, Electron (chromium), etc.
This is also why apps built with the same framework typically have the same problem on wayland (looking at you, electron).
The abstractions you are thinking of is not in the window manager, which only controls things outside of the main app window, like tiling, border, window top bar, etc.
It can be the website you are browsing have trackers that share data with facebook, and facebook was able to infer you guys are in the same household via IP information (ISP also sales you info BTW), and push the ad to her. Or facebook might think that you guys could be the same person or have similar interest etc.
EDIT: sorry, I read it wrong, I thought the reply says the addon “doesn’t” use the remote API.
I digged a bit on the code, and every command indeed go through the cloud. So even if you use this addon, Haire can still collect a fair bit of data about you, since there is no way to communicate locally and directly to the AC.
But the addon only sends the minimum amount of data to achieve functionality, so definitely not as much data as using Haire’s app.
Can you link to where the documentation that specify they don’t use API?
Because I am looking at pyhOn (dependency of hon, and also being taken down), it seems like when executing a command, they do contact the cloud. Specefically
<span style="color:#323232;">url: str = f"{const.API_URL}/commands/v1/send"
</span><span style="color:#323232;"> async with self._hon.post(url, json=data) as response:
</span><span style="color:#323232;"> ...
</span>