build: prepare v1.69.0-beta.2 candidate
Проверка (CI) / Классификация изменённых файлов (push) Successful in 15s
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 45s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 25s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 27s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 44s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 4m29s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 5m39s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped

Package the expanded furniture library, room-aware climate placement, controller-state parity, resilient editor delivery, revision-safe writes and the reviewed supporting fixes since beta.1.

Issue: #159
Issue: #317
Issue: #318
Issue: #335
Issue: #339
Issue: #340
Issue: #341
Issue: #353
Issue: #354
Issue: #356
User-Visible: yes
This commit is contained in:
Matysh
2026-08-28 20:37:13 +03:00
parent 07d59b1cad
commit 399df907ee
37 changed files with 158 additions and 154 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.69.0-beta.1"
VERSION = "1.69.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,111 +1,111 @@
{
"schema": 1,
"fingerprint": "ff001fc4fdb7a72be9bf3afda60fc34ec1513092f8fe4127c2c6a6f1d11e43da",
"fingerprint": "c219ead6633cb4404f86d670c606d3f1c02a69cc43a411cf25ebd6beb45fcd43",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-haeZFQ4t.js",
"houseplan-assets/houseplan-card-DZo3gC2T.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 270786,
"initialViewGzipBytes": 270793,
"lazyFiles": [
"houseplan-assets/de-C8wCW7i2.js",
"houseplan-assets/editor-B3bmlhO7.js",
"houseplan-assets/houseplan-editor-runtime-CnzJFk5R.js",
"houseplan-assets/houseplan-onboarding-runtime-DNd8fRh_.js",
"houseplan-assets/space-deletion-Cx2C6--l.js"
"houseplan-assets/de-Cuf6hSGS.js",
"houseplan-assets/editor-Drr9z9rK.js",
"houseplan-assets/houseplan-editor-runtime-CCBmTE0A.js",
"houseplan-assets/houseplan-onboarding-runtime-CJAdI7qX.js",
"houseplan-assets/space-deletion-CrURpMqK.js"
],
"lazyGzipBytes": 166293,
"lazyGzipBytes": 166311,
"lazyEditorFiles": [
"houseplan-assets/editor-B3bmlhO7.js",
"houseplan-assets/houseplan-editor-runtime-CnzJFk5R.js",
"houseplan-assets/space-deletion-Cx2C6--l.js"
"houseplan-assets/editor-Drr9z9rK.js",
"houseplan-assets/houseplan-editor-runtime-CCBmTE0A.js",
"houseplan-assets/space-deletion-CrURpMqK.js"
],
"lazyEditorGzipBytes": 137194,
"lazyEditorGzipBytes": 137204,
"lazyOnboardingFiles": [
"houseplan-assets/houseplan-onboarding-runtime-DNd8fRh_.js",
"houseplan-assets/space-deletion-Cx2C6--l.js"
"houseplan-assets/houseplan-onboarding-runtime-CJAdI7qX.js",
"houseplan-assets/space-deletion-CrURpMqK.js"
],
"lazyOnboardingGzipBytes": 7193,
"lazyOnboardingGzipBytes": 7198,
"lazyLocaleFiles": [
"houseplan-assets/de-C8wCW7i2.js"
"houseplan-assets/de-Cuf6hSGS.js"
],
"lazyLocaleGzipBytes": 22457,
"lazyLocaleGzipBytes": 22462,
"files": [
{
"path": "houseplan-assets/de-C8wCW7i2.js",
"sha256": "ec165396aa16c3d96f284ff19c76528755d27b834a1a272d5fda230e7cbdcbda",
"path": "houseplan-assets/de-Cuf6hSGS.js",
"sha256": "fff8ca0681b5dbd33a6dea7f5d05fbbebdec6caa6659f8b89bfc59fbb1ab50d1",
"rawBytes": 73919,
"gzipBytes": 22457,
"gzipBytes": 22462,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-B3bmlhO7.js",
"sha256": "2e0f14365be1e5e21b771d18dcd035d5c8654a9394d9ed0a10ddb3f05e85a40b",
"path": "houseplan-assets/editor-Drr9z9rK.js",
"sha256": "045707acaa6535cf617dedd8492ed8a2285c2cbe995b0fc88f3e263682522a60",
"rawBytes": 3831,
"gzipBytes": 1580,
"gzipBytes": 1583,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-haeZFQ4t.js"
"houseplan-assets/houseplan-card-DZo3gC2T.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-haeZFQ4t.js",
"sha256": "875e87d76ef8c2fa60f3521ae47150d073e5c712139a70af5e85b58f5d63179a",
"path": "houseplan-assets/houseplan-card-DZo3gC2T.js",
"sha256": "1e09aeec8c7ba2de3e665b132e4a4ea8a1f411274b924b4655bd7c9654f94cac",
"rawBytes": 955358,
"gzipBytes": 270035,
"gzipBytes": 270040,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-C8wCW7i2.js",
"houseplan-assets/editor-B3bmlhO7.js",
"houseplan-assets/houseplan-editor-runtime-CnzJFk5R.js",
"houseplan-assets/houseplan-onboarding-runtime-DNd8fRh_.js"
"houseplan-assets/de-Cuf6hSGS.js",
"houseplan-assets/editor-Drr9z9rK.js",
"houseplan-assets/houseplan-editor-runtime-CCBmTE0A.js",
"houseplan-assets/houseplan-onboarding-runtime-CJAdI7qX.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-CnzJFk5R.js",
"sha256": "9fae58e1f3f6317f810006c1ab0b377128c409c42d9f2e71dfe274c56c6a8ab4",
"path": "houseplan-assets/houseplan-editor-runtime-CCBmTE0A.js",
"sha256": "9834239d2910161215d70d12147ad83a0fe1d3062abbe6ea9f5165feb8a20d78",
"rawBytes": 521651,
"gzipBytes": 135063,
"gzipBytes": 135068,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-haeZFQ4t.js",
"houseplan-assets/space-deletion-Cx2C6--l.js"
"houseplan-assets/houseplan-card-DZo3gC2T.js",
"houseplan-assets/space-deletion-CrURpMqK.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-DNd8fRh_.js",
"sha256": "87a359f38f0f11eac942cda212d7a016712a356690b0694b8c011ca18b516353",
"path": "houseplan-assets/houseplan-onboarding-runtime-CJAdI7qX.js",
"sha256": "cbd7d63ad1fdb1b16b58ba99cbc93a02d4ea6f70317a926018cffe56417c6ba2",
"rawBytes": 26356,
"gzipBytes": 6642,
"gzipBytes": 6645,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-haeZFQ4t.js",
"houseplan-assets/space-deletion-Cx2C6--l.js"
"houseplan-assets/houseplan-card-DZo3gC2T.js",
"houseplan-assets/space-deletion-CrURpMqK.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/space-deletion-Cx2C6--l.js",
"sha256": "49477fcf9a3f0133e6b09b1a12372e587cc4cced4f69ec0bde9a169d4910387f",
"path": "houseplan-assets/space-deletion-CrURpMqK.js",
"sha256": "7c9566acfd9fa8531e97cc955cba29dffae614c3c5e114d6235c71d44b6811b1",
"rawBytes": 911,
"gzipBytes": 551,
"gzipBytes": 553,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "1d235fe36b58b389091bde590f8c43fcbd9d7350f41deb80735a7eb050d9ac8e",
"sha256": "a69e76fc9673ef374d20aceba2d0d160b2a42e9d0b4bcfc3baf616a58c89b93f",
"rawBytes": 1089,
"gzipBytes": 751,
"gzipBytes": 753,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-haeZFQ4t.js"
"houseplan-assets/houseplan-card-DZo3gC2T.js"
],
"dynamicImports": []
}
@@ -1,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff001fc4fdb7a72be9bf3afda60fc34ec1513092f8fe4127c2c6a6f1d11e43da";import{c as e,l as o,t,d1 as s,A as a,d2 as i,d3 as l,d4 as n,E as r,b as c}from"./houseplan-card-haeZFQ4t.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__="c219ead6633cb4404f86d670c606d3f1c02a69cc43a411cf25ebd6beb45fcd43";import{c as e,l as o,t,d1 as s,A as a,d2 as i,d3 as l,d4 as n,E as r,b as c}from"./houseplan-card-DZo3gC2T.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 @@
function e(e,o){return{id:e,title:o,plan_url:null,view_box:[0,0,1,1],rooms:[],wall_segments:[]}}function o(e="file"){const o="draw"===e;return{source:e,showBorders:o,showNames:o,displayTouched:!1}}function r(e,o){if(e.displayTouched)return{...e,source:o};const r="draw"===o;return{...e,source:o,showBorders:r,showNames:r}}function s(e,o,r){return{...e,[o]:r,displayTouched:!0}}function t(e,o,r){const s=(e?.spaces||[]).find(e=>e?.id===r),t=new Set((s?.rooms||[]).map(e=>String(e?.id||"")).filter(Boolean)),a=[...new Set((e?.markers||[]).filter(e=>!0!==e?.removed&&"string"==typeof e?.id).filter(e=>e.space===r||"string"==typeof e.room_id&&t.has(e.room_id)||o?.[e.id]?.s===r).map(e=>e.id))].sort((e,o)=>e.localeCompare(o));return{markerIds:a,count:a.length}}globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff001fc4fdb7a72be9bf3afda60fc34ec1513092f8fe4127c2c6a6f1d11e43da";export{t as a,e as c,o as i,r as s,s as t};
function e(e,o){return{id:e,title:o,plan_url:null,view_box:[0,0,1,1],rooms:[],wall_segments:[]}}function o(e="file"){const o="draw"===e;return{source:e,showBorders:o,showNames:o,displayTouched:!1}}function r(e,o){if(e.displayTouched)return{...e,source:o};const r="draw"===o;return{...e,source:o,showBorders:r,showNames:r}}function s(e,o,r){return{...e,[o]:r,displayTouched:!0}}function t(e,o,r){const s=(e?.spaces||[]).find(e=>e?.id===r),t=new Set((s?.rooms||[]).map(e=>String(e?.id||"")).filter(Boolean)),n=[...new Set((e?.markers||[]).filter(e=>!0!==e?.removed&&"string"==typeof e?.id).filter(e=>e.space===r||"string"==typeof e.room_id&&t.has(e.room_id)||o?.[e.id]?.s===r).map(e=>e.id))].sort((e,o)=>e.localeCompare(o));return{markerIds:n,count:n.length}}globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="c219ead6633cb4404f86d670c606d3f1c02a69cc43a411cf25ebd6beb45fcd43";export{t as a,e as c,o as i,r as s,s as t};
@@ -1 +1 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ff001fc4fdb7a72be9bf3afda60fc34ec1513092f8fe4127c2c6a6f1d11e43da";try{await import("./houseplan-assets/houseplan-card-haeZFQ4t.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).":"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__="c219ead6633cb4404f86d670c606d3f1c02a69cc43a411cf25ebd6beb45fcd43";try{await import("./houseplan-assets/houseplan-card-DZo3gC2T.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).":"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.69.0-beta.1"
"version": "1.69.0-beta.2"
}