build: prepare v1.73.0-beta.3 candidate
Проверка (CI) / Классификация изменённых файлов (push) Successful in 41s
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 1m1s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 24s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 30s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 50s
Проверка (CI) / Мутанты по диффу (1/3): затронутые свидетели краснеют (push) Failing after 3m58s
Проверка (CI) / Мутанты по диффу (2/3): затронутые свидетели краснеют (push) Failing after 4m14s
Проверка (CI) / Мутанты по диффу (3/3): затронутые свидетели краснеют (push) Failing after 4m16s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 6m9s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 4m33s

Issue: #53
Issue: #481
User-Visible: yes
Release: v1.73.0-beta.3
This commit is contained in:
Matysh
2026-09-07 05:34:56 +03:00
parent 00fa61a213
commit 08aad891fe
46 changed files with 385 additions and 387 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ SCHEDULED_GRACE_S = 30 * 24 * 3600
FILES_DIR = "houseplan/files" FILES_DIR = "houseplan/files"
ASSETS_DIR = "houseplan/assets" ASSETS_DIR = "houseplan/assets"
CONF_ADMIN_ONLY = "admin_only" CONF_ADMIN_ONLY = "admin_only"
VERSION = "1.73.0-beta.2" VERSION = "1.73.0-beta.3"
DECOR_ASSETS_API_VERSION = 1 DECOR_ASSETS_API_VERSION = 1
# #43: the support transport is deliberately not configurable. A user supplied # #43: the support transport is deliberately not configurable. A user supplied
@@ -1,251 +1,251 @@
{ {
"schema": 1, "schema": 1,
"fingerprint": "be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077", "fingerprint": "16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18",
"entry": "houseplan-card.js", "entry": "houseplan-card.js",
"initialViewFiles": [ "initialViewFiles": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-card.js" "houseplan-card.js"
], ],
"initialViewGzipBytes": 289680, "initialViewGzipBytes": 289689,
"lazyFiles": [ "lazyFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/fr-C-y8mxjP.js", "houseplan-assets/fr-DcbpQBPN.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js", "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js", "houseplan-assets/pdf-export-DtGfc39P.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js", "houseplan-assets/zigbee-topology-BVov8wVf.js",
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
], ],
"lazyGzipBytes": 377474, "lazyGzipBytes": 377481,
"lazyEditorFiles": [ "lazyEditorFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"lazyEditorGzipBytes": 195227, "lazyEditorGzipBytes": 195230,
"lazyOnboardingFiles": [ "lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js" "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js"
], ],
"lazyOnboardingGzipBytes": 14325, "lazyOnboardingGzipBytes": 14327,
"lazyLocaleFiles": [ "lazyLocaleFiles": [
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/fr-C-y8mxjP.js" "houseplan-assets/fr-DcbpQBPN.js"
], ],
"lazyLocaleGzipBytes": 50273, "lazyLocaleGzipBytes": 50276,
"lazyIsometricFiles": [ "lazyIsometricFiles": [
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js" "houseplan-assets/iso-scene-render-BoV9kUH5.js"
], ],
"lazyIsometricGzipBytes": 13456, "lazyIsometricGzipBytes": 13452,
"lazyFurnitureArtFiles": [ "lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js" "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js"
], ],
"lazyFurnitureArtGzipBytes": 10253, "lazyFurnitureArtGzipBytes": 10252,
"lazyPdfFiles": [ "lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js" "houseplan-assets/pdf-export-DtGfc39P.js"
], ],
"lazyPdfGzipBytes": 114552, "lazyPdfGzipBytes": 114553,
"files": [ "files": [
{ {
"path": "houseplan-assets/backdrop-pick-DXZltWqg.js", "path": "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"sha256": "e16030e14b99f3e883df2ee5561e594c8f3949249051a3fc366c38d49e00999c", "sha256": "93cad6469e3654c57cb99e56bcbc476d7bd2ed0ba4b427dd4642a896ffac317e",
"rawBytes": 21592, "rawBytes": 21592,
"gzipBytes": 7358, "gzipBytes": 7359,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/de-D4Fox7UA.js", "path": "houseplan-assets/de-CvTiqIp9.js",
"sha256": "1629ec424f83ece342a27a17604bf202dbb6d3df4eb3d30e28c39c4c74de74e2", "sha256": "58ef84d390a3768827cb509cae61a9299d1b2237171d716bbb5b2f0b8c396070",
"rawBytes": 84320, "rawBytes": 84320,
"gzipBytes": 25379, "gzipBytes": 25381,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/editor-BsRVhFIh.js", "path": "houseplan-assets/editor-CVB0Rprj.js",
"sha256": "e11f0dd559a8d6f30a4b3b1d9a906a3793581ea063a9b0c48a89feede8fc30bb", "sha256": "97c577eaeddedc28c84d09a980c20e858fa92db3da5ede5ba1249c2a675240b8",
"rawBytes": 3837, "rawBytes": 3837,
"gzipBytes": 1589, "gzipBytes": 1589,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/fr-C-y8mxjP.js", "path": "houseplan-assets/fr-DcbpQBPN.js",
"sha256": "da7db759ae68453d71f0c12ea08d7719c34bed3ef80c62b13194b610071b397a", "sha256": "161b5fa336f7f434ccfe98de0522724cbde83f78a1e33a113139f1e1cd72826f",
"rawBytes": 86352, "rawBytes": 86352,
"gzipBytes": 24894, "gzipBytes": 24895,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "path": "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"sha256": "3d59ba8789d32ab6296b9925d48d3ceeff8adc309da60a59d41a1217dd36cfac", "sha256": "71d1b96aa57c8e671a265b267618883adb9b28631794bee99c884938619801dd",
"rawBytes": 33655, "rawBytes": 33655,
"gzipBytes": 10253, "gzipBytes": 10252,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/guard-BDlUT3Kk.js", "path": "houseplan-assets/guard-kV3ui_0R.js",
"sha256": "f8d2b4324662f3eeeb4c030d9ed5f5d6550547f63505a04d587d3b16bbc85e7a", "sha256": "742edae60745f4f8c7b60c4629433de715b9093699bceb370cc7b2c1acb7816e",
"rawBytes": 518, "rawBytes": 518,
"gzipBytes": 370, "gzipBytes": 369,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/houseplan-card-DwS0pmiF.js", "path": "houseplan-assets/houseplan-card-Dj3l4riu.js",
"sha256": "bf9816849f459343595fe1ed86a779ea308e0769e8e1710070fdebf7bfe70f2a", "sha256": "889417c180066998beb8de107f19b09372de059586f9207c388f3904c3ab0a11",
"rawBytes": 1041197, "rawBytes": 1041197,
"gzipBytes": 288884, "gzipBytes": 288894,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [ "dynamicImports": [
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/fr-C-y8mxjP.js", "houseplan-assets/fr-DcbpQBPN.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js", "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js" "houseplan-assets/pdf-export-DtGfc39P.js"
] ]
}, },
{ {
"path": "houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "path": "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"sha256": "1e041618470a7d2005510d4daceb6264df6efbc1a247b3df262f78c27bf56c66", "sha256": "19a3ed2f8336ef5875becf0dd9341e1eb2acba92e3eefcccb2a4a4f0c2fe1865",
"rawBytes": 631884, "rawBytes": 631884,
"gzipBytes": 168232, "gzipBytes": 168231,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"dynamicImports": [ "dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
] ]
}, },
{ {
"path": "houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "path": "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"sha256": "2586ffa6b848c97ad69e05dd23524ddb234f1ae190c370894aed351d25372b0f", "sha256": "8ae0c319d6d953503893af057911e8dd80b1496aced771b33e59a2c9d7462888",
"rawBytes": 28071, "rawBytes": 28071,
"gzipBytes": 6967, "gzipBytes": 6968,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "path": "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"sha256": "f653aae1c3714204bb2c47ff5d5ad4f67f0726172ca3d2fe24b48e3a5b57c805", "sha256": "6abe885e9c2aaed324383b5d5cd3d6fbe2e15a035e75714fa81bd03ffbd60364",
"rawBytes": 11034, "rawBytes": 11034,
"gzipBytes": 3731, "gzipBytes": 3732,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js", "houseplan-assets/zigbee-topology-BVov8wVf.js",
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/iso-scene-render-3tm5cCgt.js", "path": "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"sha256": "95fbcec6397e23b103da9554fd95c751e9446478f1c2fab33859e2f6c2d84613", "sha256": "fc7a3e8043131534d6e8a06436604b8cfce30507db7e1605e9fbd3f2f112691a",
"rawBytes": 38562, "rawBytes": 38562,
"gzipBytes": 13086, "gzipBytes": 13083,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "path": "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"sha256": "858491f4e6e479d8e58289bf643db5203a251b82ddbf10bdb678bc39b17ed298", "sha256": "3bb9ad1896160fdce6c80f26e1aae3326492fd746d1b377aac1803ede9a69ce5",
"rawBytes": 5196, "rawBytes": 5196,
"gzipBytes": 2128, "gzipBytes": 2129,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/pdf-export-Bi5oR1ho.js", "path": "houseplan-assets/pdf-export-DtGfc39P.js",
"sha256": "549bebf0c0f7afd4c09a505b4a100ae204ba2b45a02004e2a63fcd825cd6e225", "sha256": "fbaccc807ebf53736fc787d08ec655fc34282dceac8b6179f7f7b45d175c4a08",
"rawBytes": 220678, "rawBytes": 220678,
"gzipBytes": 104299, "gzipBytes": 104301,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/zigbee-topology-B6N55BDi.js", "path": "houseplan-assets/zigbee-topology-BVov8wVf.js",
"sha256": "8be68400c60f5036132db789f6880583fb5f2e3b5fac83b5a5a893cbce495757", "sha256": "9567e8eb9e5493ebec9fe6eb20dc4d697668ba366f34e4dbebdd4dc1f27711f6",
"rawBytes": 18961, "rawBytes": 18961,
"gzipBytes": 7425, "gzipBytes": 7430,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js", "path": "houseplan-assets/zigbee-topology-runtime-qetRggvA.js",
"sha256": "e8b3a5180b562f3a47728eacb44fe1df3d19ebc06ffb4b8d42488135d0d6fcff", "sha256": "42b7519d904e811226d3f3c3a3eb7d4ddad31a930e556c2ab70bdf33646c1d46",
"rawBytes": 3941, "rawBytes": 3941,
"gzipBytes": 1763, "gzipBytes": 1762,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-card.js", "path": "houseplan-card.js",
"sha256": "4daf155cfa86ab21eb053d04c7ca5c7ad13256feb469733261d5eb1eb7073514", "sha256": "14428c282530203899c2f201e015faaab528358f62b3ce4393c347bc9acf39b3",
"rawBytes": 1183, "rawBytes": 1183,
"gzipBytes": 796, "gzipBytes": 795,
"isEntry": true, "isEntry": true,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
} }
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-DwS0pmiF.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-Dj3l4riu.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass} .hass=${this.hass}
.data=${this._formData} .data=${this._formData}
.schema=${e} .schema=${e}
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{dK as r,dL as t,dM as e}from"./houseplan-card-DwS0pmiF.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{dK as r,dL as t,dM as s}from"./houseplan-card-Dj3l4riu.js";const e={},a=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return s}else if(this.ot===t)return s;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{a as i};
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{l as t,a_ as s,A as e,x as o,b as a,ci as l,cj as i,ck as h,cl as c,aX as n,cm as r,cr as p,cn as _,co as d,cp as u,cq as g,di as m,aW as b,aY as $,dj as v}from"./houseplan-card-DwS0pmiF.js";import{i as f,c as y,e as w,r as D,a as k,b as S,g as C,t as M}from"./backdrop-pick-DXZltWqg.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";class L{constructor(t){this.host=t,this._toggleServerPlans=async()=>{const t=this.host._spaceDialog;if(t)if(t.pickSaved)this.host._spaceDialog={...t,pickSaved:!1};else{this.host._spaceDialog={...t,pickSaved:!0,savedBusy:!0};try{const t=await this.host.hass.callWS({type:"houseplan/plans/list"}),s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:t?.plans||[],savedBusy:!1})}catch(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:[],savedBusy:!1}),this.host._showToast(this.host._t("toast.plans_list_failed",{err:this.host._errText(t)}))}}}}_help(l){const i=`${l}.aria`,h=t(this.host.hass,this.host._config?.language);return s(h,l)&&s(h,i)?a`<hp-help data-help-key=${l} globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{l as t,a_ as s,A as e,x as o,b as a,ci as l,cj as i,ck as h,cl as c,aX as n,cm as r,cr as p,cn as _,co as d,cp as u,cq as g,di as m,aW as b,aY as $,dj as v}from"./houseplan-card-Dj3l4riu.js";import{i as f,c as y,e as w,r as D,a as k,b as S,g as C,t as M}from"./backdrop-pick-CVsiO2U3.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";class L{constructor(t){this.host=t,this._toggleServerPlans=async()=>{const t=this.host._spaceDialog;if(t)if(t.pickSaved)this.host._spaceDialog={...t,pickSaved:!1};else{this.host._spaceDialog={...t,pickSaved:!0,savedBusy:!0};try{const t=await this.host.hass.callWS({type:"houseplan/plans/list"}),s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:t?.plans||[],savedBusy:!1})}catch(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:[],savedBusy:!1}),this.host._showToast(this.host._t("toast.plans_list_failed",{err:this.host._errText(t)}))}}}}_help(l){const i=`${l}.aria`,h=t(this.host.hass,this.host._config?.language);return s(h,l)&&s(h,i)?a`<hp-help data-help-key=${l}
.text=${o(h,l)} .ariaLabel=${o(h,i)}></hp-help>`:e}_openSpaceDialog(t,s){if(!this.host._serverStorage||!this.host._serverCfg)return void this.host._showToast(this.host._t("toast.integration_missing"));if("edit"===t){const e=this.host._serverCfg.spaces.find(t=>t.id===s);if(!e)return;const o=l(e),a=e.settings?.custom_fill&&"object"==typeof e.settings.custom_fill?i(e.settings.custom_fill):null,p="none"===o.fill?{...a||h,a:0}:a;return void(this.host._spaceDialog={mode:t,spaceId:s,title:e.title,planUrl:e.plan_url||null,planFile:null,source:e.plan_url?"file":"draw",showBorders:o.showBorders,showNames:o.showNames,zeroWallStyle:r(e),displayTouched:!0,hideDecor:o.hideDecor,hideOpenings:o.hideOpenings,roomColor:o.color,roomOpacity:o.opacity,fillMode:"none"===o.fill?"custom":o.fill,customFill:p,glowEnabled:o.glow,bgColor:o.bgColor,bgMode:"static"===e.settings?.bg_mode||"daynight"===e.settings?.bg_mode?e.settings.bg_mode:null,northDeg:n({},e.settings),sunRays:"boolean"==typeof e.settings?.sun_rays?e.settings.sun_rays:null,tempMin:o.tempMin,tempMax:o.tempMax,showLqi:o.showLqi??this.host._config?.show_signal??!0,cardFontScale:o.cardFontScale,labelTemp:o.labelTemp,labelHum:o.labelHum,labelLqi:o.labelLqi,labelLight:o.labelLight,cellCm:Number(e.cell_cm)>0?Number(e.cell_cm):5,cellCmInput:c(Number(e.cell_cm)>0?Number(e.cell_cm):5,this.host._imperial),cellCmTouched:!1,busy:!1})}const e=p(this.host._imperial);this.host._spaceDialog={mode:t,title:"",planUrl:null,planFile:null,...f(),hideDecor:!1,hideOpenings:!1,zeroWallStyle:"dashed",roomColor:g,roomOpacity:u,fillMode:"custom",customFill:{...h,a:0},glowEnabled:!0,bgColor:null,bgMode:"daynight",northDeg:null,sunRays:null,tempMin:d,tempMax:_,showLqi:this.host._config?.show_signal??!0,cardFontScale:1,labelTemp:!1,labelHum:!1,labelLqi:!1,labelLight:!1,cellCm:e,cellCmInput:c(e,this.host._imperial),cellCmTouched:!1,busy:!1}}async _pickPlanFile(t){const s=t.target,e=s.files?.[0];if(!e||!this.host._spaceDialog)return;s.value="";const o=await y(e);if("reject"===o.kind)return void this.host._showToast(this.host._t("toast.plan_formats"));if("guard"===o.kind)return void(this.host._backdropGuard=o.state);const a=await w(e,o.ext,e.name);this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:a})}_renderBackdropGuard(){return D(this.host,t=>{this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:t})},()=>{this.host._backdropGuard=null},this.host.hass)??e}_useServerPlan(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,planUrl:t,planFile:null,pickSaved:!1,savedAspect:void 0},this.host._aspectJob=this._readPlanAspect(t))}async _readPlanAspect(t){for(let s=0;s<40;s++){const s=this.host._display(t);if(s){const e=await new Promise(t=>{const e=new Image;e.onload=()=>t(e.naturalWidth&&e.naturalHeight?e.naturalWidth/e.naturalHeight:0),e.onerror=()=>t(0),e.src=s}),o=this.host._spaceDialog;return o&&o.planUrl===t&&Number.isFinite(e)&&e>0?(this.host._spaceDialog={...o,savedAspect:e},e):0}if(await new Promise(t=>setTimeout(t,150)),this.host._spaceDialog?.planUrl!==t)return 0}return 0}async _deleteServerPlan(t){const s=this.host._spaceDialog,e=s?.saved?.find(s=>s.name===t);if(!s||!e||e.used_by.length||e.url===s.planUrl)return;const o=await this.host._confirmDanger({key:"delete-plan",kind:"destructive",title:this.host._t("confirm.delete_plan_title"),message:this.host._t("confirm.delete_plan_body"),objectName:t,confirmLabel:this.host._t("btn.delete"),cancelLabel:this.host._t("btn.cancel")}),a=this.host._spaceDialog,l=a?.saved?.find(s=>s.name===t);if(o&&a&&l&&l.url===e.url&&l.modified===e.modified&&!l.used_by.length&&l.url!==a.planUrl)try{await this.host.hass.callWS({type:"houseplan/plans/delete",name:t});const s=this.host._spaceDialog;s?.saved&&(this.host._spaceDialog={...s,saved:s.saved.filter(s=>s.name!==t)})}catch(t){this.host._showToast(this.host._t("toast.plan_delete_failed",{err:this.host._errText(t)}))}}_renderServerPlans(t){if(t.savedBusy)return a`<div class="savedplans muted">${this.host._t("space.loading")}</div>`;const s=t.saved||[];if(!s.length)return a`<div class="savedplans muted">${this.host._t("space.no_saved")}</div>`;return a`<div class="savedplans"> .text=${o(h,l)} .ariaLabel=${o(h,i)}></hp-help>`:e}_openSpaceDialog(t,s){if(!this.host._serverStorage||!this.host._serverCfg)return void this.host._showToast(this.host._t("toast.integration_missing"));if("edit"===t){const e=this.host._serverCfg.spaces.find(t=>t.id===s);if(!e)return;const o=l(e),a=e.settings?.custom_fill&&"object"==typeof e.settings.custom_fill?i(e.settings.custom_fill):null,p="none"===o.fill?{...a||h,a:0}:a;return void(this.host._spaceDialog={mode:t,spaceId:s,title:e.title,planUrl:e.plan_url||null,planFile:null,source:e.plan_url?"file":"draw",showBorders:o.showBorders,showNames:o.showNames,zeroWallStyle:r(e),displayTouched:!0,hideDecor:o.hideDecor,hideOpenings:o.hideOpenings,roomColor:o.color,roomOpacity:o.opacity,fillMode:"none"===o.fill?"custom":o.fill,customFill:p,glowEnabled:o.glow,bgColor:o.bgColor,bgMode:"static"===e.settings?.bg_mode||"daynight"===e.settings?.bg_mode?e.settings.bg_mode:null,northDeg:n({},e.settings),sunRays:"boolean"==typeof e.settings?.sun_rays?e.settings.sun_rays:null,tempMin:o.tempMin,tempMax:o.tempMax,showLqi:o.showLqi??this.host._config?.show_signal??!0,cardFontScale:o.cardFontScale,labelTemp:o.labelTemp,labelHum:o.labelHum,labelLqi:o.labelLqi,labelLight:o.labelLight,cellCm:Number(e.cell_cm)>0?Number(e.cell_cm):5,cellCmInput:c(Number(e.cell_cm)>0?Number(e.cell_cm):5,this.host._imperial),cellCmTouched:!1,busy:!1})}const e=p(this.host._imperial);this.host._spaceDialog={mode:t,title:"",planUrl:null,planFile:null,...f(),hideDecor:!1,hideOpenings:!1,zeroWallStyle:"dashed",roomColor:g,roomOpacity:u,fillMode:"custom",customFill:{...h,a:0},glowEnabled:!0,bgColor:null,bgMode:"daynight",northDeg:null,sunRays:null,tempMin:d,tempMax:_,showLqi:this.host._config?.show_signal??!0,cardFontScale:1,labelTemp:!1,labelHum:!1,labelLqi:!1,labelLight:!1,cellCm:e,cellCmInput:c(e,this.host._imperial),cellCmTouched:!1,busy:!1}}async _pickPlanFile(t){const s=t.target,e=s.files?.[0];if(!e||!this.host._spaceDialog)return;s.value="";const o=await y(e);if("reject"===o.kind)return void this.host._showToast(this.host._t("toast.plan_formats"));if("guard"===o.kind)return void(this.host._backdropGuard=o.state);const a=await w(e,o.ext,e.name);this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:a})}_renderBackdropGuard(){return D(this.host,t=>{this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:t})},()=>{this.host._backdropGuard=null},this.host.hass)??e}_useServerPlan(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,planUrl:t,planFile:null,pickSaved:!1,savedAspect:void 0},this.host._aspectJob=this._readPlanAspect(t))}async _readPlanAspect(t){for(let s=0;s<40;s++){const s=this.host._display(t);if(s){const e=await new Promise(t=>{const e=new Image;e.onload=()=>t(e.naturalWidth&&e.naturalHeight?e.naturalWidth/e.naturalHeight:0),e.onerror=()=>t(0),e.src=s}),o=this.host._spaceDialog;return o&&o.planUrl===t&&Number.isFinite(e)&&e>0?(this.host._spaceDialog={...o,savedAspect:e},e):0}if(await new Promise(t=>setTimeout(t,150)),this.host._spaceDialog?.planUrl!==t)return 0}return 0}async _deleteServerPlan(t){const s=this.host._spaceDialog,e=s?.saved?.find(s=>s.name===t);if(!s||!e||e.used_by.length||e.url===s.planUrl)return;const o=await this.host._confirmDanger({key:"delete-plan",kind:"destructive",title:this.host._t("confirm.delete_plan_title"),message:this.host._t("confirm.delete_plan_body"),objectName:t,confirmLabel:this.host._t("btn.delete"),cancelLabel:this.host._t("btn.cancel")}),a=this.host._spaceDialog,l=a?.saved?.find(s=>s.name===t);if(o&&a&&l&&l.url===e.url&&l.modified===e.modified&&!l.used_by.length&&l.url!==a.planUrl)try{await this.host.hass.callWS({type:"houseplan/plans/delete",name:t});const s=this.host._spaceDialog;s?.saved&&(this.host._spaceDialog={...s,saved:s.saved.filter(s=>s.name!==t)})}catch(t){this.host._showToast(this.host._t("toast.plan_delete_failed",{err:this.host._errText(t)}))}}_renderServerPlans(t){if(t.savedBusy)return a`<div class="savedplans muted">${this.host._t("space.loading")}</div>`;const s=t.saved||[];if(!s.length)return a`<div class="savedplans muted">${this.host._t("space.no_saved")}</div>`;return a`<div class="savedplans">
${s.map(s=>{return a` ${s.map(s=>{return a`
<div class="savedplan ${s.url===t.planUrl?"cur":""}"> <div class="savedplan ${s.url===t.planUrl?"cur":""}">
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{n as t,b as n}from"./zigbee-topology-B6N55BDi.js";import{F as e}from"./houseplan-card-DwS0pmiF.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot}; globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{n as t,b as n}from"./zigbee-topology-BVov8wVf.js";import{F as e}from"./houseplan-card-Dj3l4riu.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";try{await import("./houseplan-assets/houseplan-card-DwS0pmiF.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale entry: the main chunk is unavailable",e)} globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";try{await import("./houseplan-assets/houseplan-card-Dj3l4riu.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale entry: the main chunk is unavailable",e)}
+1 -1
View File
@@ -19,5 +19,5 @@
"issue_tracker": "https://github.com/Matysh/houseplan-card/issues", "issue_tracker": "https://github.com/Matysh/houseplan-card/issues",
"requirements": [], "requirements": [],
"single_config_entry": true, "single_config_entry": true,
"version": "1.73.0-beta.2" "version": "1.73.0-beta.3"
} }
+118 -118
View File
@@ -1,251 +1,251 @@
{ {
"schema": 1, "schema": 1,
"fingerprint": "be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077", "fingerprint": "16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18",
"entry": "houseplan-card.js", "entry": "houseplan-card.js",
"initialViewFiles": [ "initialViewFiles": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-card.js" "houseplan-card.js"
], ],
"initialViewGzipBytes": 289680, "initialViewGzipBytes": 289689,
"lazyFiles": [ "lazyFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/fr-C-y8mxjP.js", "houseplan-assets/fr-DcbpQBPN.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js", "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js", "houseplan-assets/pdf-export-DtGfc39P.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js", "houseplan-assets/zigbee-topology-BVov8wVf.js",
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
], ],
"lazyGzipBytes": 377474, "lazyGzipBytes": 377481,
"lazyEditorFiles": [ "lazyEditorFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"lazyEditorGzipBytes": 195227, "lazyEditorGzipBytes": 195230,
"lazyOnboardingFiles": [ "lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js" "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js"
], ],
"lazyOnboardingGzipBytes": 14325, "lazyOnboardingGzipBytes": 14327,
"lazyLocaleFiles": [ "lazyLocaleFiles": [
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/fr-C-y8mxjP.js" "houseplan-assets/fr-DcbpQBPN.js"
], ],
"lazyLocaleGzipBytes": 50273, "lazyLocaleGzipBytes": 50276,
"lazyIsometricFiles": [ "lazyIsometricFiles": [
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js" "houseplan-assets/iso-scene-render-BoV9kUH5.js"
], ],
"lazyIsometricGzipBytes": 13456, "lazyIsometricGzipBytes": 13452,
"lazyFurnitureArtFiles": [ "lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js" "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js"
], ],
"lazyFurnitureArtGzipBytes": 10253, "lazyFurnitureArtGzipBytes": 10252,
"lazyPdfFiles": [ "lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js" "houseplan-assets/pdf-export-DtGfc39P.js"
], ],
"lazyPdfGzipBytes": 114552, "lazyPdfGzipBytes": 114553,
"files": [ "files": [
{ {
"path": "houseplan-assets/backdrop-pick-DXZltWqg.js", "path": "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"sha256": "e16030e14b99f3e883df2ee5561e594c8f3949249051a3fc366c38d49e00999c", "sha256": "93cad6469e3654c57cb99e56bcbc476d7bd2ed0ba4b427dd4642a896ffac317e",
"rawBytes": 21592, "rawBytes": 21592,
"gzipBytes": 7358, "gzipBytes": 7359,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/de-D4Fox7UA.js", "path": "houseplan-assets/de-CvTiqIp9.js",
"sha256": "1629ec424f83ece342a27a17604bf202dbb6d3df4eb3d30e28c39c4c74de74e2", "sha256": "58ef84d390a3768827cb509cae61a9299d1b2237171d716bbb5b2f0b8c396070",
"rawBytes": 84320, "rawBytes": 84320,
"gzipBytes": 25379, "gzipBytes": 25381,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/editor-BsRVhFIh.js", "path": "houseplan-assets/editor-CVB0Rprj.js",
"sha256": "e11f0dd559a8d6f30a4b3b1d9a906a3793581ea063a9b0c48a89feede8fc30bb", "sha256": "97c577eaeddedc28c84d09a980c20e858fa92db3da5ede5ba1249c2a675240b8",
"rawBytes": 3837, "rawBytes": 3837,
"gzipBytes": 1589, "gzipBytes": 1589,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/fr-C-y8mxjP.js", "path": "houseplan-assets/fr-DcbpQBPN.js",
"sha256": "da7db759ae68453d71f0c12ea08d7719c34bed3ef80c62b13194b610071b397a", "sha256": "161b5fa336f7f434ccfe98de0522724cbde83f78a1e33a113139f1e1cd72826f",
"rawBytes": 86352, "rawBytes": 86352,
"gzipBytes": 24894, "gzipBytes": 24895,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "path": "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"sha256": "3d59ba8789d32ab6296b9925d48d3ceeff8adc309da60a59d41a1217dd36cfac", "sha256": "71d1b96aa57c8e671a265b267618883adb9b28631794bee99c884938619801dd",
"rawBytes": 33655, "rawBytes": 33655,
"gzipBytes": 10253, "gzipBytes": 10252,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/guard-BDlUT3Kk.js", "path": "houseplan-assets/guard-kV3ui_0R.js",
"sha256": "f8d2b4324662f3eeeb4c030d9ed5f5d6550547f63505a04d587d3b16bbc85e7a", "sha256": "742edae60745f4f8c7b60c4629433de715b9093699bceb370cc7b2c1acb7816e",
"rawBytes": 518, "rawBytes": 518,
"gzipBytes": 370, "gzipBytes": 369,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/houseplan-card-DwS0pmiF.js", "path": "houseplan-assets/houseplan-card-Dj3l4riu.js",
"sha256": "bf9816849f459343595fe1ed86a779ea308e0769e8e1710070fdebf7bfe70f2a", "sha256": "889417c180066998beb8de107f19b09372de059586f9207c388f3904c3ab0a11",
"rawBytes": 1041197, "rawBytes": 1041197,
"gzipBytes": 288884, "gzipBytes": 288894,
"isEntry": false, "isEntry": false,
"imports": [], "imports": [],
"dynamicImports": [ "dynamicImports": [
"houseplan-assets/de-D4Fox7UA.js", "houseplan-assets/de-CvTiqIp9.js",
"houseplan-assets/editor-BsRVhFIh.js", "houseplan-assets/editor-CVB0Rprj.js",
"houseplan-assets/fr-C-y8mxjP.js", "houseplan-assets/fr-DcbpQBPN.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"houseplan-assets/iso-scene-render-3tm5cCgt.js", "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"houseplan-assets/pdf-export-Bi5oR1ho.js" "houseplan-assets/pdf-export-DtGfc39P.js"
] ]
}, },
{ {
"path": "houseplan-assets/houseplan-editor-runtime-DreWhF65.js", "path": "houseplan-assets/houseplan-editor-runtime-VRkO32UK.js",
"sha256": "1e041618470a7d2005510d4daceb6264df6efbc1a247b3df262f78c27bf56c66", "sha256": "19a3ed2f8336ef5875becf0dd9341e1eb2acba92e3eefcccb2a4a4f0c2fe1865",
"rawBytes": 631884, "rawBytes": 631884,
"gzipBytes": 168232, "gzipBytes": 168231,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"dynamicImports": [ "dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
] ]
}, },
{ {
"path": "houseplan-assets/houseplan-onboarding-runtime-Df_XDC5U.js", "path": "houseplan-assets/houseplan-onboarding-runtime-DtvWEN8d.js",
"sha256": "2586ffa6b848c97ad69e05dd23524ddb234f1ae190c370894aed351d25372b0f", "sha256": "8ae0c319d6d953503893af057911e8dd80b1496aced771b33e59a2c9d7462888",
"rawBytes": 28071, "rawBytes": 28071,
"gzipBytes": 6967, "gzipBytes": 6968,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/backdrop-pick-DXZltWqg.js", "houseplan-assets/backdrop-pick-CVsiO2U3.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/hp-zigbee-topology-overlay-BEEaYQ2u.js", "path": "houseplan-assets/hp-zigbee-topology-overlay-5l6jYuHP.js",
"sha256": "f653aae1c3714204bb2c47ff5d5ad4f67f0726172ca3d2fe24b48e3a5b57c805", "sha256": "6abe885e9c2aaed324383b5d5cd3d6fbe2e15a035e75714fa81bd03ffbd60364",
"rawBytes": 11034, "rawBytes": 11034,
"gzipBytes": 3731, "gzipBytes": 3732,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js", "houseplan-assets/zigbee-topology-BVov8wVf.js",
"houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js" "houseplan-assets/zigbee-topology-runtime-qetRggvA.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/iso-scene-render-3tm5cCgt.js", "path": "houseplan-assets/iso-scene-render-BoV9kUH5.js",
"sha256": "95fbcec6397e23b103da9554fd95c751e9446478f1c2fab33859e2f6c2d84613", "sha256": "fc7a3e8043131534d6e8a06436604b8cfce30507db7e1605e9fbd3f2f112691a",
"rawBytes": 38562, "rawBytes": 38562,
"gzipBytes": 13086, "gzipBytes": 13083,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/guard-BDlUT3Kk.js", "houseplan-assets/guard-kV3ui_0R.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/live-interaction-runtime-DYl_V0cy.js", "path": "houseplan-assets/live-interaction-runtime-ktbS2aJv.js",
"sha256": "858491f4e6e479d8e58289bf643db5203a251b82ddbf10bdb678bc39b17ed298", "sha256": "3bb9ad1896160fdce6c80f26e1aae3326492fd746d1b377aac1803ede9a69ce5",
"rawBytes": 5196, "rawBytes": 5196,
"gzipBytes": 2128, "gzipBytes": 2129,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/pdf-export-Bi5oR1ho.js", "path": "houseplan-assets/pdf-export-DtGfc39P.js",
"sha256": "549bebf0c0f7afd4c09a505b4a100ae204ba2b45a02004e2a63fcd825cd6e225", "sha256": "fbaccc807ebf53736fc787d08ec655fc34282dceac8b6179f7f7b45d175c4a08",
"rawBytes": 220678, "rawBytes": 220678,
"gzipBytes": 104299, "gzipBytes": 104301,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/furniture-plan-art.generated-HLrVON0e.js", "houseplan-assets/furniture-plan-art.generated-CNpyYWJT.js",
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/zigbee-topology-B6N55BDi.js", "path": "houseplan-assets/zigbee-topology-BVov8wVf.js",
"sha256": "8be68400c60f5036132db789f6880583fb5f2e3b5fac83b5a5a893cbce495757", "sha256": "9567e8eb9e5493ebec9fe6eb20dc4d697668ba366f34e4dbebdd4dc1f27711f6",
"rawBytes": 18961, "rawBytes": 18961,
"gzipBytes": 7425, "gzipBytes": 7430,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-assets/zigbee-topology-runtime-Cg6EjnY4.js", "path": "houseplan-assets/zigbee-topology-runtime-qetRggvA.js",
"sha256": "e8b3a5180b562f3a47728eacb44fe1df3d19ebc06ffb4b8d42488135d0d6fcff", "sha256": "42b7519d904e811226d3f3c3a3eb7d4ddad31a930e556c2ab70bdf33646c1d46",
"rawBytes": 3941, "rawBytes": 3941,
"gzipBytes": 1763, "gzipBytes": 1762,
"isEntry": false, "isEntry": false,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js", "houseplan-assets/houseplan-card-Dj3l4riu.js",
"houseplan-assets/zigbee-topology-B6N55BDi.js" "houseplan-assets/zigbee-topology-BVov8wVf.js"
], ],
"dynamicImports": [] "dynamicImports": []
}, },
{ {
"path": "houseplan-card.js", "path": "houseplan-card.js",
"sha256": "4daf155cfa86ab21eb053d04c7ca5c7ad13256feb469733261d5eb1eb7073514", "sha256": "14428c282530203899c2f201e015faaab528358f62b3ce4393c347bc9acf39b3",
"rawBytes": 1183, "rawBytes": 1183,
"gzipBytes": 796, "gzipBytes": 795,
"isEntry": true, "isEntry": true,
"imports": [ "imports": [
"houseplan-assets/houseplan-card-DwS0pmiF.js" "houseplan-assets/houseplan-card-Dj3l4riu.js"
], ],
"dynamicImports": [] "dynamicImports": []
} }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-DwS0pmiF.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{t as e,l as o,x as t,dV as s,A as a,dW as i,dX as l,dY as n,dM as r,b as c}from"./houseplan-card-Dj3l4riu.js";class h extends e{constructor(){super(...arguments),this._spaces=null,this._spacesLoading=!1,this._spacesAuthoritative=!1}setConfig(e){this._config=e}async _loadSpaces(){if(!this._spaces&&!this._spacesLoading&&this.hass){this._spacesLoading=!0;try{const e=await this.hass.callWS({type:"houseplan/config/get"});this._spaces=(e?.config?.spaces||[]).map(e=>({value:e.id,label:e.title||e.id})),this._spacesAuthoritative=!0}catch{this._spaces=[],this._spacesAuthoritative=!1}finally{this._spacesLoading=!1}}}get _lang(){return o(this.hass,this._config?.language)}get _floorToken(){const e=this._config?.floor;return"number"==typeof e?`__houseplan_yaml_floor_index__:${String(e)}`:null}get _formData(){const e={...this._config},o=this._floorToken;return o?e.floor=o:Object.prototype.hasOwnProperty.call(e,"floor")||(e.floor=""),e}get _schema(){const e=this._spaces||[],o=this._lang,a=[{value:"",label:t(o,"editor.floor_none")}],i=this._floorToken;i&&a.push({value:i,label:t(o,"editor.floor_index",{index:String(this._config?.floor)})});const l="string"==typeof this._config?.floor?this._config.floor:"";l&&!e.some(e=>e.value===l)&&a.push({value:l,label:l}),a.push(...e);const n="string"==typeof this._config?.default_floor?this._config.default_floor:"",r=[...e];return n&&!e.some(e=>e.value===n)&&r.unshift({value:n,label:n}),[{name:"title",selector:{text:{}}},{name:"floor",selector:{select:{mode:"dropdown",options:a}}},e.length?{name:"default_floor",selector:{select:{mode:"dropdown",options:r}}}:{name:"default_floor",selector:{text:{}}},{name:"language",selector:{select:{mode:"dropdown",options:s(t(o,"editor.lang_auto"),this._config?.language)}}},{name:"icon_size",selector:{number:{min:1,max:6,step:.1,mode:"box"}}},{name:"show_temperature",selector:{boolean:{}}},{name:"live_states",selector:{boolean:{}}},{name:"show_signal",selector:{boolean:{}}},{name:"kiosk",selector:{boolean:{}}},{name:"cycle",selector:{number:{min:0,max:3600,step:5,mode:"box"}}}]}render(){if(!this.hass||!this._config)return a;const e=i(this,l,o(this.hass,this._config.language));if("cold"===e)return n();if("warm"===e)return r;this._loadSpaces();const s=this._lang,h={title:t(s,"editor.title"),floor:t(s,"editor.floor"),default_floor:t(s,"editor.default_floor"),language:t(s,"editor.language"),icon_size:t(s,"editor.icon_size"),show_temperature:t(s,"editor.show_temperature"),live_states:t(s,"editor.live_states"),show_signal:t(s,"editor.show_signal"),kiosk:t(s,"editor.kiosk"),cycle:t(s,"editor.cycle")},f=this._schema,_=function(e,o,t){if(!t||null===o)return null;const s="string"==typeof e?.default_floor?e.default_floor:"";return!s||o.some(e=>e.value===s)?null:s}(this._config,this._spaces,this._spacesAuthoritative),d=e=>c`<ha-form
.hass=${this.hass} .hass=${this.hass}
.data=${this._formData} .data=${this._formData}
.schema=${e} .schema=${e}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{dK as r,dL as t,dM as e}from"./houseplan-card-DwS0pmiF.js";const s={},a=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return e}else if(this.ot===t)return e;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{a as i};
+1
View File
@@ -0,0 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{dK as r,dL as t,dM as s}from"./houseplan-card-Dj3l4riu.js";const e={},a=r(class extends t{constructor(){super(...arguments),this.ot=e}render(r,t){return t()}update(r,[t,e]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return s}else if(this.ot===t)return s;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,e)}});export{a as i};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{l as t,a_ as s,A as e,x as o,b as a,ci as l,cj as i,ck as h,cl as c,aX as n,cm as r,cr as p,cn as _,co as d,cp as u,cq as g,di as m,aW as b,aY as $,dj as v}from"./houseplan-card-DwS0pmiF.js";import{i as f,c as y,e as w,r as D,a as k,b as S,g as C,t as M}from"./backdrop-pick-DXZltWqg.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";class L{constructor(t){this.host=t,this._toggleServerPlans=async()=>{const t=this.host._spaceDialog;if(t)if(t.pickSaved)this.host._spaceDialog={...t,pickSaved:!1};else{this.host._spaceDialog={...t,pickSaved:!0,savedBusy:!0};try{const t=await this.host.hass.callWS({type:"houseplan/plans/list"}),s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:t?.plans||[],savedBusy:!1})}catch(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:[],savedBusy:!1}),this.host._showToast(this.host._t("toast.plans_list_failed",{err:this.host._errText(t)}))}}}}_help(l){const i=`${l}.aria`,h=t(this.host.hass,this.host._config?.language);return s(h,l)&&s(h,i)?a`<hp-help data-help-key=${l} globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{l as t,a_ as s,A as e,x as o,b as a,ci as l,cj as i,ck as h,cl as c,aX as n,cm as r,cr as p,cn as _,co as d,cp as u,cq as g,di as m,aW as b,aY as $,dj as v}from"./houseplan-card-Dj3l4riu.js";import{i as f,c as y,e as w,r as D,a as k,b as S,g as C,t as M}from"./backdrop-pick-CVsiO2U3.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";class L{constructor(t){this.host=t,this._toggleServerPlans=async()=>{const t=this.host._spaceDialog;if(t)if(t.pickSaved)this.host._spaceDialog={...t,pickSaved:!1};else{this.host._spaceDialog={...t,pickSaved:!0,savedBusy:!0};try{const t=await this.host.hass.callWS({type:"houseplan/plans/list"}),s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:t?.plans||[],savedBusy:!1})}catch(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,saved:[],savedBusy:!1}),this.host._showToast(this.host._t("toast.plans_list_failed",{err:this.host._errText(t)}))}}}}_help(l){const i=`${l}.aria`,h=t(this.host.hass,this.host._config?.language);return s(h,l)&&s(h,i)?a`<hp-help data-help-key=${l}
.text=${o(h,l)} .ariaLabel=${o(h,i)}></hp-help>`:e}_openSpaceDialog(t,s){if(!this.host._serverStorage||!this.host._serverCfg)return void this.host._showToast(this.host._t("toast.integration_missing"));if("edit"===t){const e=this.host._serverCfg.spaces.find(t=>t.id===s);if(!e)return;const o=l(e),a=e.settings?.custom_fill&&"object"==typeof e.settings.custom_fill?i(e.settings.custom_fill):null,p="none"===o.fill?{...a||h,a:0}:a;return void(this.host._spaceDialog={mode:t,spaceId:s,title:e.title,planUrl:e.plan_url||null,planFile:null,source:e.plan_url?"file":"draw",showBorders:o.showBorders,showNames:o.showNames,zeroWallStyle:r(e),displayTouched:!0,hideDecor:o.hideDecor,hideOpenings:o.hideOpenings,roomColor:o.color,roomOpacity:o.opacity,fillMode:"none"===o.fill?"custom":o.fill,customFill:p,glowEnabled:o.glow,bgColor:o.bgColor,bgMode:"static"===e.settings?.bg_mode||"daynight"===e.settings?.bg_mode?e.settings.bg_mode:null,northDeg:n({},e.settings),sunRays:"boolean"==typeof e.settings?.sun_rays?e.settings.sun_rays:null,tempMin:o.tempMin,tempMax:o.tempMax,showLqi:o.showLqi??this.host._config?.show_signal??!0,cardFontScale:o.cardFontScale,labelTemp:o.labelTemp,labelHum:o.labelHum,labelLqi:o.labelLqi,labelLight:o.labelLight,cellCm:Number(e.cell_cm)>0?Number(e.cell_cm):5,cellCmInput:c(Number(e.cell_cm)>0?Number(e.cell_cm):5,this.host._imperial),cellCmTouched:!1,busy:!1})}const e=p(this.host._imperial);this.host._spaceDialog={mode:t,title:"",planUrl:null,planFile:null,...f(),hideDecor:!1,hideOpenings:!1,zeroWallStyle:"dashed",roomColor:g,roomOpacity:u,fillMode:"custom",customFill:{...h,a:0},glowEnabled:!0,bgColor:null,bgMode:"daynight",northDeg:null,sunRays:null,tempMin:d,tempMax:_,showLqi:this.host._config?.show_signal??!0,cardFontScale:1,labelTemp:!1,labelHum:!1,labelLqi:!1,labelLight:!1,cellCm:e,cellCmInput:c(e,this.host._imperial),cellCmTouched:!1,busy:!1}}async _pickPlanFile(t){const s=t.target,e=s.files?.[0];if(!e||!this.host._spaceDialog)return;s.value="";const o=await y(e);if("reject"===o.kind)return void this.host._showToast(this.host._t("toast.plan_formats"));if("guard"===o.kind)return void(this.host._backdropGuard=o.state);const a=await w(e,o.ext,e.name);this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:a})}_renderBackdropGuard(){return D(this.host,t=>{this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:t})},()=>{this.host._backdropGuard=null},this.host.hass)??e}_useServerPlan(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,planUrl:t,planFile:null,pickSaved:!1,savedAspect:void 0},this.host._aspectJob=this._readPlanAspect(t))}async _readPlanAspect(t){for(let s=0;s<40;s++){const s=this.host._display(t);if(s){const e=await new Promise(t=>{const e=new Image;e.onload=()=>t(e.naturalWidth&&e.naturalHeight?e.naturalWidth/e.naturalHeight:0),e.onerror=()=>t(0),e.src=s}),o=this.host._spaceDialog;return o&&o.planUrl===t&&Number.isFinite(e)&&e>0?(this.host._spaceDialog={...o,savedAspect:e},e):0}if(await new Promise(t=>setTimeout(t,150)),this.host._spaceDialog?.planUrl!==t)return 0}return 0}async _deleteServerPlan(t){const s=this.host._spaceDialog,e=s?.saved?.find(s=>s.name===t);if(!s||!e||e.used_by.length||e.url===s.planUrl)return;const o=await this.host._confirmDanger({key:"delete-plan",kind:"destructive",title:this.host._t("confirm.delete_plan_title"),message:this.host._t("confirm.delete_plan_body"),objectName:t,confirmLabel:this.host._t("btn.delete"),cancelLabel:this.host._t("btn.cancel")}),a=this.host._spaceDialog,l=a?.saved?.find(s=>s.name===t);if(o&&a&&l&&l.url===e.url&&l.modified===e.modified&&!l.used_by.length&&l.url!==a.planUrl)try{await this.host.hass.callWS({type:"houseplan/plans/delete",name:t});const s=this.host._spaceDialog;s?.saved&&(this.host._spaceDialog={...s,saved:s.saved.filter(s=>s.name!==t)})}catch(t){this.host._showToast(this.host._t("toast.plan_delete_failed",{err:this.host._errText(t)}))}}_renderServerPlans(t){if(t.savedBusy)return a`<div class="savedplans muted">${this.host._t("space.loading")}</div>`;const s=t.saved||[];if(!s.length)return a`<div class="savedplans muted">${this.host._t("space.no_saved")}</div>`;return a`<div class="savedplans"> .text=${o(h,l)} .ariaLabel=${o(h,i)}></hp-help>`:e}_openSpaceDialog(t,s){if(!this.host._serverStorage||!this.host._serverCfg)return void this.host._showToast(this.host._t("toast.integration_missing"));if("edit"===t){const e=this.host._serverCfg.spaces.find(t=>t.id===s);if(!e)return;const o=l(e),a=e.settings?.custom_fill&&"object"==typeof e.settings.custom_fill?i(e.settings.custom_fill):null,p="none"===o.fill?{...a||h,a:0}:a;return void(this.host._spaceDialog={mode:t,spaceId:s,title:e.title,planUrl:e.plan_url||null,planFile:null,source:e.plan_url?"file":"draw",showBorders:o.showBorders,showNames:o.showNames,zeroWallStyle:r(e),displayTouched:!0,hideDecor:o.hideDecor,hideOpenings:o.hideOpenings,roomColor:o.color,roomOpacity:o.opacity,fillMode:"none"===o.fill?"custom":o.fill,customFill:p,glowEnabled:o.glow,bgColor:o.bgColor,bgMode:"static"===e.settings?.bg_mode||"daynight"===e.settings?.bg_mode?e.settings.bg_mode:null,northDeg:n({},e.settings),sunRays:"boolean"==typeof e.settings?.sun_rays?e.settings.sun_rays:null,tempMin:o.tempMin,tempMax:o.tempMax,showLqi:o.showLqi??this.host._config?.show_signal??!0,cardFontScale:o.cardFontScale,labelTemp:o.labelTemp,labelHum:o.labelHum,labelLqi:o.labelLqi,labelLight:o.labelLight,cellCm:Number(e.cell_cm)>0?Number(e.cell_cm):5,cellCmInput:c(Number(e.cell_cm)>0?Number(e.cell_cm):5,this.host._imperial),cellCmTouched:!1,busy:!1})}const e=p(this.host._imperial);this.host._spaceDialog={mode:t,title:"",planUrl:null,planFile:null,...f(),hideDecor:!1,hideOpenings:!1,zeroWallStyle:"dashed",roomColor:g,roomOpacity:u,fillMode:"custom",customFill:{...h,a:0},glowEnabled:!0,bgColor:null,bgMode:"daynight",northDeg:null,sunRays:null,tempMin:d,tempMax:_,showLqi:this.host._config?.show_signal??!0,cardFontScale:1,labelTemp:!1,labelHum:!1,labelLqi:!1,labelLight:!1,cellCm:e,cellCmInput:c(e,this.host._imperial),cellCmTouched:!1,busy:!1}}async _pickPlanFile(t){const s=t.target,e=s.files?.[0];if(!e||!this.host._spaceDialog)return;s.value="";const o=await y(e);if("reject"===o.kind)return void this.host._showToast(this.host._t("toast.plan_formats"));if("guard"===o.kind)return void(this.host._backdropGuard=o.state);const a=await w(e,o.ext,e.name);this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:a})}_renderBackdropGuard(){return D(this.host,t=>{this.host._spaceDialog&&(this.host._spaceDialog={...this.host._spaceDialog,planFile:t})},()=>{this.host._backdropGuard=null},this.host.hass)??e}_useServerPlan(t){const s=this.host._spaceDialog;s&&(this.host._spaceDialog={...s,planUrl:t,planFile:null,pickSaved:!1,savedAspect:void 0},this.host._aspectJob=this._readPlanAspect(t))}async _readPlanAspect(t){for(let s=0;s<40;s++){const s=this.host._display(t);if(s){const e=await new Promise(t=>{const e=new Image;e.onload=()=>t(e.naturalWidth&&e.naturalHeight?e.naturalWidth/e.naturalHeight:0),e.onerror=()=>t(0),e.src=s}),o=this.host._spaceDialog;return o&&o.planUrl===t&&Number.isFinite(e)&&e>0?(this.host._spaceDialog={...o,savedAspect:e},e):0}if(await new Promise(t=>setTimeout(t,150)),this.host._spaceDialog?.planUrl!==t)return 0}return 0}async _deleteServerPlan(t){const s=this.host._spaceDialog,e=s?.saved?.find(s=>s.name===t);if(!s||!e||e.used_by.length||e.url===s.planUrl)return;const o=await this.host._confirmDanger({key:"delete-plan",kind:"destructive",title:this.host._t("confirm.delete_plan_title"),message:this.host._t("confirm.delete_plan_body"),objectName:t,confirmLabel:this.host._t("btn.delete"),cancelLabel:this.host._t("btn.cancel")}),a=this.host._spaceDialog,l=a?.saved?.find(s=>s.name===t);if(o&&a&&l&&l.url===e.url&&l.modified===e.modified&&!l.used_by.length&&l.url!==a.planUrl)try{await this.host.hass.callWS({type:"houseplan/plans/delete",name:t});const s=this.host._spaceDialog;s?.saved&&(this.host._spaceDialog={...s,saved:s.saved.filter(s=>s.name!==t)})}catch(t){this.host._showToast(this.host._t("toast.plan_delete_failed",{err:this.host._errText(t)}))}}_renderServerPlans(t){if(t.savedBusy)return a`<div class="savedplans muted">${this.host._t("space.loading")}</div>`;const s=t.saved||[];if(!s.length)return a`<div class="savedplans muted">${this.host._t("space.no_saved")}</div>`;return a`<div class="savedplans">
${s.map(s=>{return a` ${s.map(s=>{return a`
<div class="savedplan ${s.url===t.planUrl?"cur":""}"> <div class="savedplan ${s.url===t.planUrl?"cur":""}">
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";import{n as t,b as n}from"./zigbee-topology-B6N55BDi.js";import{F as e}from"./houseplan-card-DwS0pmiF.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function p(t){if(!0!==t?.user?.is_admin)throw a("permission")}function f(n){const e=i(n);return e?c(e,"zha",async()=>{if(p(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(p(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,f=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{f=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const p=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&f?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof p&&b.push(p),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{f as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot}; globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";import{n as t,b as n}from"./zigbee-topology-BVov8wVf.js";import{F as e}from"./houseplan-card-Dj3l4riu.js";const o=new WeakMap;function i(t){const n=function(t){const n=t?.connection||t;return!n||"object"!=typeof n&&"function"!=typeof n?null:n}(t);if(!n)return null;let e=o.get(n);return e||(e={revision:0,topologies:[],states:{},listeners:new Set,inflight:new Map},o.set(n,e)),e}function r(t,n,e){t.states={...t.states,[n]:e},function(t){t.revision++;for(const n of t.listeners)n()}(t)}function s(t){const n=t?.code;if("permission"===n||"unsupported"===n||"timeout"===n||"invalid_topic"===n||"invalid_payload"===n)return n;const e=String(t?.message||"").toLowerCase();return e.includes("unauthor")||e.includes("permission")?"permission":e.includes("unknown_command")||e.includes("not found")?"unsupported":"provider"}function a(t){return Object.assign(new Error(t),{code:t})}function c(t,n,e){const o=t.inflight.get(n);if(o)return o;r(t,n,{phase:"loading"});const i=e().then(n=>{if(!n.nodes.length&&n.warnings.some(t=>"invalid_payload"===t.code))throw a("invalid_payload");!function(t,n){t.topologies=[...t.topologies.filter(t=>!(t.provider===n.provider&&t.instanceId===n.instanceId)),n],r(t,"zha"===n.provider?"zha":`z2m:${n.instanceId}`,{phase:"ready",obtainedAt:n.obtainedAt,partial:n.warnings.length>0})}(t,n)}).catch(e=>{r(t,n,{phase:"error",error:s(e)})}).finally(()=>t.inflight.delete(n));return t.inflight.set(n,i),i}function l(t){const n=i(t);return n?{revision:n.revision,topologies:n.topologies,states:n.states}:{revision:0,topologies:[],states:{}}}function u(t,n){const e=i(t);return e?(e.listeners.add(n),()=>e.listeners.delete(n)):()=>{}}function f(t){if(!0!==t?.user?.is_admin)throw a("permission")}function p(n){const e=i(n);return e?c(e,"zha",async()=>{if(f(n),"function"!=typeof n?.callWS)throw a("unsupported");return t(await n.callWS({type:"zha/devices"}))}):Promise.resolve()}function d(t){return null!==t&&"object"==typeof t?t:null}function h(t){const n=d(t),e=n?.payload??t;if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}}async function m(t,n){let e;try{return await Promise.race([t,new Promise((t,o)=>{e=globalThis.setTimeout(()=>o(a("timeout")),Math.max(1,n))})])}finally{void 0!==e&&globalThis.clearTimeout(e)}}function g(t,o,r=15e4){const s=i(t);if(!s)return Promise.resolve();const l=e(o);return c(s,`z2m:${l||String(o)}`,async()=>{if(f(t),!l)throw a("invalid_topic");const e=t.connection,o=e?.subscribeMessage;if("function"!=typeof o||"function"!=typeof t?.callService)throw a("unsupported");const i=function(){const t=globalThis.crypto;return"function"==typeof t?.randomUUID?`houseplan-${t.randomUUID()}`:`houseplan-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}(),s=Date.now()+Math.max(1,r);let c=!1,u=null,p=null,g=null;const y=new Promise(t=>{u=t}),w=new Promise((t,n)=>{p=t,g=n}),b=[];try{const r=await o.call(e,t=>{!0===d(t)?.retain&&h(t)&&u?.()},{type:"mqtt/subscribe",topic:`${l}/bridge/info`});"function"==typeof r&&b.push(r);const f=await o.call(e,t=>{if(!0===d(t)?.retain)return;const n=h(t);null!==n?n&&function(t){const n=d(t),e=n?.transaction??d(n?.data)?.transaction;return"string"==typeof e||"number"==typeof e?String(e):null}(n)===i&&p?.(n):c&&g?.(a("invalid_payload"))},{type:"mqtt/subscribe",topic:`${l}/bridge/response/networkmap`});"function"==typeof f&&b.push(f),await m(y,Math.min(4e3,Math.max(1,s-Date.now()))),c=!0,await t.callService("mqtt","publish",{topic:`${l}/bridge/request/networkmap`,payload:JSON.stringify({type:"raw",routes:!1,transaction:i}),qos:0,retain:!1});const v=await m(w,s-Date.now()),_=d(v)?.status;if(_&&"ok"!==_)throw a("provider");return n(v,l)}finally{for(const t of b)try{t()}catch{}}})}export{p as readZhaTopology,g as refreshZ2mTopology,u as subscribeZigbeeTopology,l as zigbeeTopologyRuntimeSnapshot};
+1 -1
View File
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="be1f77110b0cecb8df31bb3975762395858023520ad1bbdb0a4840f2ea028077";try{await import("./houseplan-assets/houseplan-card-DwS0pmiF.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale entry: the main chunk is unavailable",e)} globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="16404f74463739afada7755507e1bf32b9468a1125505ff93b9a73cddb36ea18";try{await import("./houseplan-assets/houseplan-card-Dj3l4riu.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale entry: the main chunk is unavailable",e)}
+2
View File
@@ -2,6 +2,8 @@
## Unreleased ## Unreleased
## v1.73.0-beta.3 — 2026-09-07
- Administrators can now save the current space as a clean one-page A4 PDF - Administrators can now save the current space as a clean one-page A4 PDF
with architectural geometry, room names, clean-floor areas and dimensions; with architectural geometry, room names, clean-floor areas and dimensions;
furniture, decor and the backdrop are optional. Devices and live states are furniture, decor and the backdrop are optional. Devices and live states are
+2
View File
@@ -8,6 +8,8 @@
## Не выпущено ## Не выпущено
## v1.73.0-beta.3 — 2026-09-07
- Администратор теперь может сохранить текущее пространство как - Администратор теперь может сохранить текущее пространство как
чистый одностраничный PDF A4 с архитектурой, названиями комнат, чистый одностраничный PDF A4 с архитектурой, названиями комнат,
чистой площадью пола и размерами; мебель, декор и подложка добавляются чистой площадью пола и размерами; мебель, декор и подложка добавляются
+11 -17
View File
@@ -1,26 +1,20 @@
<!-- release: v1.73.0-beta.2 --> <!-- release: v1.73.0-beta.3 -->
## Основное ## Основное
- Рисование стен стало надёжнее: каждый отрезок сохраняется сразу, незавершённая - Текущее пространство теперь можно сохранить как чистый одностраничный PDF A4
цепочка остаётся обычными стенами, а завершённый результат автоматически с архитектурой, названиями комнат, площадями и размерами. Мебель, декор и
приводится к тому же состоянию, что и после оптимизации плана подложка добавляются по желанию
([#478](https://github.com/Matysh/houseplan-card/issues/478), ([#53](https://github.com/Matysh/houseplan-card/issues/53)).
[#477](https://github.com/Matysh/houseplan-card/issues/477)).
- Во всех окнах выбора цвета появилась понятная кнопка «ОК»
([#476](https://github.com/Matysh/houseplan-card/issues/476)).
- Мелкие исправления и улучшения. - Мелкие исправления и улучшения.
## Highlights ## Highlights
- Wall drawing is more reliable: every segment is saved immediately, - The current space can now be saved as a clean one-page A4 PDF with
unfinished chains remain ordinary walls, and completed results automatically architectural geometry, room names, areas and dimensions. Furniture, decor
reach the same state as after plan optimization and the backdrop are optional
([#478](https://github.com/Matysh/houseplan-card/issues/478), ([#53](https://github.com/Matysh/houseplan-card/issues/53)).
[#477](https://github.com/Matysh/houseplan-card/issues/477)).
- Every color picker now has a clear **OK** button
([#476](https://github.com/Matysh/houseplan-card/issues/476)).
- Small fixes and improvements. - Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.73.0-beta.2/docs/CHANGELOG.ru.md) [Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.73.0-beta.3/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.73.0-beta.2/docs/CHANGELOG.md) · [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.73.0-beta.3/docs/CHANGELOG.md)
+3 -3
View File
@@ -17,12 +17,12 @@ change must pass through a published beta/RC before stable. Stable release
commits are promotion-only (versions, generated bundles and release/changelog commits are promotion-only (versions, generated bundles and release/changelog
metadata). Only an explicit owner-approved emergency hotfix may skip this gate. metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
## Snapshot (2026-09-05) ## Snapshot (2026-09-07)
| Item | State | | Item | State |
|---|---| |---|---|
| Version | **v1.73.0-beta.2** everywhere (manifest, const.py, package.json, CARD_VERSION) | | Version | **v1.73.0-beta.3** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.73.0-beta.2 makes every accepted wall-chain segment an ordinary saved wall, migrates legacy drafts, and brings completed editor writes to the same fixed point as Optimize (#478, #477). Color pickers have an explicit confirmation button (#476); hidden isometric overlay plates are no longer painted and the initial View graph loads furniture art lazily (#471, #474). Publish from `dev` only after exact-SHA Validate is green; `main` remains at v1.72.0. | | Current local cycle | v1.73.0-beta.3 adds a clean one-page architectural PDF export for the current space, with optional furniture, decor and backdrop (#53). The changed-mutants gate now keeps a journal of proven witnesses and avoids repeatedly judging the complete accumulated `dev` range (#481). Publish from `dev` only after exact-SHA Validate is green; `main` remains at v1.72.0. |
| Hidden Alpha Stage | #89 Stage 1 ships in v1.63.0-beta.1, #122 Stage 2 in v1.64.0 and #160 Stage 3 in v1.73.0-beta.1. The same hidden `iso` view uses the fixed 4° camera, raised/tethered device-room-lock overlays, deeper openings and bounded theme materials; #471 removes the overlay plates from paint while retaining their safety geometry. Since #448 the experiment is enabled only through the single indefinite browser-local `hp_alpha` gate; it is not expiring and has no per-stage key. Flat remains default; editors, `houseplan-space-card`, floor effects, stored coordinates and HA actions remain unchanged. Stage 3 stays internal and is absent from public changelog/user documentation. | | Hidden Alpha Stage | #89 Stage 1 ships in v1.63.0-beta.1, #122 Stage 2 in v1.64.0 and #160 Stage 3 in v1.73.0-beta.1. The same hidden `iso` view uses the fixed 4° camera, raised/tethered device-room-lock overlays, deeper openings and bounded theme materials; #471 removes the overlay plates from paint while retaining their safety geometry. Since #448 the experiment is enabled only through the single indefinite browser-local `hp_alpha` gate; it is not expiring and has no per-stage key. Flat remains default; editors, `houseplan-space-card`, floor effects, stored coordinates and HA actions remain unchanged. Stage 3 stays internal and is absent from public changelog/user documentation. |
| Workflow | Superseded 2026-08-12: the pre-1.62 rule of "local edits without tests or commits" is **dead** — since release 1.62 every product change follows `PROCESS.md` (issue in `S5-ready`+, branch `issue/<NN>-slug`, trailers on every commit, review pipeline; `AGENTS.md` is the summary). Release mechanics below remain current. A requested pre-release gets a production build plus the smallest targeted unit/smoke set covering the changed surfaces, one tested `dev` commit/tag and a GitHub Release with `prerelease=true`; `main` stays untouched. The complete local frontend/backend/smoke gate runs only before a stable release, after which `main` is fast-forwarded to the exact tested `dev` SHA and the GitHub Release uses `prerelease=false`. Release bodies are short and bilingual (Russian first); every bullet links its GitHub issue (#NN) so the #328 rules stay machine-checkable. A STABLE body aggregates the changelog since the PREVIOUS STABLE release (never since the last beta): features/fixes described across the line's beta changelogs must appear, while bugs that were introduced and fixed strictly inside the beta line (never shipped in any stable) are excluded — draft with `npm run release:notes -- <tag>`, curate by hand, then `npm run release:notes -- <tag> --verify` must pass. `Мелкие исправления и улучшения` / `Small fixes and improvements` is allowed only when the range really contains user-visible work not itemised in the body; a single-issue hotfix ships without it (the verifier enforces this). Every body ends with separate links to the Russian and English changelogs. Open or partially delivered issues are never presented as shipped. Telegram announcements are sent only for stable releases; beta and RC publication is silent. `docs/RELEASE-NOTES.md` is the current canonical body instance; `npm run release:prerelease -- <tag> --issues=… --yes` is the primary local publication path and the manual `Publish prerelease` workflow is its GitHub-only equivalent once present on `main`. Nothing is copied to the home instance by hand | | Workflow | Superseded 2026-08-12: the pre-1.62 rule of "local edits without tests or commits" is **dead** — since release 1.62 every product change follows `PROCESS.md` (issue in `S5-ready`+, branch `issue/<NN>-slug`, trailers on every commit, review pipeline; `AGENTS.md` is the summary). Release mechanics below remain current. A requested pre-release gets a production build plus the smallest targeted unit/smoke set covering the changed surfaces, one tested `dev` commit/tag and a GitHub Release with `prerelease=true`; `main` stays untouched. The complete local frontend/backend/smoke gate runs only before a stable release, after which `main` is fast-forwarded to the exact tested `dev` SHA and the GitHub Release uses `prerelease=false`. Release bodies are short and bilingual (Russian first); every bullet links its GitHub issue (#NN) so the #328 rules stay machine-checkable. A STABLE body aggregates the changelog since the PREVIOUS STABLE release (never since the last beta): features/fixes described across the line's beta changelogs must appear, while bugs that were introduced and fixed strictly inside the beta line (never shipped in any stable) are excluded — draft with `npm run release:notes -- <tag>`, curate by hand, then `npm run release:notes -- <tag> --verify` must pass. `Мелкие исправления и улучшения` / `Small fixes and improvements` is allowed only when the range really contains user-visible work not itemised in the body; a single-issue hotfix ships without it (the verifier enforces this). Every body ends with separate links to the Russian and English changelogs. Open or partially delivered issues are never presented as shipped. Telegram announcements are sent only for stable releases; beta and RC publication is silent. `docs/RELEASE-NOTES.md` is the current canonical body instance; `npm run release:prerelease -- <tag> --issues=… --yes` is the primary local publication path and the manual `Publish prerelease` workflow is its GitHub-only equivalent once present on `main`. Nothing is copied to the home instance by hand |
| GitHub | https://github.com/Matysh/houseplan-card — [Issues](https://github.com/Matysh/houseplan-card/issues) are the canonical task records; their labels carry priority and workflow status (`PROCESS.md` §9). GitHub Projects is no longer used. `main` carries stable releases; pre-release tags may point directly at `dev`. Work lands on `dev` and is merged into `main` for a stable release, so `dev` is normally equal to or ahead of `main`, never behind. Push via SSH key `ha_jb` (remote git@github.com:…); API releases via the fine-grained PAT in `~/.git-credentials` (Contents R/W, issued 2026-07-23) | | GitHub | https://github.com/Matysh/houseplan-card — [Issues](https://github.com/Matysh/houseplan-card/issues) are the canonical task records; their labels carry priority and workflow status (`PROCESS.md` §9). GitHub Projects is no longer used. `main` carries stable releases; pre-release tags may point directly at `dev`. Work lands on `dev` and is merged into `main` for a stable release, so `dev` is normally equal to or ahead of `main`, never behind. Push via SSH key `ha_jb` (remote git@github.com:…); API releases via the fine-grained PAT in `~/.git-credentials` (Contents R/W, issued 2026-07-23) |
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "houseplan-card", "name": "houseplan-card",
"version": "1.73.0-beta.2", "version": "1.73.0-beta.3",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "houseplan-card", "name": "houseplan-card",
"version": "1.73.0-beta.2", "version": "1.73.0-beta.3",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"lit": "^3.1.3", "lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "houseplan-card", "name": "houseplan-card",
"version": "1.73.0-beta.2", "version": "1.73.0-beta.3",
"description": "Interactive house plan Lovelace card for Home Assistant", "description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
+1 -1
View File
@@ -405,7 +405,7 @@ import {
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge'; import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
import type { MarkerRoomReferenceSnapshot } from './room-reference-transaction'; import type { MarkerRoomReferenceSnapshot } from './room-reference-transaction';
const CARD_VERSION = '1.73.0-beta.2'; const CARD_VERSION = '1.73.0-beta.3';
const ENTRY_BUILD_FINGERPRINT = '__HOUSEPLAN_SOURCE_FINGERPRINT__'; const ENTRY_BUILD_FINGERPRINT = '__HOUSEPLAN_SOURCE_FINGERPRINT__';
const EDITOR_RETRY_ASSET = '__HOUSEPLAN_EDITOR_RETRY_ASSET__'; const EDITOR_RETRY_ASSET = '__HOUSEPLAN_EDITOR_RETRY_ASSET__';
const ISO_RETRY_ASSET = '__HOUSEPLAN_ISO_RETRY_ASSET__'; const ISO_RETRY_ASSET = '__HOUSEPLAN_ISO_RETRY_ASSET__';
+1 -1
View File
@@ -377,7 +377,7 @@ import {
rewriteMarkerRoomReferences, type MarkerRoomReferenceSnapshot, rewriteMarkerRoomReferences, type MarkerRoomReferenceSnapshot,
} from './room-reference-transaction'; } from './room-reference-transaction';
const CARD_VERSION = '1.73.0-beta.2'; const CARD_VERSION = '1.73.0-beta.3';
// #474: the editor imports the furniture artwork statically and hands it to // #474: the editor imports the furniture artwork statically and hands it to
// the page runtime the moment this chunk evaluates — before the loader's // the page runtime the moment this chunk evaluates — before the loader's