Fixed
-
Capability hook no longer rejects every real network call after DNS. The egress check installed two socket hooks (one on
socket.create_connection, one onsocket.socket.connect) so raw-socket use couldn't bypass the hostname allowlist. Problem: stdlib'screate_connectiondoesgetaddrinfo()and then callssock.connect((ip, port))internally, which oursocket.connecthook then re-checked against the hostname allowlist. The IP isn't in the manifest, so every legitimately-declared widget (weather_now,clock_sunrise_sunset, anything talking to a real upstream) failed withCapabilityDenied: tried to connect to '188.40.99.226' but didn't declare it.The connect hook now skips the post-DNS call via a contextvar set inside the approved
create_connectionpath; rawsocket.socket().connect()outside that path is still checked.HA add-on users: the next supervisor pull picks up
0.36.2and weather / sunrise / any other live-data widget will render again.