feat v1.3.0 (phase 1): server-side config store (spaces/plans/rooms/overrides/virtual, normalized coords), WS config/get|set + plan/set upload, card resolved-model (server or legacy fallback), one-click migration — executed on dacha

This commit is contained in:
JB
2026-07-04 10:43:40 +03:00
parent 1d576164f4
commit 18c0ea1703
14 changed files with 756 additions and 231 deletions
+18
View File
@@ -83,6 +83,21 @@ more-info по приоритету доменов), temp, members[] (групп
`.head { position: sticky; top: var(--header-height, 56px) }`; ОБЯЗАТЕЛЬНО
`ha-card { overflow: visible }``overflow: hidden` ломает sticky.
## Серверная конфигурация (v1.3.0+)
`.storage/houseplan.config` (Store):
```json
{ "spaces": [{ "id","title","plan_url","aspect","view_box":[4],"rooms":[{"id","name","area","x","y","w","h"}] }],
"device_overrides": {"<device_id>": {"hidden","icon","name"}},
"virtual_devices": [{"id","space","name","icon","x","y","note?","entity_id?"}],
"settings": {"exclude_integrations":[],"group_lights":true} }
```
Все координаты **нормированные (0..1 от плана пространства)**; рендер-пространство
1000 × 1000/aspect. Раскладка v2: `{device_id: {"s": space, "x", "y"}}` (нормир.).
Файлы планов: `<config>/houseplan/plans/<space>.<ext>` → URL `/houseplan_files/plans/…`.
Если server config пуст — карточка работает от legacy-бандла (дача) и показывает кнопку
миграции «На сервер» в режиме правки. Дача мигрирована 2026-07-04.
## WS API интеграции
| Команда | Параметры | Ответ |
@@ -90,3 +105,6 @@ more-info по приоритету доменов), temp, members[] (групп
| `houseplan/layout/get` | — | `{layout: {device_id: {x,y}}}` |
| `houseplan/layout/set` | `layout` | `{ok}` (admin_only опционально) |
| `houseplan/layout/update` | `device_id`, `pos` | `{ok}` |
| `houseplan/config/get` | — | `{config}` |
| `houseplan/config/set` | `config` (валидация vol) | `{ok}` |
| `houseplan/plan/set` | `space_id`, `ext` (svg/png/jpg/webp), `data` (b64, ≤8МБ) | `{ok, url}` |
+11
View File
@@ -1,5 +1,16 @@
# Changelog
## v1.3.0 — 2026-07-04 (Фаза 1: серверная конфигурация)
- Store `houseplan.config`: spaces (план, aspect, view_box, комнаты), device_overrides
(hidden/icon/name), virtual_devices, settings (exclude_integrations, group_lights).
- WS: `houseplan/config/get|set`, `houseplan/plan/set` (загрузка файла плана base64 →
`<config>/houseplan/plans/`, отдача через /houseplan_files/plans/).
- Карточка: резолв-модель — server config (координаты НОРМИРОВАННЫЕ 0..1, рендер 1000×1000/aspect)
или legacy-бандл (холст 1489×1053). Раскладка v2: {device_id: {s, x, y}} нормированная.
- Кнопка «На сервер» в режиме правки — миграция legacy-конфига в один клик (планы, комнаты,
view_box, раскладка). Выполнена на даче: .storage/houseplan.config + plans/f1.svg,f2.svg.
- Read-side поддержка оверрайдов устройств и виртуальных устройств (UI управления — фазы 3–4).
## v1.2.2 — 2026-07-04
- Тулбар карточки (вкладки этажей) закрепляется при скролле под шапкой HA
(`position: sticky; top: var(--header-height)`; ha-card overflow: visible).
+1 -1
View File
@@ -20,7 +20,7 @@
- [ ] README EN (основной) + README.ru.md; скриншоты/GIF (обязательны для витрины HACS)
- [ ] Заменить codeowners/documentation/issue_tracker на реальные URL после создания репо
## Фаза 1 — Конфиг на сервере (декаплинг от дачи) ← ФУНДАМЕНТ
## Фаза 1 — Конфиг на сервере (декаплинг от дачи) ← ✅ СДЕЛАНО в v1.3.0 (кроме выпиливания бандл-данных — оставлены как fallback до фазы 2)
Новое хранилище `houseplan.config` (Store v1):
```json
{ "spaces": [ { "id": "f1", "title": "1 этаж", "plan": {"media_id": "...", "type": "svg"},