fix v1.7.2: mobile 'configuration error' on cold start — register card as Lovelace resource (awaited before render) instead of only add_extra_js_url (raced); idempotent version update + YAML-mode fallback; _loadFromServer retries (up to 8 hass ticks) so card doesn't stick on onboarding if WS not ready yet

This commit is contained in:
JB
2026-07-04 15:12:27 +03:00
parent e5e02faa6c
commit aa4e3aed1d
10 changed files with 111 additions and 42 deletions
+5 -3
View File
@@ -28,9 +28,11 @@ houseplan-card/
## Ключевые решения
1. **Один репозиторий — интеграция + карточка.** Интеграция сама раздаёт JS
(`hass.http.async_register_static_paths` + `frontend.add_extra_js_url`), пользователю не
нужно прописывать ресурс Lovelace. Паттерн как у browser_mod/xiaomi_vacuum_map.
1. **Один репозиторий — интеграция + карточка.** Интеграция раздаёт JS
(`async_register_static_paths`) и регистрирует его как **Lovelace-ресурс** (module) —
фронтенд дожидается ресурсов перед рендером, поэтому карточка работает и на холодном старте
мобильного приложения (в отличие от `add_extra_js_url`, который остаётся фолбэком для
YAML-режима). Пользователю не нужно вручную добавлять ресурс.
2. **Раскладка иконок — на сервере.** `helpers.storage.Store(1, "houseplan.layout")`
`.storage/houseplan.layout`. Карточка читает/пишет через `hass.callWS`
(`houseplan/layout/get|set|update`). Fallback — localStorage (если интеграции нет).
+12
View File
@@ -1,5 +1,17 @@
# Changelog
## v1.7.2 — 2026-07-04 (фикс мобильного «ошибка конфигурации»)
- ПРИЧИНА: карточка подключалась только через `add_extra_js_url` (extra_module_url), загрузку
которого фронтенд НЕ дожидается — на холодном старте мобильного приложения дашборд рисовался
раньше регистрации элемента → «ошибка конфигурации». (Все рабочие HACS-карточки — Lovelace-ресурсы.)
- ФИКС 1: интеграция регистрирует карточку как **Lovelace-ресурс** (module) — их фронтенд ждёт
перед рендером. Идемпотентно (обновляет URL при смене версии, без дублей); фолбэк на
extra_module_url для YAML-режима Lovelace. `_register_lovelace_resource` в __init__.py.
- ФИКС 2: `_loadFromServer` ретраит (до 8 попыток по обновлениям hass) — если hass пришёл раньше
готовности WS, карточка не застревает на онбординге, а дожидается конфига.
- Проверено: ресурс houseplan-card.js зарегистрирован, extra_module_url пуст (единый чистый
модуль), карточка рендерит план на свежей вкладке без ошибки.
## v1.7.0 — 2026-07-04 (аудит + рефакторинг + тесты)
- Удалён вшитый в бандл дом-образец (дача, ~245 КБ base64 планов + ROOMS/FLOOR_*): бандл
293 КБ → 83 КБ. Свежая установка показывает онбординг «Добавить пространство», а не чужой дом.