build: prepare v1.70.0-beta.2 candidate

Package HA Area marker relocation, unified dangerous confirmations, camera and marker-history fixes, beta polish and backend gate hardening.

Issue: #32
Issue: #126
Issue: #396
Issue: #397
Issue: #398
Issue: #399
Issue: #400
User-Visible: yes
This commit is contained in:
Matysh
2026-08-31 15:03:22 +03:00
parent bc076d3f50
commit 4794183114
27 changed files with 162 additions and 160 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ PLAN_ORPHAN_TTL_S = 3600
SCHEDULED_GRACE_S = 30 * 24 * 3600
FILES_DIR = "houseplan/files"
CONF_ADMIN_ONLY = "admin_only"
VERSION = "1.70.0-beta.1"
VERSION = "1.70.0-beta.2"
# Portable backup format. This is deliberately independent from the Home
# Assistant Store version above: storage migrations and files exported by a
@@ -1,125 +1,125 @@
{
"schema": 1,
"fingerprint": "4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc",
"fingerprint": "e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-gWGxd-Om.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 287324,
"initialViewGzipBytes": 287335,
"lazyFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/fr-BFHuujk_.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/fr-DjgNM9Ql.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
],
"lazyGzipBytes": 199796,
"lazyGzipBytes": 199825,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js"
],
"lazyEditorGzipBytes": 144671,
"lazyEditorGzipBytes": 144687,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
],
"lazyOnboardingGzipBytes": 14022,
"lazyOnboardingGzipBytes": 14031,
"lazyLocaleFiles": [
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/fr-BFHuujk_.js"
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/fr-DjgNM9Ql.js"
],
"lazyLocaleGzipBytes": 48171,
"lazyLocaleGzipBytes": 48177,
"files": [
{
"path": "houseplan-assets/backdrop-pick-hpviMpOO.js",
"sha256": "eda08aefa4a3f2e2984d0efb2353481953dac66b42a97899233925c786b685fa",
"path": "houseplan-assets/backdrop-pick-DJCyFKDK.js",
"sha256": "7f04cccca4f4a30df0b3e84763546f74474ce94b490f6d5f7d554191816f2288",
"rawBytes": 20636,
"gzipBytes": 7068,
"gzipBytes": 7070,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DALVCOmC.js",
"sha256": "fbcc3175d4d258a67cac79f8bc52f82e62854e93ba606e0759e6007c3b5a7754",
"path": "houseplan-assets/de-COj80LwQ.js",
"sha256": "98b740ffaf63c9570397eaf46220e7f78d5e5c3f4324dcab07c8611b27c0ec48",
"rawBytes": 81096,
"gzipBytes": 24339,
"gzipBytes": 24342,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-DyQaPo62.js",
"sha256": "e29e522cb6b35704cd75c568dd79915c25183503f1b5f62a16796dec72b564bc",
"path": "houseplan-assets/editor-Dszhz_vG.js",
"sha256": "f323b46fa928c3fd3214ded2c7af9eff9c2af301d8747d4e20015e3a5dba08fa",
"rawBytes": 3826,
"gzipBytes": 1576,
"gzipBytes": 1581,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-BFHuujk_.js",
"sha256": "5e1ca90027bf91cb36c540f8a3da8c801be489f3fa0f5e204803e2c21fbc8787",
"path": "houseplan-assets/fr-DjgNM9Ql.js",
"sha256": "e1d82a5f9174ef0a1e367297506a8a2443321a18d39c5e210d23964d48203d3a",
"rawBytes": 83283,
"gzipBytes": 23832,
"gzipBytes": 23835,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-gWGxd-Om.js",
"sha256": "e8d3d174cc75afba126a518b8ce17d60e35d5f1c14c7ba1681c7efa26b347458",
"path": "houseplan-assets/houseplan-card-gx3tE4MH.js",
"sha256": "b89d9fc57d51df514872c2f9c4d7ab05a76d3db5cbd40c4e07652c58cf25d0e5",
"rawBytes": 1018908,
"gzipBytes": 286530,
"gzipBytes": 286540,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/fr-BFHuujk_.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/fr-DjgNM9Ql.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"sha256": "680ed5fc54d841dd0cac2c422555fff2b74c2a7daf23f261b7c5b805f9f19153",
"path": "houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"sha256": "ea18806c13b456d5a9700a6b88d9bd5ad79528cc8a91b683743886288910b12e",
"rawBytes": 527184,
"gzipBytes": 136027,
"gzipBytes": 136036,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js",
"sha256": "77922fcb2922e210ee2edd546e12b9a47b5c28d1916db5f005b7d174455fbee3",
"path": "houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js",
"sha256": "5482503bb5ab9dc6097bab68866869adf94856826b5982f94071bc077309410e",
"rawBytes": 28088,
"gzipBytes": 6954,
"gzipBytes": 6961,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "3542b17f51ed49d105676dfe37c03c13970522d748f11ea1733b37c28f0ba93c",
"sha256": "acc5a66d59c634a057aeb3aea0099f279391bc7359ea4d17b9118d14f5ef03c8",
"rawBytes": 1183,
"gzipBytes": 794,
"gzipBytes": 795,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
@@ -1,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc";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-gWGxd-Om.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__="e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3";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-gx3tE4MH.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
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
.computeLabel=${e=>h[e.name]||e.name}
.computeLabel=${e=>f[e.name]||e.name}
@value-changed=${this._valueChanged}
></ha-form>`;return c`
${d(f.slice(0,3))}
${d(h.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(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);
${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);
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc";try{await import("./houseplan-assets/houseplan-card-gWGxd-Om.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__="e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3";try{await import("./houseplan-assets/houseplan-card-gx3tE4MH.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
@@ -16,5 +16,5 @@
"issue_tracker": "https://github.com/Matysh/houseplan-card/issues",
"requirements": [],
"single_config_entry": true,
"version": "1.70.0-beta.1"
"version": "1.70.0-beta.2"
}
+55 -55
View File
@@ -1,125 +1,125 @@
{
"schema": 1,
"fingerprint": "4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc",
"fingerprint": "e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-gWGxd-Om.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 287324,
"initialViewGzipBytes": 287335,
"lazyFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/fr-BFHuujk_.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/fr-DjgNM9Ql.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
],
"lazyGzipBytes": 199796,
"lazyGzipBytes": 199825,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js"
],
"lazyEditorGzipBytes": 144671,
"lazyEditorGzipBytes": 144687,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
],
"lazyOnboardingGzipBytes": 14022,
"lazyOnboardingGzipBytes": 14031,
"lazyLocaleFiles": [
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/fr-BFHuujk_.js"
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/fr-DjgNM9Ql.js"
],
"lazyLocaleGzipBytes": 48171,
"lazyLocaleGzipBytes": 48177,
"files": [
{
"path": "houseplan-assets/backdrop-pick-hpviMpOO.js",
"sha256": "eda08aefa4a3f2e2984d0efb2353481953dac66b42a97899233925c786b685fa",
"path": "houseplan-assets/backdrop-pick-DJCyFKDK.js",
"sha256": "7f04cccca4f4a30df0b3e84763546f74474ce94b490f6d5f7d554191816f2288",
"rawBytes": 20636,
"gzipBytes": 7068,
"gzipBytes": 7070,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-DALVCOmC.js",
"sha256": "fbcc3175d4d258a67cac79f8bc52f82e62854e93ba606e0759e6007c3b5a7754",
"path": "houseplan-assets/de-COj80LwQ.js",
"sha256": "98b740ffaf63c9570397eaf46220e7f78d5e5c3f4324dcab07c8611b27c0ec48",
"rawBytes": 81096,
"gzipBytes": 24339,
"gzipBytes": 24342,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-DyQaPo62.js",
"sha256": "e29e522cb6b35704cd75c568dd79915c25183503f1b5f62a16796dec72b564bc",
"path": "houseplan-assets/editor-Dszhz_vG.js",
"sha256": "f323b46fa928c3fd3214ded2c7af9eff9c2af301d8747d4e20015e3a5dba08fa",
"rawBytes": 3826,
"gzipBytes": 1576,
"gzipBytes": 1581,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-BFHuujk_.js",
"sha256": "5e1ca90027bf91cb36c540f8a3da8c801be489f3fa0f5e204803e2c21fbc8787",
"path": "houseplan-assets/fr-DjgNM9Ql.js",
"sha256": "e1d82a5f9174ef0a1e367297506a8a2443321a18d39c5e210d23964d48203d3a",
"rawBytes": 83283,
"gzipBytes": 23832,
"gzipBytes": 23835,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-gWGxd-Om.js",
"sha256": "e8d3d174cc75afba126a518b8ce17d60e35d5f1c14c7ba1681c7efa26b347458",
"path": "houseplan-assets/houseplan-card-gx3tE4MH.js",
"sha256": "b89d9fc57d51df514872c2f9c4d7ab05a76d3db5cbd40c4e07652c58cf25d0e5",
"rawBytes": 1018908,
"gzipBytes": 286530,
"gzipBytes": 286540,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-DALVCOmC.js",
"houseplan-assets/editor-DyQaPo62.js",
"houseplan-assets/fr-BFHuujk_.js",
"houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js"
"houseplan-assets/de-COj80LwQ.js",
"houseplan-assets/editor-Dszhz_vG.js",
"houseplan-assets/fr-DjgNM9Ql.js",
"houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-B2jWrzSw.js",
"sha256": "680ed5fc54d841dd0cac2c422555fff2b74c2a7daf23f261b7c5b805f9f19153",
"path": "houseplan-assets/houseplan-editor-runtime-B4PJOOBZ.js",
"sha256": "ea18806c13b456d5a9700a6b88d9bd5ad79528cc8a91b683743886288910b12e",
"rawBytes": 527184,
"gzipBytes": 136027,
"gzipBytes": 136036,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-LH9ZlGuV.js",
"sha256": "77922fcb2922e210ee2edd546e12b9a47b5c28d1916db5f005b7d174455fbee3",
"path": "houseplan-assets/houseplan-onboarding-runtime-BMdjq8ts.js",
"sha256": "5482503bb5ab9dc6097bab68866869adf94856826b5982f94071bc077309410e",
"rawBytes": 28088,
"gzipBytes": 6954,
"gzipBytes": 6961,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-hpviMpOO.js",
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/backdrop-pick-DJCyFKDK.js",
"houseplan-assets/houseplan-card-gx3tE4MH.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "3542b17f51ed49d105676dfe37c03c13970522d748f11ea1733b37c28f0ba93c",
"sha256": "acc5a66d59c634a057aeb3aea0099f279391bc7359ea4d17b9118d14f5ef03c8",
"rawBytes": 1183,
"gzipBytes": 794,
"gzipBytes": 795,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-gWGxd-Om.js"
"houseplan-assets/houseplan-card-gx3tE4MH.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,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc";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-gWGxd-Om.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__="e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3";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-gx3tE4MH.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
.hass=${this.hass}
.data=${this._formData}
.schema=${e}
.computeLabel=${e=>h[e.name]||e.name}
.computeLabel=${e=>f[e.name]||e.name}
@value-changed=${this._valueChanged}
></ha-form>`;return c`
${d(f.slice(0,3))}
${d(h.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(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);
${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);
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
View File
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="4beabb4007e2d79aa7b0d5603a16f29e50551d2480b07de63cb0fccab0621efc";try{await import("./houseplan-assets/houseplan-card-gWGxd-Om.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__="e878f886941c6a82f5c99fa5fd17362dbc4ffa7a0e999dc6cdb82711d86a4af3";try{await import("./houseplan-assets/houseplan-card-gx3tE4MH.js")}catch(e){if(!customElements.get("houseplan-card")){const l=String(navigator.language||"en").toLowerCase();const m=l.startsWith("ru")?"House Plan обновился — перезагрузите страницу (Ctrl+F5).":l.startsWith("de")?"House Plan wurde aktualisiert — bitte laden Sie die Seite neu (Strg+F5).":l.startsWith("fr")?"House Plan a été mis à jour — veuillez recharger la page (Ctrl+F5).":"House Plan was updated — please reload the page (Ctrl+F5).";customElements.define("houseplan-card",class extends HTMLElement{setConfig(){}getCardSize(){return 1}connectedCallback(){this.style.cssText="display:block;box-sizing:border-box;padding:16px;border:1px solid var(--divider-color,#e0e0e0);border-radius:var(--ha-card-border-radius,12px);background:var(--card-background-color,#fff);color:var(--primary-text-color,#212121);font:14px/1.4 var(--paper-font-body1_-_font-family,sans-serif)";this.textContent=m}})}console.error("[houseplan] stale entry: the main chunk is unavailable",e)}
+2
View File
@@ -2,6 +2,8 @@
## Unreleased
## v1.70.0-beta.2 — 2026-08-31
- Moving a device or a directly placed entity to another Home Assistant Area
now moves its marker to that Area's House Plan room too, even after the marker
was dragged manually. The new position uses the normal room grid and is
+2
View File
@@ -8,6 +8,8 @@
## Не выпущено
## v1.70.0-beta.2 — 2026-08-31
- Перенос устройства или отдельно размещённой сущности в другую HA-зону теперь
переносит и маркер в связанную комнату House Plan, даже если маркер раньше
двигали вручную. Новое место выбирает обычная сетка комнаты и отмечает его
+7 -9
View File
@@ -1,18 +1,16 @@
<!-- release: v1.70.0-beta.1 -->
<!-- release: v1.70.0-beta.2 -->
## Основное
- Навигация по плану стала плавной, редактор устройств получил Undo/Redo перемещений, а мебель — свободное масштабирование, вращение и зеркалирование ([#82](https://github.com/Matysh/houseplan-card/issues/82), [#74](https://github.com/Matysh/houseplan-card/issues/74), [#383](https://github.com/Matysh/houseplan-card/issues/383)).
- Фильтры обнаружения теперь настраиваются прямо в каталоге устройств; у важных настроек появились контекстные подсказки, а для маркера можно выбрать действие «Ничего не делать» ([#44](https://github.com/Matysh/houseplan-card/issues/44), [#86](https://github.com/Matysh/houseplan-card/issues/86), [#381](https://github.com/Matysh/houseplan-card/issues/381)).
- Конфигурации получили автоматическую проверку совместимости, ошибки бэкенда — локализацию, а `fit: house` больше не учитывает скрытые стены ([#33](https://github.com/Matysh/houseplan-card/issues/33), [#42](https://github.com/Matysh/houseplan-card/issues/42), [#384](https://github.com/Matysh/houseplan-card/issues/384)).
- Перенос устройства в другую HA-зону теперь переносит его маркер в связанную комнату House Plan, даже если маркер ранее двигали вручную ([#126](https://github.com/Matysh/houseplan-card/issues/126)).
- Опасные действия получили единый доступный диалог подтверждения, а плавный зум и Undo/Redo позиций устройств стали надёжнее ([#32](https://github.com/Matysh/houseplan-card/issues/32), [#396](https://github.com/Matysh/houseplan-card/issues/396), [#397](https://github.com/Matysh/houseplan-card/issues/397)).
- Мелкие исправления и улучшения.
## Highlights
- Plan navigation is now smooth, the Device editor gained position Undo/Redo, and furniture supports free resizing, rotation and mirroring ([#82](https://github.com/Matysh/houseplan-card/issues/82), [#74](https://github.com/Matysh/houseplan-card/issues/74), [#383](https://github.com/Matysh/houseplan-card/issues/383)).
- Discovery filters are now configurable directly in the device catalog; critical settings gained contextual help, and markers can use a **Do nothing** tap action ([#44](https://github.com/Matysh/houseplan-card/issues/44), [#86](https://github.com/Matysh/houseplan-card/issues/86), [#381](https://github.com/Matysh/houseplan-card/issues/381)).
- Config compatibility is now checked automatically, backend errors are localized, and `fit: house` no longer includes hidden walls ([#33](https://github.com/Matysh/houseplan-card/issues/33), [#42](https://github.com/Matysh/houseplan-card/issues/42), [#384](https://github.com/Matysh/houseplan-card/issues/384)).
- Moving a device to another HA Area now moves its marker to the linked House Plan room, even after the marker was moved manually ([#126](https://github.com/Matysh/houseplan-card/issues/126)).
- Dangerous actions gained one accessible confirmation dialog, while smooth zoom and device-position Undo/Redo became more reliable ([#32](https://github.com/Matysh/houseplan-card/issues/32), [#396](https://github.com/Matysh/houseplan-card/issues/396), [#397](https://github.com/Matysh/houseplan-card/issues/397)).
- Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.70.0-beta.1/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.70.0-beta.1/docs/CHANGELOG.md)
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.70.0-beta.2/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.70.0-beta.2/docs/CHANGELOG.md)
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
"version": "1.70.0-beta.1",
"version": "1.70.0-beta.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
"version": "1.70.0-beta.1",
"version": "1.70.0-beta.2",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
"version": "1.70.0-beta.1",
"version": "1.70.0-beta.2",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
+1 -1
View File
@@ -373,7 +373,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.70.0-beta.1';
const CARD_VERSION = '1.70.0-beta.2';
const ENTRY_BUILD_FINGERPRINT = '__HOUSEPLAN_SOURCE_FINGERPRINT__';
const EDITOR_RETRY_ASSET = '__HOUSEPLAN_EDITOR_RETRY_ASSET__';
+1 -1
View File
@@ -342,7 +342,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.70.0-beta.1';
const CARD_VERSION = '1.70.0-beta.2';
type ResizeLiveLabel = {
kind: 'length';