mirror of
https://github.com/home-assistant/frontend.git
synced 2026-09-29 16:33:43 +01:00
* Add Matter to the demo Load the matter integration and mock its network topology, so the Matter panel and its network map render in the demo, with a Thread and Wi-Fi topology that includes a border router and an offline node. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE * Key Matter node diagnostics by device The diagnostics and ping mocks ignored the requested device, so every Matter device reported node 1 on Thread and available. The device page gates its actions on that: the offline garden sensor offered actions that need a live node, and the Wi-Fi plug offered a Thread network link. Both are now derived from the topology the map already renders, so a device's node ID, transport, node type and availability match it, and an unknown device is rejected as the backend would. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE * Give Matter fixtures unique entity IDs and mock its device actions lock.front_door and sensor.garden_temperature already exist in the home demo config, whose entities are added last and overwrote the display registry entries, detaching them from their Matter devices. The panel counted 3 entities instead of 5 on that demo. Renamed to a side door lock and a patio sensor, which no demo config uses. The device page offers commissioning, fabric and credential actions for an available node, none of which were mocked, so each failed with command_not_mocked. Adds a demo E2E test for the panel and its map. Emptying the topology subscription fails it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE * Mock the Matter lock services and fix the commissioning codes The lock device exposes "Manage lock", whose dialog reads back the response of matter.get_lock_info and matter.get_lock_users; neither was mocked, so it always showed its load-failed alert. setup_pin_code carried the manual pairing code. The three commissioning codes now agree on the Matter test payload for passcode 20202021. Pinging an unknown device rejects like the diagnostics command, matching the backend, which resolves the device before acting either way. The E2E test now reads the diagnostics of a Thread, a Wi-Fi and an offline device, so a regression back to one shared response fails it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE * Return a credential result and gate the Matter Thread action `setMatterLockCredential` reads `user_index` off the per-entity response, so the demo's empty object made saving a code throw. Return the indices the dialog reads back, and drop the mock for a `clear_lock_credential` service the frontend never calls. The device action linking to the Thread panel did not check that the integration is loaded, unlike the same link on the Matter dashboard, so it could navigate to a panel that is not there. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE * Keep the mocked Matter lock users across changes The manage dialog reloads the list after every add, edit and delete, so the static response made each change look like it was reverted. Keep the users per lock entity and mutate them, and hand back a copy so the dialog's reactive state sees a new list. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C6PpwxkMaHCWkEFA27YnLE --------- Co-authored-by: Claude <noreply@anthropic.com>