Release v1.72.0

Promote the published v1.72.0 beta line without new product behaviour: stable version fields, synchronized generated bundles, bilingual changelogs, release notes and status metadata only.

Issue: #54
Release: v1.72.0
User-Visible: no
This commit is contained in:
Matysh
2026-09-05 20:22:19 +03:00
parent 198484f762
commit 0a955f5df5
38 changed files with 430 additions and 334 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ SCHEDULED_GRACE_S = 30 * 24 * 3600
FILES_DIR = "houseplan/files"
ASSETS_DIR = "houseplan/assets"
CONF_ADMIN_ONLY = "admin_only"
VERSION = "1.72.0-beta.5"
VERSION = "1.72.0"
DECOR_ASSETS_API_VERSION = 1
# #43: the support transport is deliberately not configurable. A user supplied
@@ -1,182 +1,182 @@
{
"schema": 1,
"fingerprint": "192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f",
"fingerprint": "0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 300169,
"initialViewGzipBytes": 300154,
"lazyFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/fr-DBV8B9JV.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"houseplan-assets/live-interaction-runtime-CZJawMy0.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/fr-CB9Rh5BY.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"houseplan-assets/live-interaction-runtime-BuROtNwW.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js",
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
],
"lazyGzipBytes": 250887,
"lazyGzipBytes": 250869,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"lazyEditorGzipBytes": 186638,
"lazyEditorGzipBytes": 186626,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js"
],
"lazyOnboardingGzipBytes": 14328,
"lazyOnboardingGzipBytes": 14325,
"lazyLocaleFiles": [
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/fr-DBV8B9JV.js"
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/fr-CB9Rh5BY.js"
],
"lazyLocaleGzipBytes": 50155,
"lazyLocaleGzipBytes": 50148,
"files": [
{
"path": "houseplan-assets/backdrop-pick-RHl4KhtG.js",
"sha256": "6dcbba0486e12f42895ecc895fbb30c2ea40d6fdfaba3111bff20b950c08db3d",
"path": "houseplan-assets/backdrop-pick-CzRGitFR.js",
"sha256": "acd02f075bc18ca361cb543749461208b9f2dea2433aa3950a1296c31759de6b",
"rawBytes": 21592,
"gzipBytes": 7357,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DBmsjeng.js",
"sha256": "8b1e5ff1f52d59d060aa5dda142565d099b8cf018b508d18942d374f99ca20d4",
"path": "houseplan-assets/de-BRjMWzox.js",
"sha256": "fdba581311125cadbec7b827e8a4b87f3aba4eab7ff12d4dbf8af58517e9e9a8",
"rawBytes": 84232,
"gzipBytes": 25355,
"gzipBytes": 25351,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-CF2AVvDl.js",
"sha256": "b19535b228064a4a2cc9846b88368efe4004d1ec0353c6385f83d9a8eae81155",
"path": "houseplan-assets/editor-DIlG_iy6.js",
"sha256": "8c28088bcc9df5581948eeda9518f43eb73ca8ed9918ab0961f3eea114e2f3c9",
"rawBytes": 3831,
"gzipBytes": 1582,
"gzipBytes": 1583,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-DBV8B9JV.js",
"sha256": "bcbe04073cd2e422ef04b4db84b5b0142e2ac391bba8add4821a9cb41bd5fbf5",
"path": "houseplan-assets/fr-CB9Rh5BY.js",
"sha256": "95cf4e535042c78eb00bedc08c8c2a9e779236847f3e12dca4757fca435629b7",
"rawBytes": 86273,
"gzipBytes": 24800,
"gzipBytes": 24797,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-BI7f3a8-.js",
"sha256": "5af6bc4656b8402ed5791af790e2669e8c030c344f67b354b884c5c413baf485",
"rawBytes": 1069142,
"gzipBytes": 299373,
"path": "houseplan-assets/houseplan-card-C0qjaV_3.js",
"sha256": "03a04aa491c26e42f8adea0126c8bb970b54ec7a12bbd9475f9279a91a2b7fc0",
"rawBytes": 1069135,
"gzipBytes": 299358,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/fr-DBV8B9JV.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"houseplan-assets/live-interaction-runtime-CZJawMy0.js"
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/fr-CB9Rh5BY.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"houseplan-assets/live-interaction-runtime-BuROtNwW.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"sha256": "65e5862b98366947d38b47a6e2dfa4ab9b47405d9c783c2a49669a5b3948956e",
"rawBytes": 639587,
"gzipBytes": 170267,
"path": "houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"sha256": "fc089a1e4a1df49c3e1c8e78620a3bd23f3ba7270213db663cd018854c22fe55",
"rawBytes": 639580,
"gzipBytes": 170261,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"sha256": "f219bbb4d8549af5386e4a60730f537407ad4f5a73aed8f26363b34609d22809",
"path": "houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"sha256": "87d24dae20c92a060e34d1e4ce80d300c947b7ac6b3a86f6025b39750d286d46",
"rawBytes": 28071,
"gzipBytes": 6971,
"gzipBytes": 6968,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"sha256": "62282313e04fc88f52d513645c8e650721711cc3332c54738af9e5416733a839",
"path": "houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"sha256": "b5cbcfffe86b10e56c078dbf139123a6c16625f8c2396570215f06def12e08ba",
"rawBytes": 8626,
"gzipBytes": 3230,
"gzipBytes": 3236,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js",
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-CZJawMy0.js",
"sha256": "10340f70ed2df2a58a171289b9f270c5deb9d8f8d4c5ef7cac0addfd527b3d81",
"path": "houseplan-assets/live-interaction-runtime-BuROtNwW.js",
"sha256": "b0d405033a72cab412d7475170818f00729dfedd049f2dcfc3387beefa43ea42",
"rawBytes": 5196,
"gzipBytes": 2129,
"gzipBytes": 2126,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"sha256": "639b9d0114c29b1adadee3ee889afa9ddc39cc97b8b9146ccf089ec2dbc83f9c",
"path": "houseplan-assets/zigbee-topology-DjEvSVKB.js",
"sha256": "531006824ca5197709f62fc3bae854d4a7349d3c7f3c3ab85c223d7e31261b9a",
"rawBytes": 18961,
"gzipBytes": 7432,
"gzipBytes": 7425,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-BCspe_yf.js",
"sha256": "81555d6dd1f947c21456a8f4dbca33d3b236a85a3348b1ccc93941af08984b63",
"path": "houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js",
"sha256": "09566891268f0fd002283422cd1b83151520240025fb9e2899cee758e6147e8c",
"rawBytes": 3941,
"gzipBytes": 1764,
"gzipBytes": 1765,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "75383df6d1e2ab15b78a1889e1586d99cb126bc2c0bfaf47f862629ec9ff06cd",
"sha256": "12e80545e7ee775e0859c8113f922c25f15bef46c5c1866db3cff6d7d3dccdce",
"rawBytes": 1183,
"gzipBytes": 796,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{v as e,l as o,z as t,dt as s,A as a,du as i,dv as l,dw as n,E as r,c}from"./houseplan-card-BI7f3a8-.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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{v as e,l as o,z as t,dt as s,A as a,du as i,dv as l,dw as n,E as r,c}from"./houseplan-card-C0qjaV_3.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}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{l as t,b0 as s,A as e,z as o,c as a,cj as l,ck as i,cl as h,cm as c,aZ as n,cn as r,cs as p,co as d,cp as _,cq as u,cr as g,dj as m,aY as b,a_ as $,dk as v}from"./houseplan-card-BI7f3a8-.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-RHl4KhtG.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{l as t,b0 as s,A as e,z as o,c as a,cj as l,ck as i,cl as h,cm as c,aZ as n,cn as r,cs as p,co as d,cp as _,cq as u,cr as g,dj as m,aY as b,a_ as $,dk as v}from"./houseplan-card-C0qjaV_3.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-CzRGitFR.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";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:_,tempMax:d,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`
<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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{n as t,b as n}from"./zigbee-topology-CHJ5vgjd.js";import{I as e}from"./houseplan-card-BI7f3a8-.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{n as t,b as n}from"./zigbee-topology-DjEvSVKB.js";import{I as e}from"./houseplan-card-C0qjaV_3.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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";try{await import("./houseplan-assets/houseplan-card-BI7f3a8-.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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";try{await import("./houseplan-assets/houseplan-card-C0qjaV_3.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",
"requirements": [],
"single_config_entry": true,
"version": "1.72.0-beta.5"
"version": "1.72.0"
}
+83 -83
View File
@@ -1,182 +1,182 @@
{
"schema": 1,
"fingerprint": "192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f",
"fingerprint": "0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 300169,
"initialViewGzipBytes": 300154,
"lazyFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/fr-DBV8B9JV.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"houseplan-assets/live-interaction-runtime-CZJawMy0.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/fr-CB9Rh5BY.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"houseplan-assets/live-interaction-runtime-BuROtNwW.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js",
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
],
"lazyGzipBytes": 250887,
"lazyGzipBytes": 250869,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"lazyEditorGzipBytes": 186638,
"lazyEditorGzipBytes": 186626,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js"
],
"lazyOnboardingGzipBytes": 14328,
"lazyOnboardingGzipBytes": 14325,
"lazyLocaleFiles": [
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/fr-DBV8B9JV.js"
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/fr-CB9Rh5BY.js"
],
"lazyLocaleGzipBytes": 50155,
"lazyLocaleGzipBytes": 50148,
"files": [
{
"path": "houseplan-assets/backdrop-pick-RHl4KhtG.js",
"sha256": "6dcbba0486e12f42895ecc895fbb30c2ea40d6fdfaba3111bff20b950c08db3d",
"path": "houseplan-assets/backdrop-pick-CzRGitFR.js",
"sha256": "acd02f075bc18ca361cb543749461208b9f2dea2433aa3950a1296c31759de6b",
"rawBytes": 21592,
"gzipBytes": 7357,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DBmsjeng.js",
"sha256": "8b1e5ff1f52d59d060aa5dda142565d099b8cf018b508d18942d374f99ca20d4",
"path": "houseplan-assets/de-BRjMWzox.js",
"sha256": "fdba581311125cadbec7b827e8a4b87f3aba4eab7ff12d4dbf8af58517e9e9a8",
"rawBytes": 84232,
"gzipBytes": 25355,
"gzipBytes": 25351,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-CF2AVvDl.js",
"sha256": "b19535b228064a4a2cc9846b88368efe4004d1ec0353c6385f83d9a8eae81155",
"path": "houseplan-assets/editor-DIlG_iy6.js",
"sha256": "8c28088bcc9df5581948eeda9518f43eb73ca8ed9918ab0961f3eea114e2f3c9",
"rawBytes": 3831,
"gzipBytes": 1582,
"gzipBytes": 1583,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-DBV8B9JV.js",
"sha256": "bcbe04073cd2e422ef04b4db84b5b0142e2ac391bba8add4821a9cb41bd5fbf5",
"path": "houseplan-assets/fr-CB9Rh5BY.js",
"sha256": "95cf4e535042c78eb00bedc08c8c2a9e779236847f3e12dca4757fca435629b7",
"rawBytes": 86273,
"gzipBytes": 24800,
"gzipBytes": 24797,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-BI7f3a8-.js",
"sha256": "5af6bc4656b8402ed5791af790e2669e8c030c344f67b354b884c5c413baf485",
"rawBytes": 1069142,
"gzipBytes": 299373,
"path": "houseplan-assets/houseplan-card-C0qjaV_3.js",
"sha256": "03a04aa491c26e42f8adea0126c8bb970b54ec7a12bbd9475f9279a91a2b7fc0",
"rawBytes": 1069135,
"gzipBytes": 299358,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DBmsjeng.js",
"houseplan-assets/editor-CF2AVvDl.js",
"houseplan-assets/fr-DBV8B9JV.js",
"houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"houseplan-assets/live-interaction-runtime-CZJawMy0.js"
"houseplan-assets/de-BRjMWzox.js",
"houseplan-assets/editor-DIlG_iy6.js",
"houseplan-assets/fr-CB9Rh5BY.js",
"houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"houseplan-assets/live-interaction-runtime-BuROtNwW.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-B1oPaYc_.js",
"sha256": "65e5862b98366947d38b47a6e2dfa4ab9b47405d9c783c2a49669a5b3948956e",
"rawBytes": 639587,
"gzipBytes": 170267,
"path": "houseplan-assets/houseplan-editor-runtime-CVgleQRG.js",
"sha256": "fc089a1e4a1df49c3e1c8e78620a3bd23f3ba7270213db663cd018854c22fe55",
"rawBytes": 639580,
"gzipBytes": 170261,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CGgiPF0L.js",
"sha256": "f219bbb4d8549af5386e4a60730f537407ad4f5a73aed8f26363b34609d22809",
"path": "houseplan-assets/houseplan-onboarding-runtime-B8qICyvO.js",
"sha256": "87d24dae20c92a060e34d1e4ce80d300c947b7ac6b3a86f6025b39750d286d46",
"rawBytes": 28071,
"gzipBytes": 6971,
"gzipBytes": 6968,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-RHl4KhtG.js",
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/backdrop-pick-CzRGitFR.js",
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-IlsqDX_M.js",
"sha256": "62282313e04fc88f52d513645c8e650721711cc3332c54738af9e5416733a839",
"path": "houseplan-assets/hp-zigbee-topology-overlay-CpC8UBVY.js",
"sha256": "b5cbcfffe86b10e56c078dbf139123a6c16625f8c2396570215f06def12e08ba",
"rawBytes": 8626,
"gzipBytes": 3230,
"gzipBytes": 3236,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"houseplan-assets/zigbee-topology-runtime-BCspe_yf.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js",
"houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-CZJawMy0.js",
"sha256": "10340f70ed2df2a58a171289b9f270c5deb9d8f8d4c5ef7cac0addfd527b3d81",
"path": "houseplan-assets/live-interaction-runtime-BuROtNwW.js",
"sha256": "b0d405033a72cab412d7475170818f00729dfedd049f2dcfc3387beefa43ea42",
"rawBytes": 5196,
"gzipBytes": 2129,
"gzipBytes": 2126,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-CHJ5vgjd.js",
"sha256": "639b9d0114c29b1adadee3ee889afa9ddc39cc97b8b9146ccf089ec2dbc83f9c",
"path": "houseplan-assets/zigbee-topology-DjEvSVKB.js",
"sha256": "531006824ca5197709f62fc3bae854d4a7349d3c7f3c3ab85c223d7e31261b9a",
"rawBytes": 18961,
"gzipBytes": 7432,
"gzipBytes": 7425,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-BCspe_yf.js",
"sha256": "81555d6dd1f947c21456a8f4dbca33d3b236a85a3348b1ccc93941af08984b63",
"path": "houseplan-assets/zigbee-topology-runtime-toe7Mdc6.js",
"sha256": "09566891268f0fd002283422cd1b83151520240025fb9e2899cee758e6147e8c",
"rawBytes": 3941,
"gzipBytes": 1764,
"gzipBytes": 1765,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js",
"houseplan-assets/zigbee-topology-CHJ5vgjd.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js",
"houseplan-assets/zigbee-topology-DjEvSVKB.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "75383df6d1e2ab15b78a1889e1586d99cb126bc2c0bfaf47f862629ec9ff06cd",
"sha256": "12e80545e7ee775e0859c8113f922c25f15bef46c5c1866db3cff6d7d3dccdce",
"rawBytes": 1183,
"gzipBytes": 796,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-BI7f3a8-.js"
"houseplan-assets/houseplan-card-C0qjaV_3.js"
],
"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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{v as e,l as o,z as t,dt as s,A as a,du as i,dv as l,dw as n,E as r,c}from"./houseplan-card-BI7f3a8-.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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{v as e,l as o,z as t,dt as s,A as a,du as i,dv as l,dw as n,E as r,c}from"./houseplan-card-C0qjaV_3.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}
.data=${this._formData}
.schema=${e}
File diff suppressed because one or more lines are too long
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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{l as t,b0 as s,A as e,z as o,c as a,cj as l,ck as i,cl as h,cm as c,aZ as n,cn as r,cs as p,co as d,cp as _,cq as u,cr as g,dj as m,aY as b,a_ as $,dk as v}from"./houseplan-card-BI7f3a8-.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-RHl4KhtG.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{l as t,b0 as s,A as e,z as o,c as a,cj as l,ck as i,cl as h,cm as c,aZ as n,cn as r,cs as p,co as d,cp as _,cq as u,cr as g,dj as m,aY as b,a_ as $,dk as v}from"./houseplan-card-C0qjaV_3.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-CzRGitFR.js";const F=1e3,x=t=>{if(!t.trim())return null;const s=Number(t.replace(",","."));return Number.isFinite(s)?s:null},T="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";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:_,tempMax:d,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`
<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
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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";import{n as t,b as n}from"./zigbee-topology-CHJ5vgjd.js";import{I as e}from"./houseplan-card-BI7f3a8-.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};
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";import{n as t,b as n}from"./zigbee-topology-DjEvSVKB.js";import{I as e}from"./houseplan-card-C0qjaV_3.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__="192c2d3d3a2416dc2db235043f6e954c5f58e56447555d0f68bd7d8fb0b8158f";try{await import("./houseplan-assets/houseplan-card-BI7f3a8-.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__="0d4311a7ae77b6ea13ed95f2b0c886ad4253d09f6770dfff438ee45667c22a39";try{await import("./houseplan-assets/houseplan-card-C0qjaV_3.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)}
+37
View File
@@ -2,6 +2,43 @@
## Unreleased
## v1.72.0 — 2026-09-05
- Administrators can optionally load a ZHA or Zigbee2MQTT topology snapshot and
inspect the selected device's observed direct neighbours on the plan. Link
quality, unknown-quality dashes, coordinator-path arrows and honest
cross-space or unplaced-node endings share one contextual legend and never
trigger a network scan on hover
([#54](https://github.com/Matysh/houseplan-card/issues/54),
[#450](https://github.com/Matysh/houseplan-card/issues/450),
[#457](https://github.com/Matysh/houseplan-card/issues/457),
[#459](https://github.com/Matysh/houseplan-card/issues/459)).
- Clicking or tapping a room now centres and fits it with 10% margins, while a
double-click or double-tap on free background runs **Fit all**. Space settings
can also create a room-free copy that preserves architecture, Background and
display settings without copying placed devices
([#152](https://github.com/Matysh/houseplan-card/issues/152),
[#449](https://github.com/Matysh/houseplan-card/issues/449),
[#456](https://github.com/Matysh/houseplan-card/issues/456)).
- Large plans keep their heavy scene stable through hover, pan, pinch and editor
drags, and intermediate wall-chain commits use bounded local validation while
retaining the full fail-closed check at completion
([#451](https://github.com/Matysh/houseplan-card/issues/451),
[#461](https://github.com/Matysh/houseplan-card/issues/461)).
- Card installation and updates are now self-diagnosing, recover safely from a
frontend/integration version mismatch, and keep native confirmations and
fallback dialogs centred and modal across Home Assistant reconnects
([#462](https://github.com/Matysh/houseplan-card/issues/462),
[#463](https://github.com/Matysh/houseplan-card/issues/463)).
- Furniture can snap to both physical faces of an exterior wall, Arrow keys move
selected Background objects by one grid cell, and furniture placement previews
clear reliably when the pointer leaves the plan
([#447](https://github.com/Matysh/houseplan-card/issues/447),
[#460](https://github.com/Matysh/houseplan-card/issues/460)).
- Hidden presentation experiments now use the single persistent `hp_alpha=1`
browser switch; `hp_alpha=0` disables the complete set
([#448](https://github.com/Matysh/houseplan-card/issues/448)).
## v1.72.0-beta.5 — 2026-09-05
- Native House Plan confirmations and fallback dialogs now remain centred with
+41
View File
@@ -8,6 +8,47 @@
## Не выпущено
## v1.72.0 — 2026-09-05
- Администратор теперь может явно загрузить снимок топологии ZHA или
Zigbee2MQTT и посмотреть на плане наблюдаемых прямых соседей
выбранного устройства. Качество связи, пунктир для неизвестного
LQI, стрелки к координатору и честные окончания пути в другом
пространстве или у неразмещённого узла собраны в одну контекстную
легенду; hover никогда не запускает сканирование сети
([#54](https://github.com/Matysh/houseplan-card/issues/54),
[#450](https://github.com/Matysh/houseplan-card/issues/450),
[#457](https://github.com/Matysh/houseplan-card/issues/457),
[#459](https://github.com/Matysh/houseplan-card/issues/459)).
- Клик или тап по комнате теперь центрирует и вписывает её с полями
10%, а двойной клик или тап по свободному фону выполняет
**«Вписать всё»**. В настройках пространства также можно создать копию
без комнат, сохранив архитектуру, подложку и настройки отображения,
но не копируя размещённые устройства
([#152](https://github.com/Matysh/houseplan-card/issues/152),
[#449](https://github.com/Matysh/houseplan-card/issues/449),
[#456](https://github.com/Matysh/houseplan-card/issues/456)).
- На больших планах тяжёлая сцена остаётся стабильной при hover, pan, pinch
и перетаскиваниях в редакторах, а промежуточные отрезки цепочки стен
фиксируются ограниченной локальной проверкой с полной fail-closed
проверкой при завершении
([#451](https://github.com/Matysh/houseplan-card/issues/451),
[#461](https://github.com/Matysh/houseplan-card/issues/461)).
- Установка и обновление карточки теперь сами объясняют своё состояние,
безопасно восстанавливаются при несовпадении версий frontend и интеграции,
а нативные подтверждения и резервные диалоги сохраняют центрирование и
модальность после переподключения Home Assistant
([#462](https://github.com/Matysh/houseplan-card/issues/462),
[#463](https://github.com/Matysh/houseplan-card/issues/463)).
- Мебель можно примагничивать к обеим физическим граням наружной стены,
стрелки двигают выбранные объекты подложки на одну клетку, а превью
мебели надёжно исчезает при уходе указателя с плана
([#447](https://github.com/Matysh/houseplan-card/issues/447),
[#460](https://github.com/Matysh/houseplan-card/issues/460)).
- Скрытые эксперименты теперь включаются единым постоянным локальным ключом
браузера `hp_alpha=1`; `hp_alpha=0` выключает весь набор
([#448](https://github.com/Matysh/houseplan-card/issues/448)).
## v1.72.0-beta.5 — 2026-09-05
- Нативные подтверждения и резервные диалоги House Plan теперь остаются по
+39 -21
View File
@@ -1,30 +1,48 @@
<!-- release: v1.72.0-beta.5 -->
<!-- release: v1.72.0 -->
## Основное
- Рисование цепочек стен на больших планах стало заметно быстрее без ослабления
итоговой проверки геометрии
([#461](https://github.com/Matysh/houseplan-card/issues/461)).
- House Plan теперь показывает проблемы регистрации ресурса и несовпадения
версий frontend и интеграции, а после обновления безопасно восстанавливает
карточку ([#462](https://github.com/Matysh/houseplan-card/issues/462)).
- Нативные подтверждения и резервные диалоги больше не теряют центрирование и
модальность после переподключения карточки
([#463](https://github.com/Matysh/houseplan-card/issues/463)).
- В плане появилась контекстная диагностика связей ZHA и Zigbee2MQTT:
прямые соседи, качество связи и путь к координатору показываются только
по запросу и не захламляют план
([#54](https://github.com/Matysh/houseplan-card/issues/54),
[#450](https://github.com/Matysh/houseplan-card/issues/450),
[#457](https://github.com/Matysh/houseplan-card/issues/457),
[#459](https://github.com/Matysh/houseplan-card/issues/459)).
- Клик или тап по комнате теперь вписывает её в экран, двойное нажатие по фону
вписывает весь план, а настройки пространства умеют создать копию без комнат
([#152](https://github.com/Matysh/houseplan-card/issues/152),
[#449](https://github.com/Matysh/houseplan-card/issues/449),
[#456](https://github.com/Matysh/houseplan-card/issues/456)).
- Большие планы и цепочки стен работают заметно плавнее, а House Plan теперь сам
диагностирует проблемы обновления и надёжно восстанавливает карточку и диалоги
после переподключения
([#451](https://github.com/Matysh/houseplan-card/issues/451),
[#461](https://github.com/Matysh/houseplan-card/issues/461),
[#462](https://github.com/Matysh/houseplan-card/issues/462),
[#463](https://github.com/Matysh/houseplan-card/issues/463)).
- Мелкие исправления и улучшения.
## Highlights
- Drawing wall chains on large plans is now noticeably faster without weakening
final geometry validation
([#461](https://github.com/Matysh/houseplan-card/issues/461)).
- House Plan now surfaces resource-registration and frontend/integration
version mismatches and safely recovers the card after updates
([#462](https://github.com/Matysh/houseplan-card/issues/462)).
- Native confirmations and fallback dialogs no longer lose centring or modality
after the card reconnects
([#463](https://github.com/Matysh/houseplan-card/issues/463)).
- Contextual ZHA and Zigbee2MQTT diagnostics now show direct neighbours, link
quality and the route towards the coordinator only on demand, without covering
the plan ([#54](https://github.com/Matysh/houseplan-card/issues/54),
[#450](https://github.com/Matysh/houseplan-card/issues/450),
[#457](https://github.com/Matysh/houseplan-card/issues/457),
[#459](https://github.com/Matysh/houseplan-card/issues/459)).
- Clicking or tapping a room now fits it on screen, double-activating free
background fits the complete plan, and space settings can create a room-free
copy ([#152](https://github.com/Matysh/houseplan-card/issues/152),
[#449](https://github.com/Matysh/houseplan-card/issues/449),
[#456](https://github.com/Matysh/houseplan-card/issues/456)).
- Large plans and wall chains respond noticeably more smoothly, while House Plan
diagnoses update problems and reliably restores the card and its dialogs after
reconnects ([#451](https://github.com/Matysh/houseplan-card/issues/451),
[#461](https://github.com/Matysh/houseplan-card/issues/461),
[#462](https://github.com/Matysh/houseplan-card/issues/462),
[#463](https://github.com/Matysh/houseplan-card/issues/463)).
- Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.72.0-beta.5/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.72.0-beta.5/docs/CHANGELOG.md)
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.72.0/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.72.0/docs/CHANGELOG.md)
+2 -2
View File
@@ -21,8 +21,8 @@ metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
| Item | State |
|---|---|
| Version | **v1.72.0-beta.5** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.72.0-beta.5 makes wall-chain drawing on large plans faster (#461), adds observable frontend/integration version recovery (#462), and keeps native/fallback dialogs modal and centred after reconnects (#463). Publish from `dev` only after exact-SHA Validate is green; `main` remains at v1.71.0. |
| Version | **v1.72.0** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.72.0 promotes the published beta.1-beta.5 line: contextual Zigbee topology (#54), room and whole-plan focus gestures (#152, #449), room-free space copies (#456), large-plan responsiveness (#451, #461), and update/dialog recovery (#462, #463). The stable tag and `main` may point to this promotion commit only after the complete local gate plus exact-SHA Validate and Full Performance are green. |
| Hidden Labs Stage | #89 Stage 1 ships in v1.63.0-beta.1. #122 Stage 2 ships in v1.64.0 and evolves the same hidden, expiring `iso` experiment with matte walls, a low exterior floor edge, restrained shared shadows and live vertical door/window/gate panels. Flat remains default; editors and `houseplan-space-card` remain flat; live floor effects and HA actions remain unchanged. Public activation remains a separate task. |
| 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) |
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
"version": "1.72.0-beta.5",
"version": "1.72.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
"version": "1.72.0-beta.5",
"version": "1.72.0",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
"version": "1.72.0-beta.5",
"version": "1.72.0",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
+1 -1
View File
@@ -403,7 +403,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.72.0-beta.5';
const CARD_VERSION = '1.72.0';
const ENTRY_BUILD_FINGERPRINT = '__HOUSEPLAN_SOURCE_FINGERPRINT__';
const EDITOR_RETRY_ASSET = '__HOUSEPLAN_EDITOR_RETRY_ASSET__';
+1 -1
View File
@@ -378,7 +378,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.72.0-beta.5';
const CARD_VERSION = '1.72.0';
type ResizeLiveLabel = {
kind: 'length';