mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 19:58:50 +00:00
fix: support registryless opening entities
Issue: #117 User-Visible: yes
This commit is contained in:
@@ -519,8 +519,11 @@ double click → properties dialog. In markup mode the "Opening" tool handles cl
|
||||
Contact and lock are exact HA references owned by the opening, not aliases of
|
||||
standalone markers. Their candidate/action path follows HA binding status while
|
||||
their render path follows the frozen active-registry projection; neither path
|
||||
consults marker tombstones. Plan-level consumers keep the tombstone policy
|
||||
described above.
|
||||
consults marker tombstones. For that projection, the presence of an exact state
|
||||
is sufficient: registry-less YAML entities have no row, while explicit
|
||||
disabled/orphan rows have already been stripped together with their states.
|
||||
The render helper must never receive raw live hass. Plan-level consumers keep
|
||||
the tombstone policy described above.
|
||||
|
||||
For a wall with thickness, one `OpeningWallIndex` resolves the atomic wall
|
||||
interval and adjacent room on each side of the centreline. Opening symbols,
|
||||
|
||||
@@ -69,6 +69,12 @@
|
||||
([#166](https://github.com/Matysh/houseplan-card/issues/166)).
|
||||
- Small fixes and improvements.
|
||||
|
||||
- Door, window and gate contacts and locks now keep working when they are live
|
||||
YAML entities without a `unique_id` and therefore have no Entity Registry
|
||||
row. The picker, View animation, lock badge and opening info card now follow
|
||||
the same exact reference, while disabled, orphaned and missing entities
|
||||
remain unavailable ([#117](https://github.com/Matysh/houseplan-card/issues/117)).
|
||||
|
||||
## v1.64.0-beta.3 — 2026-08-14
|
||||
|
||||
- Large plans no longer recompute an unused physical-wall union on every floor
|
||||
|
||||
@@ -80,6 +80,13 @@
|
||||
([#166](https://github.com/Matysh/houseplan-card/issues/166)).
|
||||
- Мелкие исправления и улучшения.
|
||||
|
||||
- Датчики и замки дверей, окон и ворот теперь работают и для живых
|
||||
YAML-сущностей без `unique_id`, у которых поэтому нет строки в Entity
|
||||
Registry. Список выбора, анимация в Просмотре, значок замка и карточка проёма
|
||||
используют одну точную ссылку; отключённые, потерянные и отсутствующие
|
||||
сущности по-прежнему недоступны
|
||||
([#117](https://github.com/Matysh/houseplan-card/issues/117)).
|
||||
|
||||
## v1.64.0-beta.3 — 2026-08-14
|
||||
|
||||
- Большие планы больше не пересчитывают неиспользуемое объединение физических
|
||||
|
||||
@@ -1095,6 +1095,13 @@ separately promised workflows:
|
||||
locked / Lock when unlocked; button calls the lock service; disabled while
|
||||
locking/unlocking; hidden when unavailable; plan-icon tap still never
|
||||
toggles a lock [auto: smoke_gear_tabs / smoke_gs_always]
|
||||
- [ ] Registry-less opening binding (#117): a live YAML contact/lock without
|
||||
`unique_id` is offered by the picker and drives the frozen View frame,
|
||||
badge and info card; marker tombstones do not block it, an HA tick swaps
|
||||
the frame without rebuilding geometry/config, and explicit disabled rows
|
||||
with stale states remain hidden. Only the confirmed info-card lock action
|
||||
may call a service [auto: ha-binding-status, render-device-snapshot,
|
||||
smoke_registryless_opening, mutation-gate]
|
||||
- [ ] New-device flag (v1.29.0): a device added to HA after install gets a big red
|
||||
dot top-right of its icon (all clients); opening its editor clears it
|
||||
everywhere; upgrade/first-run seeds the baseline silently — no dot flood [auto: smoke_new_device]
|
||||
|
||||
@@ -472,7 +472,10 @@ Glow и солнечные лучи, но при Resize комнаты оста
|
||||
датчика анимирует створку/полотно. Инверсия нужна, если интеграция отдаёт
|
||||
противоположную логику. Контактный датчик и замок — самостоятельные точные
|
||||
привязки проёма: удаление отдельного маркера той же сущности с плана не убирает
|
||||
её из этих списков и не выключает уже сохранённую связь.
|
||||
её из этих списков и не выключает уже сохранённую связь. Можно выбрать живую
|
||||
YAML-сущность без `unique_id` и строки в Entity Registry: пока Home Assistant
|
||||
передаёт её точное состояние, она так же управляет проёмом и значком замка в
|
||||
Просмотре. Явно отключённая, потерянная или отсутствующая сущность не работает.
|
||||
|
||||
### Поведение в разных режимах
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 1,
|
||||
"fixture": "synthetic-only",
|
||||
"sourceFingerprint": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceFingerprint": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"captureScriptSha256": "34f2219790d46efd8250e7a1bd829cb8fc0b0547e1260635fefa52407551b41b",
|
||||
"command": "npm run build && node demo/docs/capture.mjs",
|
||||
"scenarios": {
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "d36b6f9f8139f31ef73a780c6511a640a26055efd9d7a24c24fd48b1d8379bf0"
|
||||
},
|
||||
"view-touch": {
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "358e25ff9984d0fb0c03cfbb848df40c425fdfe64cd5f4f613b1e754ca9d4249"
|
||||
},
|
||||
"space-create": {
|
||||
@@ -35,7 +35,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "c53db2e5c642a5549c13f3c93a5b359fed69bdb2621bf71a243a877ffcb95e6b"
|
||||
},
|
||||
"room-contour-close": {
|
||||
@@ -46,7 +46,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "5ca7f24642926072ccbc5bf48341c5310329918631b147c116f9c29e20e4927e"
|
||||
},
|
||||
"plan-context-tray": {
|
||||
@@ -57,7 +57,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "164b79fd9075a1425cffe3c85c88b689dfda90b79856bb4ed6655507b166b3e0"
|
||||
},
|
||||
"device-editor": {
|
||||
@@ -68,7 +68,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "7a22a81e2abedf5a520bd36b7509d953cbfa9962b48c0ffbc233666a6215c04b"
|
||||
},
|
||||
"device-display-preview": {
|
||||
@@ -79,7 +79,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "f6014caed7b7d28790b8548996ba09d806a4e4d51fbb7e8d3fb3c582ebe49167"
|
||||
},
|
||||
"background-editor": {
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "d7cfe70551d9260169df8efd832e32ed7df99c7f60b55d1fd4a8322bd4c47175"
|
||||
},
|
||||
"room-card": {
|
||||
@@ -101,7 +101,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "176abba71d41cfb045a33f82a794d9fbb2a5d3c48e6df66e6ec3a8e448311b11"
|
||||
},
|
||||
"device-info": {
|
||||
@@ -112,7 +112,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "3523bebdb36912c484e50c1a31b37bcc12aec09a6eff8d9dd3558a6f037de4a0",
|
||||
"sourceSha256": "2b4a6de3340e1c264c45724b79f9e618cda943509b8d4cb746f8ecace57d2bc5",
|
||||
"imageSha256": "2199ed88b215bf2bff63bf665028f78b2aa6a92c3032b803931790f2ef071893"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user