You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs(internal): refresh ha_manage_addon ESPHome dashboard guidance
The ESPHome Device Builder dashboard was rewritten (aiohttp SPA, server 0.1.0b100). Its old surface — GET /edit?configuration=, and the /compile /validate /logs WebSocket paths with {"type": "spawn"} bodies — is gone and now returns the SPA shell. The ha_manage_addon docstring, the websocket/wait_for_close field descriptions, and the WS examples still described that old protocol, sending agents to dead ends.
Update them to the current API: HTTP GET /devices for the device list, and the WebSocket /ws command channel ({command, message_id, args}) with devices/get_config, devices/update_config, devices/logs, devices/validate, firmware/compile. Note the one-shot pattern (wait_for_close=False + message_limit) and that direct port= does not reach this dashboard. Also refresh the matching stale /compile example in read_only.py.
Verified against a live ESPHome 2026.5.3 dashboard: the old /logs WS path now returns HTTP 200 (SPA); /ws devices/get_config and devices/logs work. Docs-only (docstrings + one comment); no behavior change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(internal): tighten ESPHome WS guidance per review
Address pr-review-toolkit comment-analyzer findings: (1) separate wire-confirmed commands (devices/get_config, devices/logs) from frontend-only ones (devices/update_config, devices/validate, firmware/compile) so confidence is not overstated; (2) split the legacy-removal note precisely — GET /edit returns the SPA, the old WS paths reject the upgrade (HTTP 200) — instead of lumping both as "return the SPA". Also note body doubles as the WS initial message in its Field description.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: kingpanther13 <kingpanther13@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
path: WebSocket endpoint path (e.g., "/ws" for the ESPHome dashboard's command channel)
962
962
body: Message to send after connecting (JSON-encoded if dict, raw if string)
963
963
timeout: Max seconds to wait for messages (default 60)
964
964
debug: Include diagnostic info
@@ -2622,7 +2622,7 @@ async def ha_manage_addon(
2622
2622
body: Annotated[
2623
2623
dict[str, Any] |str|None,
2624
2624
Field(
2625
-
description="Proxy mode only. Request body for POST/PUT/PATCH. Pass a JSON object or JSON string.",
2625
+
description="Proxy mode only. Request body for POST/PUT/PATCH — or, with websocket=True, the initial WebSocket message. Pass a JSON object or JSON string.",
- Filter WS errors only: ha_manage_addon(slug="...", path="/validate", websocket=True, python_transform="response = [m for m in response if 'ERROR' in str(m) or 'WARN' in str(m)]")
2910
+
- ESPHome list devices (HTTP): ha_manage_addon(slug="<prefix>_esphome", path="/devices")
- Filter WS errors only: ha_manage_addon(slug="...", path="/ws", websocket=True, python_transform="response = [m for m in response if 'ERROR' in str(m) or 'WARN' in str(m)]")
2887
2914
- HTTP subset: ha_manage_addon(slug="...", path="/flows", python_transform="response = [f['id'] for f in response]")
0 commit comments