mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
fix: preserve geometry cache during Area baseline
Issue: #126 User-Visible: yes
This commit is contained in:
@@ -1,125 +1,125 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f",
|
||||
"fingerprint": "d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73",
|
||||
"entry": "houseplan-card.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 290377,
|
||||
"initialViewGzipBytes": 290460,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
],
|
||||
"lazyGzipBytes": 205802,
|
||||
"lazyGzipBytes": 205822,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 148707,
|
||||
"lazyEditorGzipBytes": 148716,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14026,
|
||||
"lazyOnboardingGzipBytes": 14032,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js"
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 50139,
|
||||
"lazyLocaleGzipBytes": 50146,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"sha256": "4fc16219ca920754cf06c5c3ae4eeae3ed4d0d4c7083ef50ef45c1f785dc31d8",
|
||||
"path": "houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"sha256": "36f0fbfeccd0ac6981be68fc7446f7b548a5cb40a542b48e07331f2791e7f555",
|
||||
"rawBytes": 20636,
|
||||
"gzipBytes": 7070,
|
||||
"gzipBytes": 7072,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-BZ8DJxmg.js",
|
||||
"sha256": "351183289a7409a334fdadb6d76362e46314f01e288d91963e28bbe8dd8663a6",
|
||||
"path": "houseplan-assets/de-Db5jQSzb.js",
|
||||
"sha256": "412aaaff8a26a9d7fd6d5e4335711e821ea5ad38cc095b61a3ae56ece4c0a7e9",
|
||||
"rawBytes": 83981,
|
||||
"gzipBytes": 25341,
|
||||
"gzipBytes": 25344,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-C1k2VegW.js",
|
||||
"sha256": "a07f442468fbc8d9581a67586ead9e17aa93e2dc51c302fd1f84fcd6dbf8d6f7",
|
||||
"path": "houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"sha256": "cba3f4d097d84c823946d966677f02fcae841233c3a683e2deda6c7084f1f7f2",
|
||||
"rawBytes": 3826,
|
||||
"gzipBytes": 1579,
|
||||
"gzipBytes": 1582,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"sha256": "f5cddc6163a0ad69c95b017b5784e83246d5bfb9d62e42ee904d257b5b93ecd9",
|
||||
"path": "houseplan-assets/fr-gYskL0hZ.js",
|
||||
"sha256": "6fe8d00dfa1f3b29b669aa81b205547f49778c86441e5723ab3982b970af09b0",
|
||||
"rawBytes": 86212,
|
||||
"gzipBytes": 24798,
|
||||
"gzipBytes": 24802,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-CqPFzxrj.js",
|
||||
"sha256": "cfe289dae1528f5747ac849ff6908a2510e8c6051d4427b281d7d5794483f446",
|
||||
"rawBytes": 1032333,
|
||||
"gzipBytes": 289581,
|
||||
"path": "houseplan-assets/houseplan-card-HIu1PXGU.js",
|
||||
"sha256": "d43a961780a297835fa6b3d8b3ff534897b8376128afa9e7c1db7829dee74ee4",
|
||||
"rawBytes": 1032568,
|
||||
"gzipBytes": 289663,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"sha256": "52c7a264ce85adc41430e15c1e732dfc3efa1ab69669c6b37b493ab6a24e2461",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"sha256": "df085c635b6b02fa11c1b0b5d9f8e87fc56309ed905de32f6eaee5b8e7c10af4",
|
||||
"rawBytes": 543265,
|
||||
"gzipBytes": 140058,
|
||||
"gzipBytes": 140062,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js",
|
||||
"sha256": "361af59cb2aae503e55ca84b4ee6fd0abea727f9a347a7e650a2a9a1fdb29951",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js",
|
||||
"sha256": "0a7828064aa00462836ba7d7fd7bd975b9a0751894d5546aa5c1bad60b987702",
|
||||
"rawBytes": 28088,
|
||||
"gzipBytes": 6956,
|
||||
"gzipBytes": 6960,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "ff2ab3744132b6369ee4b6798860166db78f3f685484fcedc8c2876ce67c579a",
|
||||
"sha256": "0ac5ff1feac770dfe96547960ca7e5816d4f501fc37cdaf47f5e6cd93d3e427b",
|
||||
"rawBytes": 1183,
|
||||
"gzipBytes": 796,
|
||||
"gzipBytes": 797,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,14 +1,14 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f";import{b as e,l as o,t,d8 as s,A as a,d9 as i,da as l,db as n,E as r,c}from"./houseplan-card-CqPFzxrj.js";class f 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,f={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")},h=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__="d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73";import{b as e,l as o,t,d8 as s,A as a,d9 as i,da as l,db as n,E as r,c}from"./houseplan-card-HIu1PXGU.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}
|
||||
.computeLabel=${e=>f[e.name]||e.name}
|
||||
.computeLabel=${e=>h[e.name]||e.name}
|
||||
@value-changed=${this._valueChanged}
|
||||
></ha-form>`;return c`
|
||||
${d(h.slice(0,3))}
|
||||
${d(f.slice(0,3))}
|
||||
${_?c`<div class="default-floor-error" role="alert"
|
||||
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
||||
${t(s,"editor.default_floor_missing",{id:_})}
|
||||
</div>`:a}
|
||||
${d(h.slice(3))}
|
||||
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}f.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",f);
|
||||
${d(f.slice(3))}
|
||||
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+19
-19
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f";try{await import("./houseplan-assets/houseplan-card-CqPFzxrj.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__="d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73";try{await import("./houseplan-assets/houseplan-card-HIu1PXGU.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)}
|
||||
|
||||
@@ -144,9 +144,10 @@ rationale in the change. Do not loosen a threshold merely to make a single red
|
||||
run pass. A new fixture profile gets a new profile id instead of silently
|
||||
changing the meaning of `large-house-v1`.
|
||||
|
||||
The `cleanFloor` entry ceiling is 160: the reviewed fixture currently warms
|
||||
120 deterministic room/physical-body entries, and the extra 40 slots allow a
|
||||
legitimate fixture extension without weakening the separate zero-growth gate.
|
||||
The `cleanFloor` entry ceiling is 100: the reviewed fixture warms exactly 100
|
||||
deterministic room/physical-body entries. An extra 20 means that one complete
|
||||
floor was invalidated and rebuilt, so fixture extensions must recalibrate this
|
||||
ceiling explicitly instead of receiving silent cache headroom.
|
||||
|
||||
## Glow profiles
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"noiseAllowanceBytes": 16777216
|
||||
},
|
||||
"cacheEntries": {
|
||||
"cleanFloor": 160,
|
||||
"cleanFloor": 100,
|
||||
"glowClip": 200,
|
||||
"wallUnion": 1,
|
||||
"openingTunnel": 1,
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"noiseAllowanceBytes": 16777216
|
||||
},
|
||||
"cacheEntries": {
|
||||
"cleanFloor": 160,
|
||||
"cleanFloor": 100,
|
||||
"glowClip": 200,
|
||||
"wallUnion": 1,
|
||||
"openingTunnel": 1,
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
"noiseAllowanceBytes": 16777216
|
||||
},
|
||||
"cacheEntries": {
|
||||
"cleanFloor": 160,
|
||||
"cleanFloor": 100,
|
||||
"glowClip": 200,
|
||||
"wallUnion": 1,
|
||||
"openingTunnel": 1,
|
||||
|
||||
Vendored
+56
-56
@@ -1,125 +1,125 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"fingerprint": "f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f",
|
||||
"fingerprint": "d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73",
|
||||
"entry": "houseplan-card.js",
|
||||
"initialViewFiles": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js",
|
||||
"houseplan-card.js"
|
||||
],
|
||||
"initialViewGzipBytes": 290377,
|
||||
"initialViewGzipBytes": 290460,
|
||||
"lazyFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
],
|
||||
"lazyGzipBytes": 205802,
|
||||
"lazyGzipBytes": 205822,
|
||||
"lazyEditorFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js"
|
||||
],
|
||||
"lazyEditorGzipBytes": 148707,
|
||||
"lazyEditorGzipBytes": 148716,
|
||||
"lazyOnboardingFiles": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
],
|
||||
"lazyOnboardingGzipBytes": 14026,
|
||||
"lazyOnboardingGzipBytes": 14032,
|
||||
"lazyLocaleFiles": [
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js"
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js"
|
||||
],
|
||||
"lazyLocaleGzipBytes": 50139,
|
||||
"lazyLocaleGzipBytes": 50146,
|
||||
"files": [
|
||||
{
|
||||
"path": "houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"sha256": "4fc16219ca920754cf06c5c3ae4eeae3ed4d0d4c7083ef50ef45c1f785dc31d8",
|
||||
"path": "houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"sha256": "36f0fbfeccd0ac6981be68fc7446f7b548a5cb40a542b48e07331f2791e7f555",
|
||||
"rawBytes": 20636,
|
||||
"gzipBytes": 7070,
|
||||
"gzipBytes": 7072,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/de-BZ8DJxmg.js",
|
||||
"sha256": "351183289a7409a334fdadb6d76362e46314f01e288d91963e28bbe8dd8663a6",
|
||||
"path": "houseplan-assets/de-Db5jQSzb.js",
|
||||
"sha256": "412aaaff8a26a9d7fd6d5e4335711e821ea5ad38cc095b61a3ae56ece4c0a7e9",
|
||||
"rawBytes": 83981,
|
||||
"gzipBytes": 25341,
|
||||
"gzipBytes": 25344,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/editor-C1k2VegW.js",
|
||||
"sha256": "a07f442468fbc8d9581a67586ead9e17aa93e2dc51c302fd1f84fcd6dbf8d6f7",
|
||||
"path": "houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"sha256": "cba3f4d097d84c823946d966677f02fcae841233c3a683e2deda6c7084f1f7f2",
|
||||
"rawBytes": 3826,
|
||||
"gzipBytes": 1579,
|
||||
"gzipBytes": 1582,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"sha256": "f5cddc6163a0ad69c95b017b5784e83246d5bfb9d62e42ee904d257b5b93ecd9",
|
||||
"path": "houseplan-assets/fr-gYskL0hZ.js",
|
||||
"sha256": "6fe8d00dfa1f3b29b669aa81b205547f49778c86441e5723ab3982b970af09b0",
|
||||
"rawBytes": 86212,
|
||||
"gzipBytes": 24798,
|
||||
"gzipBytes": 24802,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-card-CqPFzxrj.js",
|
||||
"sha256": "cfe289dae1528f5747ac849ff6908a2510e8c6051d4427b281d7d5794483f446",
|
||||
"rawBytes": 1032333,
|
||||
"gzipBytes": 289581,
|
||||
"path": "houseplan-assets/houseplan-card-HIu1PXGU.js",
|
||||
"sha256": "d43a961780a297835fa6b3d8b3ff534897b8376128afa9e7c1db7829dee74ee4",
|
||||
"rawBytes": 1032568,
|
||||
"gzipBytes": 289663,
|
||||
"isEntry": false,
|
||||
"imports": [],
|
||||
"dynamicImports": [
|
||||
"houseplan-assets/de-BZ8DJxmg.js",
|
||||
"houseplan-assets/editor-C1k2VegW.js",
|
||||
"houseplan-assets/fr-Bfx7FDK1.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js"
|
||||
"houseplan-assets/de-Db5jQSzb.js",
|
||||
"houseplan-assets/editor-DrFXz_Hr.js",
|
||||
"houseplan-assets/fr-gYskL0hZ.js",
|
||||
"houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-NGqI-hdQ.js",
|
||||
"sha256": "52c7a264ce85adc41430e15c1e732dfc3efa1ab69669c6b37b493ab6a24e2461",
|
||||
"path": "houseplan-assets/houseplan-editor-runtime-BHxJWPq7.js",
|
||||
"sha256": "df085c635b6b02fa11c1b0b5d9f8e87fc56309ed905de32f6eaee5b8e7c10af4",
|
||||
"rawBytes": 543265,
|
||||
"gzipBytes": 140058,
|
||||
"gzipBytes": 140062,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-BcQpo6pu.js",
|
||||
"sha256": "361af59cb2aae503e55ca84b4ee6fd0abea727f9a347a7e650a2a9a1fdb29951",
|
||||
"path": "houseplan-assets/houseplan-onboarding-runtime-CXZ19w7L.js",
|
||||
"sha256": "0a7828064aa00462836ba7d7fd7bd975b9a0751894d5546aa5c1bad60b987702",
|
||||
"rawBytes": 28088,
|
||||
"gzipBytes": 6956,
|
||||
"gzipBytes": 6960,
|
||||
"isEntry": false,
|
||||
"imports": [
|
||||
"houseplan-assets/backdrop-pick-yqQ-XytP.js",
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/backdrop-pick-CI0weKTj.js",
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
},
|
||||
{
|
||||
"path": "houseplan-card.js",
|
||||
"sha256": "ff2ab3744132b6369ee4b6798860166db78f3f685484fcedc8c2876ce67c579a",
|
||||
"sha256": "0ac5ff1feac770dfe96547960ca7e5816d4f501fc37cdaf47f5e6cd93d3e427b",
|
||||
"rawBytes": 1183,
|
||||
"gzipBytes": 796,
|
||||
"gzipBytes": 797,
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"houseplan-assets/houseplan-card-CqPFzxrj.js"
|
||||
"houseplan-assets/houseplan-card-HIu1PXGU.js"
|
||||
],
|
||||
"dynamicImports": []
|
||||
}
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,14 +1,14 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f";import{b as e,l as o,t,d8 as s,A as a,d9 as i,da as l,db as n,E as r,c}from"./houseplan-card-CqPFzxrj.js";class f 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,f={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")},h=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__="d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73";import{b as e,l as o,t,d8 as s,A as a,d9 as i,da as l,db as n,E as r,c}from"./houseplan-card-HIu1PXGU.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}
|
||||
.computeLabel=${e=>f[e.name]||e.name}
|
||||
.computeLabel=${e=>h[e.name]||e.name}
|
||||
@value-changed=${this._valueChanged}
|
||||
></ha-form>`;return c`
|
||||
${d(h.slice(0,3))}
|
||||
${d(f.slice(0,3))}
|
||||
${_?c`<div class="default-floor-error" role="alert"
|
||||
style="color:var(--error-color,#db4437);margin:-4px 0 12px;overflow-wrap:anywhere">
|
||||
${t(s,"editor.default_floor_missing",{id:_})}
|
||||
</div>`:a}
|
||||
${d(h.slice(3))}
|
||||
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}f.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",f);
|
||||
${d(f.slice(3))}
|
||||
`}_valueChanged(e){const o={...this._config,...e.detail.value};""===o.floor?delete o.floor:o.floor===this._floorToken&&(o.floor=this._config?.floor);const t=new Event("config-changed",{bubbles:!0,composed:!0});t.detail={config:o},this.dispatchEvent(t)}}h.properties={hass:{attribute:!1},_config:{state:!0},_spaces:{state:!0}},customElements.get("houseplan-card-editor")||customElements.define("houseplan-card-editor",h);
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+19
-19
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="f5efceeeb4e6dc4bcc5007b22002220bf68b69fc77f6a42c5063001c23fe514f";try{await import("./houseplan-assets/houseplan-card-CqPFzxrj.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__="d90076d3f49d110c3959a6c08a86895a6b98ca810fe122b37b76e22adc38ad73";try{await import("./houseplan-assets/houseplan-card-HIu1PXGU.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)}
|
||||
|
||||
@@ -27,6 +27,13 @@
|
||||
[#33](https://github.com/Matysh/houseplan-card/issues/33)).
|
||||
- Small fixes and improvements.
|
||||
|
||||
## v1.70.0-beta.5 — 2026-09-02
|
||||
|
||||
- The first load after upgrading no longer calculates a large floor twice while
|
||||
House Plan establishes Home Assistant Area tracking. Startup of the 20-room
|
||||
benchmark floor is back to the previous stable line's time
|
||||
([#126](https://github.com/Matysh/houseplan-card/issues/126)).
|
||||
|
||||
## v1.70.0-beta.4 — 2026-09-02
|
||||
|
||||
- **Help & feedback** now uses the same 44 px header button as General settings,
|
||||
|
||||
@@ -35,6 +35,13 @@
|
||||
[#33](https://github.com/Matysh/houseplan-card/issues/33)).
|
||||
- Мелкие исправления и улучшения.
|
||||
|
||||
## v1.70.0-beta.5 — 2026-09-02
|
||||
|
||||
- Первая загрузка после обновления больше не рассчитывает большой этаж дважды,
|
||||
пока House Plan создаёт служебную привязку к зонам Home Assistant. Время
|
||||
запуска тестового этажа из 20 комнат вернулось к уровню предыдущей стабильной
|
||||
версии ([#126](https://github.com/Matysh/houseplan-card/issues/126)).
|
||||
|
||||
## v1.70.0-beta.4 — 2026-09-02
|
||||
|
||||
- Кнопка **«Помощь и обратная связь»** теперь совпадает по размеру 44 px с
|
||||
|
||||
+22
-7
@@ -3909,8 +3909,10 @@ export class HouseplanCard extends LitElement {
|
||||
}
|
||||
|
||||
/** Spaces in render units (NORM_W × NORM_W — the canvas is square). */
|
||||
/** Bumped by every config mutation — the model/geometry cache key (audit L1). */
|
||||
/** Bumped by every structural config mutation — the model/geometry cache key (audit L1). */
|
||||
private _cfgEpoch = 0;
|
||||
/** Exact settings-only Area lifecycle replacement which may reuse geometry. */
|
||||
private _cfgEpochPreservedConfig: ServerConfig | null = null;
|
||||
private _modelCache: { key: string; model: SpaceModel[] } | null = null;
|
||||
private _emptySpaceStateActive = false;
|
||||
private _decorSnapCache: {
|
||||
@@ -4129,11 +4131,23 @@ export class HouseplanCard extends LitElement {
|
||||
return effectiveExcludedIntegrations(this._settings); // #44: single resolver
|
||||
}
|
||||
|
||||
/** Replace only Area lifecycle settings without invalidating room geometry. */
|
||||
private _setAreaLifecycleConfig(next: ServerConfig): void {
|
||||
this._cfgEpochPreservedConfig = next;
|
||||
this._serverCfg = next;
|
||||
}
|
||||
|
||||
protected willUpdate(changed: PropertyValues): void {
|
||||
// `_serverCfg` is the root of every geometry cache. Keep the epoch
|
||||
// invariant local to that reactive assignment so imports, reconnects and
|
||||
// demo harnesses cannot accidentally reuse an older config object's data.
|
||||
if (changed.has('_serverCfg')) this._cfgEpoch++;
|
||||
// #126's provenance/new-device write is the one exact exception: it changes
|
||||
// no space input, and rebuilding a 20-room floor here doubled cold work.
|
||||
if (changed.has('_serverCfg')) {
|
||||
const preserveGeometry = this._cfgEpochPreservedConfig === this._serverCfg;
|
||||
this._cfgEpochPreservedConfig = null;
|
||||
if (!preserveGeometry) this._cfgEpoch++;
|
||||
}
|
||||
this._syncEmptySpaceState();
|
||||
if (changed.has('hass') && this.hass) {
|
||||
this._hassSequence++;
|
||||
@@ -5209,7 +5223,7 @@ export class HouseplanCard extends LitElement {
|
||||
if (snapshotChanged || attentionChanged) {
|
||||
const previousSnapshot = st.marker_area_snapshot;
|
||||
const previousAttention = st.new_device_ids;
|
||||
this._serverCfg = {
|
||||
const nextConfig: ServerConfig = {
|
||||
...this._serverCfg,
|
||||
settings: {
|
||||
...st,
|
||||
@@ -5217,7 +5231,7 @@ export class HouseplanCard extends LitElement {
|
||||
...(attentionChanged ? { new_device_ids: nextAttention } : {}),
|
||||
},
|
||||
};
|
||||
this._cfgEpoch++;
|
||||
this._setAreaLifecycleConfig(nextConfig);
|
||||
try {
|
||||
// Await this internal lifecycle write. A debounced fire-and-forget
|
||||
// save would leave the local snapshot advanced after a rejection,
|
||||
@@ -5241,7 +5255,8 @@ export class HouseplanCard extends LitElement {
|
||||
else restored.marker_area_snapshot = previousSnapshot;
|
||||
if (previousAttention === undefined) delete restored.new_device_ids;
|
||||
else restored.new_device_ids = previousAttention;
|
||||
this._serverCfg = { ...this._serverCfg!, settings: restored };
|
||||
const restoredConfig: ServerConfig = { ...this._serverCfg!, settings: restored };
|
||||
this._setAreaLifecycleConfig(restoredConfig);
|
||||
this._cfgContentFingerprint = contentFingerprint(this._serverCfg);
|
||||
}
|
||||
// Config and layout are separate stores, but this lifecycle change is
|
||||
@@ -5278,11 +5293,11 @@ export class HouseplanCard extends LitElement {
|
||||
? attentionSettings.new_device_ids : []),
|
||||
...restoreFailed,
|
||||
])];
|
||||
this._serverCfg = {
|
||||
const attentionConfig: ServerConfig = {
|
||||
...this._serverCfg,
|
||||
settings: { ...attentionSettings, new_device_ids: attention },
|
||||
};
|
||||
this._cfgEpoch++;
|
||||
this._setAreaLifecycleConfig(attentionConfig);
|
||||
try {
|
||||
await this._writeConfig();
|
||||
} catch (attentionError: unknown) {
|
||||
|
||||
Reference in New Issue
Block a user