})
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 55280d18..576f63e5 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -12,7 +12,7 @@
- The Device editor now has one searchable lifecycle catalog for devices on
the plan, available bindings, hidden markers and bindings available to add
again. It explains Home Assistant status separately, can find markers on the
- plan, and keeps hide/show/add/re-add flows in one place
+ plan using the room names visible there, and keeps hide/show/add/re-add flows in one place
([#29](https://github.com/Matysh/houseplan-card/issues/29)).
## v1.68.1 — 2026-08-27
diff --git a/docs/CHANGELOG.ru.md b/docs/CHANGELOG.ru.md
index fcf8bcfb..dde5ecf6 100755
--- a/docs/CHANGELOG.ru.md
+++ b/docs/CHANGELOG.ru.md
@@ -18,7 +18,7 @@
- В редакторе устройств появился единый каталог с поиском: устройства
на плане, доступные привязки, скрытые маркеры и привязки для
повторного добавления. Статус Home Assistant объясняется отдельно, а
- поиск на плане, скрытие, показ и повторное добавление собраны в одном
+ поиск использует видимые на плане имена комнат; скрытие, показ и повторное добавление собраны в одном
месте ([#29](https://github.com/Matysh/houseplan-card/issues/29)).
## v1.68.1 — 2026-08-27
diff --git a/docs/images/06-device-editor.png b/docs/images/06-device-editor.png
index 501d4f71..942cd481 100644
Binary files a/docs/images/06-device-editor.png and b/docs/images/06-device-editor.png differ
diff --git a/docs/images/screenshots.json b/docs/images/screenshots.json
index f02b032c..201c831e 100644
--- a/docs/images/screenshots.json
+++ b/docs/images/screenshots.json
@@ -2,7 +2,7 @@
"version": 1,
"fixture": "synthetic-only",
"chromium": "151.0.7922.34",
- "sourceFingerprint": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceFingerprint": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"captureScriptSha256": "ce2e9542fed9dade3085be87d16f69adb2ac8262893ad78ad966b1b9673f2983",
"command": "npm run build && node demo/docs/capture.mjs",
"scenarios": {
@@ -14,7 +14,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "36223106c073f07d8cc3ecf8eaab37192ebb2687daba65c5c21047d0b7890de0"
},
"view-touch": {
@@ -25,7 +25,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "41e3ba67f8db0e98f26f484293af83ef937c369ca5ca6a59a3350d8954c906f4"
},
"space-create": {
@@ -36,7 +36,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "0dc024726327f60f4a9ceaf3044381691f81f1090af81d1812e870f22d9343ba"
},
"room-contour-close": {
@@ -47,7 +47,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "44cfaa95bd51e2cd628400e28db0ad8b2f0cd904385845bd402494f3f5c0d93c"
},
"plan-context-tray": {
@@ -58,7 +58,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "e0662429b423fb74151b583dcc2c8635b001b637d03bbf7a6b16aec46399c3f8"
},
"device-editor": {
@@ -69,8 +69,8 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
- "imageSha256": "d0ffd31ce80bfde21ab75da356a5fc1af38246f2b301030880320620c228d89d"
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
+ "imageSha256": "827a5f0cd6f1c122a63a51d83569a2dbd87b70b3753266a3eb0a9f2986b1b911"
},
"device-display-preview": {
"file": "06-device-display-preview.png",
@@ -80,7 +80,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "2cdabae1f89c3286e4fac0ce30f757ee1690b707ab8a5488748b7cd420626160"
},
"background-editor": {
@@ -91,7 +91,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "30147bb00a90eea7136b4cee30995f6e6a9217b5132f3e8d3ad7471413b1af8a"
},
"room-card": {
@@ -102,7 +102,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "029a3e69ec647a8a370d99e6bb7f9225833c526739076022f6b52ba54bff30ea"
},
"device-info": {
@@ -113,7 +113,7 @@
},
"theme": "dark",
"language": "en",
- "sourceSha256": "78c24f3a8aef0c2bad01bebc701a8127c43fb40f1a298df7b769375bc5b081fa",
+ "sourceSha256": "6d094396ebd90fad934bace295f8eee0e6dafda27d8f38dd31beac954ff93880",
"imageSha256": "dd492f53150b7149085daada5cce9eeae9bde9e7ea1d86679a54b3041f72f517"
}
}
diff --git a/src/device-inbox.ts b/src/device-inbox.ts
index 89f5f8df..abe9ae5b 100644
--- a/src/device-inbox.ts
+++ b/src/device-inbox.ts
@@ -152,7 +152,6 @@ export interface DeviceInboxRow {
canHide: boolean;
canShow: boolean;
canAdd: boolean;
- canOpenHa: boolean;
}
export interface DeviceInboxInput {
@@ -242,7 +241,6 @@ export function buildDeviceInbox(input: DeviceInboxInput): DeviceInboxRow[] {
const active = status.kind === 'active';
const canFind = isRendered && (active
|| (status.kind === 'ha_disabled' && showHiddenOnPlan));
- const canOpenHa = kind === 'device' || kind === 'entity';
const searchText = [
name, model, integrationByBinding[binding], areaNames[areaId], spaceNames[spaceId],
binding, candidate?.sub,
@@ -261,7 +259,6 @@ export function buildDeviceInbox(input: DeviceInboxInput): DeviceInboxRow[] {
canHide: category === 'on_plan' && active,
canShow: category === 'hidden' && active,
canAdd: (category === 'available' || category === 'readd') && active,
- canOpenHa,
});
}
const statusRank = (row: DeviceInboxRow): number => row.status.kind === 'active' ? 1 : 0;
diff --git a/src/houseplan-card.ts b/src/houseplan-card.ts
index 1c7614a4..96750179 100755
--- a/src/houseplan-card.ts
+++ b/src/houseplan-card.ts
@@ -14097,11 +14097,20 @@ class HouseplanCard extends LitElement {
const statuses = new Map
();
for (const binding of bindings) statuses.set(binding, this._bindingStatus(binding));
+ const areaMap = this._areaToSpace;
const areaNames: Record = {};
- for (const [id, area] of Object.entries(this.hass?.areas || {})) areaNames[id] = area?.name || id;
+ for (const [id, area] of Object.entries(this.hass?.areas || {})) {
+ areaNames[id] = areaMap[id]?.room?.name || area?.name || id;
+ }
+ // A room may keep a valid HA area reference even when the current user has
+ // only a limited area-registry snapshot. Its plan-visible name is still
+ // authoritative for the catalog and search.
+ for (const [id, target] of Object.entries(areaMap)) {
+ areaNames[id] = target.room.name || areaNames[id] || id;
+ }
const spaceNames = Object.fromEntries(this._model.map((space) => [space.id, space.title]));
const spaceByArea = Object.fromEntries(
- Object.entries(this._areaToSpace).map(([area, value]) => [area, value.space]),
+ Object.entries(areaMap).map(([area, value]) => [area, value.space]),
);
const integrationByBinding: Record = {};
const devicePlatforms = new Map>();