Release v1.69.0

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

Issue: #379
Release: v1.69.0
User-Visible: yes
This commit is contained in:
Sergey Matyunin
2026-08-30 00:19:03 +03:00
parent b2470df5a7
commit 816bc77020
28 changed files with 223 additions and 165 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.5"
VERSION = "1.69.0"
# 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": "c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d",
"fingerprint": "d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-CyuodvSp.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 277938,
"initialViewGzipBytes": 277937,
"lazyFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/fr-Wmhg31Dj.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/fr-BTpf9ehd.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
],
"lazyGzipBytes": 192247,
"lazyGzipBytes": 192258,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js"
],
"lazyEditorGzipBytes": 140216,
"lazyEditorGzipBytes": 140219,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
],
"lazyOnboardingGzipBytes": 9444,
"lazyOnboardingGzipBytes": 9449,
"lazyLocaleFiles": [
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/fr-Wmhg31Dj.js"
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/fr-BTpf9ehd.js"
],
"lazyLocaleGzipBytes": 45538,
"lazyLocaleGzipBytes": 45544,
"files": [
{
"path": "houseplan-assets/backdrop-pick-V8akNul_.js",
"sha256": "4cc3fcf1bc098a01d9ef870badcf36dedee9ba4be1118b08ad83eef54e79779b",
"path": "houseplan-assets/backdrop-pick-6gsq-iY1.js",
"sha256": "af7a1ca7b52cd4acda43b4d550cb068d7f6e354855a8976974f70b1d7d85e66d",
"rawBytes": 6967,
"gzipBytes": 2951,
"gzipBytes": 2954,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-BnfsQCZJ.js",
"sha256": "31b20098ba0421c0b816ee7ea0c48d0949f98b7f77314b923c3753c031cdc6b9",
"path": "houseplan-assets/de-BIM0GgdJ.js",
"sha256": "dab65691523e1136dc5ecd3d90716ebd7b3c060d2db4531d4eca6226440e7418",
"rawBytes": 75572,
"gzipBytes": 22989,
"gzipBytes": 22993,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-BkkWS-ED.js",
"sha256": "10047f3867c70e9043669906de59ad84fc758de5bd6bffdddc62a9946281997e",
"path": "houseplan-assets/editor-D18CND1l.js",
"sha256": "666445fd34c53ddd9a8e0079149397b27e5433d649046752dd0b288bcdbec11f",
"rawBytes": 3831,
"gzipBytes": 1580,
"gzipBytes": 1582,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-Wmhg31Dj.js",
"sha256": "23be1755bf6205ff1eaa82166a51d3dcdcb761b6ea5183f1c928fe3f5de2a4db",
"path": "houseplan-assets/fr-BTpf9ehd.js",
"sha256": "844ff39c35a6afdb5158b975d660ca350257860350ee617fd766406489b57be3",
"rawBytes": 77710,
"gzipBytes": 22549,
"gzipBytes": 22551,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-CyuodvSp.js",
"sha256": "f47157cc4a17f79be4bba79cc23112cf19c761f844a526dfd8c7e4d5309103d4",
"rawBytes": 979430,
"gzipBytes": 277146,
"path": "houseplan-assets/houseplan-card-C_ThwFPM.js",
"sha256": "9ed9e68f64d7b15589ab4d869c4aa5d9dbe3f1fafcf0ae2dbeae2cd32a0dfa38",
"rawBytes": 979423,
"gzipBytes": 277142,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/fr-Wmhg31Dj.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/fr-BTpf9ehd.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"sha256": "28e5ddd4005a621135d9fa4ac6ed74c4c3c82b11ac80a879802a0c9cbee2c773",
"rawBytes": 526486,
"gzipBytes": 135685,
"path": "houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"sha256": "ea588ce8cd3a2d4a9d75c36097a80ef56a4f6d195b002ba5a30214c1574b38ef",
"rawBytes": 526479,
"gzipBytes": 135683,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CATDliha.js",
"sha256": "193da3d08a6eee74f1daaf1bb5f9d232228f8251c3b783606f833ba3eb35b778",
"path": "houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js",
"sha256": "225fb52367703f6767e2c891ac46962d3e986f712bb7a44b6961bbd67c337552",
"rawBytes": 26195,
"gzipBytes": 6493,
"gzipBytes": 6495,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "9fc2044a142b4c2017b947a504aa805dbbde4bab2fd7c8e0b257500ca2c935ef",
"sha256": "4ea6a5cc96ba771f672613ccc4549512eb4ede8f297d6c60953b307af1b40302",
"rawBytes": 1183,
"gzipBytes": 792,
"gzipBytes": 795,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
}
File diff suppressed because one or more lines are too long
@@ -1,14 +1,14 @@
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d";import{c as e,l as o,t,c$ as s,A as a,d0 as i,d1 as l,d2 as n,E as r,b as c}from"./houseplan-card-CyuodvSp.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__="d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5";import{c as e,l as o,t,c$ as s,A as a,d0 as i,d1 as l,d2 as n,E as r,b as c}from"./houseplan-card-C_ThwFPM.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__="c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d";try{await import("./houseplan-assets/houseplan-card-CyuodvSp.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__="d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5";try{await import("./houseplan-assets/houseplan-card-C_ThwFPM.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.69.0-beta.5"
"version": "1.69.0"
}
+57 -57
View File
@@ -1,125 +1,125 @@
{
"schema": 1,
"fingerprint": "c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d",
"fingerprint": "d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5",
"entry": "houseplan-card.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-CyuodvSp.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 277938,
"initialViewGzipBytes": 277937,
"lazyFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/fr-Wmhg31Dj.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/fr-BTpf9ehd.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
],
"lazyGzipBytes": 192247,
"lazyGzipBytes": 192258,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js"
],
"lazyEditorGzipBytes": 140216,
"lazyEditorGzipBytes": 140219,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
],
"lazyOnboardingGzipBytes": 9444,
"lazyOnboardingGzipBytes": 9449,
"lazyLocaleFiles": [
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/fr-Wmhg31Dj.js"
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/fr-BTpf9ehd.js"
],
"lazyLocaleGzipBytes": 45538,
"lazyLocaleGzipBytes": 45544,
"files": [
{
"path": "houseplan-assets/backdrop-pick-V8akNul_.js",
"sha256": "4cc3fcf1bc098a01d9ef870badcf36dedee9ba4be1118b08ad83eef54e79779b",
"path": "houseplan-assets/backdrop-pick-6gsq-iY1.js",
"sha256": "af7a1ca7b52cd4acda43b4d550cb068d7f6e354855a8976974f70b1d7d85e66d",
"rawBytes": 6967,
"gzipBytes": 2951,
"gzipBytes": 2954,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-BnfsQCZJ.js",
"sha256": "31b20098ba0421c0b816ee7ea0c48d0949f98b7f77314b923c3753c031cdc6b9",
"path": "houseplan-assets/de-BIM0GgdJ.js",
"sha256": "dab65691523e1136dc5ecd3d90716ebd7b3c060d2db4531d4eca6226440e7418",
"rawBytes": 75572,
"gzipBytes": 22989,
"gzipBytes": 22993,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-BkkWS-ED.js",
"sha256": "10047f3867c70e9043669906de59ad84fc758de5bd6bffdddc62a9946281997e",
"path": "houseplan-assets/editor-D18CND1l.js",
"sha256": "666445fd34c53ddd9a8e0079149397b27e5433d649046752dd0b288bcdbec11f",
"rawBytes": 3831,
"gzipBytes": 1580,
"gzipBytes": 1582,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-Wmhg31Dj.js",
"sha256": "23be1755bf6205ff1eaa82166a51d3dcdcb761b6ea5183f1c928fe3f5de2a4db",
"path": "houseplan-assets/fr-BTpf9ehd.js",
"sha256": "844ff39c35a6afdb5158b975d660ca350257860350ee617fd766406489b57be3",
"rawBytes": 77710,
"gzipBytes": 22549,
"gzipBytes": 22551,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-CyuodvSp.js",
"sha256": "f47157cc4a17f79be4bba79cc23112cf19c761f844a526dfd8c7e4d5309103d4",
"rawBytes": 979430,
"gzipBytes": 277146,
"path": "houseplan-assets/houseplan-card-C_ThwFPM.js",
"sha256": "9ed9e68f64d7b15589ab4d869c4aa5d9dbe3f1fafcf0ae2dbeae2cd32a0dfa38",
"rawBytes": 979423,
"gzipBytes": 277142,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-BnfsQCZJ.js",
"houseplan-assets/editor-BkkWS-ED.js",
"houseplan-assets/fr-Wmhg31Dj.js",
"houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"houseplan-assets/houseplan-onboarding-runtime-CATDliha.js"
"houseplan-assets/de-BIM0GgdJ.js",
"houseplan-assets/editor-D18CND1l.js",
"houseplan-assets/fr-BTpf9ehd.js",
"houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-DPoPwoYP.js",
"sha256": "28e5ddd4005a621135d9fa4ac6ed74c4c3c82b11ac80a879802a0c9cbee2c773",
"rawBytes": 526486,
"gzipBytes": 135685,
"path": "houseplan-assets/houseplan-editor-runtime-BGFK1d9o.js",
"sha256": "ea588ce8cd3a2d4a9d75c36097a80ef56a4f6d195b002ba5a30214c1574b38ef",
"rawBytes": 526479,
"gzipBytes": 135683,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-CATDliha.js",
"sha256": "193da3d08a6eee74f1daaf1bb5f9d232228f8251c3b783606f833ba3eb35b778",
"path": "houseplan-assets/houseplan-onboarding-runtime-Ji0RleOQ.js",
"sha256": "225fb52367703f6767e2c891ac46962d3e986f712bb7a44b6961bbd67c337552",
"rawBytes": 26195,
"gzipBytes": 6493,
"gzipBytes": 6495,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-V8akNul_.js",
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/backdrop-pick-6gsq-iY1.js",
"houseplan-assets/houseplan-card-C_ThwFPM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "9fc2044a142b4c2017b947a504aa805dbbde4bab2fd7c8e0b257500ca2c935ef",
"sha256": "4ea6a5cc96ba771f672613ccc4549512eb4ede8f297d6c60953b307af1b40302",
"rawBytes": 1183,
"gzipBytes": 792,
"gzipBytes": 795,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-CyuodvSp.js"
"houseplan-assets/houseplan-card-C_ThwFPM.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__="c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d";import{c as e,l as o,t,c$ as s,A as a,d0 as i,d1 as l,d2 as n,E as r,b as c}from"./houseplan-card-CyuodvSp.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__="d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5";import{c as e,l as o,t,c$ as s,A as a,d0 as i,d1 as l,d2 as n,E as r,b as c}from"./houseplan-card-C_ThwFPM.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__="c49aea67344ecbd52d1b1cd83dee9c815333cc3d295db2ed3fca6d9cf54a832d";try{await import("./houseplan-assets/houseplan-card-CyuodvSp.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__="d301cf55cc41f758a4c82b05cc37f4a616cabbfeff496053afc2dc62fd2374e5";try{await import("./houseplan-assets/houseplan-card-C_ThwFPM.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)}
+29
View File
@@ -2,6 +2,35 @@
## Unreleased
## v1.69.0 — 2026-08-30
- House Plan now speaks German and French, keeps the editors outside the
initial View download, and lets **Value + state** select an exact reading
source. External writers must now send `expected_rev` when updating a
non-empty config or layout store
([#348](https://github.com/Matysh/houseplan-card/issues/348),
[#371](https://github.com/Matysh/houseplan-card/issues/371),
[#337](https://github.com/Matysh/houseplan-card/issues/337),
[#378](https://github.com/Matysh/houseplan-card/issues/378),
[#340](https://github.com/Matysh/houseplan-card/issues/340)).
- The Background editor gained 56 furniture types, a live placement preview,
safe reduction for huge images, passive device landmarks, and one persistent
default style for new objects
([#159](https://github.com/Matysh/houseplan-card/issues/159),
[#359](https://github.com/Matysh/houseplan-card/issues/359),
[#39](https://github.com/Matysh/houseplan-card/issues/39),
[#362](https://github.com/Matysh/houseplan-card/issues/362),
[#360](https://github.com/Matysh/houseplan-card/issues/360),
[#377](https://github.com/Matysh/houseplan-card/issues/377)).
- Glow now follows live door and gate geometry and can be enabled in
`houseplan-space-card`, which also offers tight whole-house framing and
cached light rendering
([#20](https://github.com/Matysh/houseplan-card/issues/20),
[#374](https://github.com/Matysh/houseplan-card/issues/374),
[#373](https://github.com/Matysh/houseplan-card/issues/373),
[#375](https://github.com/Matysh/houseplan-card/issues/375)).
- Small fixes and improvements.
## v1.69.0-beta.5 — 2026-08-29
- **Value + state** can now show the exact reading the user needs instead of
+29
View File
@@ -8,6 +8,35 @@
## Не выпущено
## v1.69.0 — 2026-08-30
- House Plan заговорил по-немецки и по-французски, редакторы больше не входят в
начальную загрузку View, а режим **«Значение + состояние»** позволяет выбрать
точный источник показания. Внешние клиенты теперь обязаны передавать
`expected_rev` при записи в непустое хранилище конфигурации или раскладки
([#348](https://github.com/Matysh/houseplan-card/issues/348),
[#371](https://github.com/Matysh/houseplan-card/issues/371),
[#337](https://github.com/Matysh/houseplan-card/issues/337),
[#378](https://github.com/Matysh/houseplan-card/issues/378),
[#340](https://github.com/Matysh/houseplan-card/issues/340)).
- Редактор подложки получил 56 типов мебели, живое превью размещения,
безопасное уменьшение огромных изображений, пассивные ориентиры устройств и
единый сохраняемый стиль по умолчанию для новых элементов
([#159](https://github.com/Matysh/houseplan-card/issues/159),
[#359](https://github.com/Matysh/houseplan-card/issues/359),
[#39](https://github.com/Matysh/houseplan-card/issues/39),
[#362](https://github.com/Matysh/houseplan-card/issues/362),
[#360](https://github.com/Matysh/houseplan-card/issues/360),
[#377](https://github.com/Matysh/houseplan-card/issues/377)).
- Glow теперь следует за живой геометрией дверей и ворот и может быть включён в
`houseplan-space-card`, где также появились плотное кадрирование по дому и
кэшированный рендеринг света
([#20](https://github.com/Matysh/houseplan-card/issues/20),
[#374](https://github.com/Matysh/houseplan-card/issues/374),
[#373](https://github.com/Matysh/houseplan-card/issues/373),
[#375](https://github.com/Matysh/houseplan-card/issues/375)).
- Мелкие исправления и улучшения.
## v1.69.0-beta.5 — 2026-08-29
- В режиме **«Значение + состояние»** теперь можно выбрать нужный показатель,
+9 -9
View File
@@ -1,18 +1,18 @@
<!-- release: v1.69.0-beta.5 -->
<!-- release: v1.69.0 -->
## Основное
- `houseplan-space-card` получила плотное кадрирование по конструкции дома, а её Glow больше не пересобирает сцену с нуля на каждый тик Home Assistant ([#373](https://github.com/Matysh/houseplan-card/issues/373), [#375](https://github.com/Matysh/houseplan-card/issues/375)).
- Цвет и стиль по умолчанию для новых элементов подложки теперь сохраняются вместе с планом и переживают перезагрузку ([#377](https://github.com/Matysh/houseplan-card/issues/377)).
- В режиме «Значение + состояние» можно выбрать точный источник показания — например, позицию шторы `42 %` вместо её текстового состояния ([#378](https://github.com/Matysh/houseplan-card/issues/378)).
- House Plan заговорил по-немецки и по-французски, редакторы больше не входят в начальную загрузку View, а для «Значение + состояние» можно выбрать точный источник. Внешние клиенты теперь передают `expected_rev` при записи в непустые хранилища ([#348](https://github.com/Matysh/houseplan-card/issues/348), [#371](https://github.com/Matysh/houseplan-card/issues/371), [#337](https://github.com/Matysh/houseplan-card/issues/337), [#378](https://github.com/Matysh/houseplan-card/issues/378), [#340](https://github.com/Matysh/houseplan-card/issues/340)).
- Редактор подложки получил 56 типов мебели, живое превью размещения, безопасное уменьшение огромных изображений, пассивные ориентиры устройств и сохраняемый стиль по умолчанию ([#159](https://github.com/Matysh/houseplan-card/issues/159), [#359](https://github.com/Matysh/houseplan-card/issues/359), [#39](https://github.com/Matysh/houseplan-card/issues/39), [#362](https://github.com/Matysh/houseplan-card/issues/362), [#360](https://github.com/Matysh/houseplan-card/issues/360), [#377](https://github.com/Matysh/houseplan-card/issues/377)).
- Glow теперь следует за живой геометрией дверей и ворот и может быть включён в `houseplan-space-card`, где также появились плотное кадрирование по дому и кэшированный рендеринг света ([#20](https://github.com/Matysh/houseplan-card/issues/20), [#374](https://github.com/Matysh/houseplan-card/issues/374), [#373](https://github.com/Matysh/houseplan-card/issues/373), [#375](https://github.com/Matysh/houseplan-card/issues/375)).
- Мелкие исправления и улучшения.
## Highlights
- `houseplan-space-card` now offers tight whole-house framing, while its Glow no longer rebuilds the scene from scratch on every Home Assistant tick ([#373](https://github.com/Matysh/houseplan-card/issues/373), [#375](https://github.com/Matysh/houseplan-card/issues/375)).
- The default colour and style for new Background objects are now stored with the plan and survive a reload ([#377](https://github.com/Matysh/houseplan-card/issues/377)).
- **Value + state** can use an exact reading source — for example, a cover position of `42 %` instead of its textual state ([#378](https://github.com/Matysh/houseplan-card/issues/378)).
- House Plan now speaks German and French, keeps editors outside the initial View download, and lets **Value + state** select an exact reading source. External writers now send `expected_rev` when updating non-empty stores ([#348](https://github.com/Matysh/houseplan-card/issues/348), [#371](https://github.com/Matysh/houseplan-card/issues/371), [#337](https://github.com/Matysh/houseplan-card/issues/337), [#378](https://github.com/Matysh/houseplan-card/issues/378), [#340](https://github.com/Matysh/houseplan-card/issues/340)).
- The Background editor gained 56 furniture types, a live placement preview, safe huge-image reduction, passive device landmarks, and a persistent default style ([#159](https://github.com/Matysh/houseplan-card/issues/159), [#359](https://github.com/Matysh/houseplan-card/issues/359), [#39](https://github.com/Matysh/houseplan-card/issues/39), [#362](https://github.com/Matysh/houseplan-card/issues/362), [#360](https://github.com/Matysh/houseplan-card/issues/360), [#377](https://github.com/Matysh/houseplan-card/issues/377)).
- Glow now follows live door and gate geometry and can be enabled in `houseplan-space-card`, which also offers tight whole-house framing and cached light rendering ([#20](https://github.com/Matysh/houseplan-card/issues/20), [#374](https://github.com/Matysh/houseplan-card/issues/374), [#373](https://github.com/Matysh/houseplan-card/issues/373), [#375](https://github.com/Matysh/houseplan-card/issues/375)).
- Small fixes and improvements.
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.69.0-beta.5/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.69.0-beta.5/docs/CHANGELOG.md)
[Полный список изменений на русском](https://github.com/Matysh/houseplan-card/blob/v1.69.0/docs/CHANGELOG.ru.md)
· [Full changelog in English](https://github.com/Matysh/houseplan-card/blob/v1.69.0/docs/CHANGELOG.md)
+3 -3
View File
@@ -17,12 +17,12 @@ change must pass through a published beta/RC before stable. Stable release
commits are promotion-only (versions, generated bundles and release/changelog
metadata). Only an explicit owner-approved emergency hotfix may skip this gate.
## Snapshot (2026-08-29)
## Snapshot (2026-08-30)
| Item | State |
|---|---|
| Version | **v1.69.0-beta.5 candidate** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.68.1 is the current stable release. v1.69.0-beta.5 packages the reviewed `S8-merged` work since beta.4: tighter whole-house framing and cached Glow in `houseplan-space-card` (#373, #375), persistent Background default style (#377), the beta.4 audit polish (#376), and an explicit source selector for the Value + state face (#378). Publication remains gated by exact-SHA Validate. |
| Version | **v1.69.0** everywhere (manifest, const.py, package.json, CARD_VERSION) |
| Current local cycle | v1.69.0 is the stable promotion of the published beta.1–beta.5 line: German and French localization, editors outside the initial View graph, 56 furniture types and the expanded Background workflow, live-opening Glow plus opt-in Glow/house framing in `houseplan-space-card`, and an explicit source selector for Value + state. The stable promotion contains no new product behaviour and remains gated by the complete local suite plus exact-SHA Validate and Full Performance. |
| Hidden Labs Stage | #89 Stage 1 ships in v1.63.0-beta.1. #122 Stage 2 ships in v1.64.0 and evolves the same hidden, expiring `iso` experiment with matte walls, a low exterior floor edge, restrained shared shadows and live vertical door/window/gate panels. Flat remains default; editors and `houseplan-space-card` remain flat; live floor effects and HA actions remain unchanged. Public activation remains a separate task. |
| Workflow | Superseded 2026-08-12: the pre-1.62 rule of "local edits without tests or commits" is **dead** — since release 1.62 every product change follows `PROCESS.md` (issue in `S5-ready`+, branch `issue/<NN>-slug`, trailers on every commit, review pipeline; `AGENTS.md` is the summary). Release mechanics below remain current. A requested pre-release gets a production build plus the smallest targeted unit/smoke set covering the changed surfaces, one tested `dev` commit/tag and a GitHub Release with `prerelease=true`; `main` stays untouched. The complete local frontend/backend/smoke gate runs only before a stable release, after which `main` is fast-forwarded to the exact tested `dev` SHA and the GitHub Release uses `prerelease=false`. Release bodies are short and bilingual (Russian first); every bullet links its GitHub issue (#NN) so the #328 rules stay machine-checkable. A STABLE body aggregates the changelog since the PREVIOUS STABLE release (never since the last beta): features/fixes described across the line's beta changelogs must appear, while bugs that were introduced and fixed strictly inside the beta line (never shipped in any stable) are excluded — draft with `npm run release:notes -- <tag>`, curate by hand, then `npm run release:notes -- <tag> --verify` must pass. `Мелкие исправления и улучшения` / `Small fixes and improvements` is allowed only when the range really contains user-visible work not itemised in the body; a single-issue hotfix ships without it (the verifier enforces this). Every body ends with separate links to the Russian and English changelogs. Open or partially delivered issues are never presented as shipped. Telegram announcements are sent only for stable releases; beta and RC publication is silent. `docs/RELEASE-NOTES.md` is the current canonical body instance; `npm run release:prerelease -- <tag> --issues=… --yes` is the primary local publication path and the manual `Publish prerelease` workflow is its GitHub-only equivalent once present on `main`. Nothing is copied to the home instance by hand |
| GitHub | https://github.com/Matysh/houseplan-card — [Issues](https://github.com/Matysh/houseplan-card/issues) are the canonical task records; their labels carry priority and workflow status (`PROCESS.md` §9). GitHub Projects is no longer used. `main` carries stable releases; pre-release tags may point directly at `dev`. Work lands on `dev` and is merged into `main` for a stable release, so `dev` is normally equal to or ahead of `main`, never behind. Push via SSH key `ha_jb` (remote git@github.com:…); API releases via the fine-grained PAT in `~/.git-credentials` (Contents R/W, issued 2026-07-23) |
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "houseplan-card",
"version": "1.69.0-beta.5",
"version": "1.69.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "houseplan-card",
"version": "1.69.0-beta.5",
"version": "1.69.0",
"license": "MIT",
"dependencies": {
"lit": "^3.1.3",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "houseplan-card",
"version": "1.69.0-beta.5",
"version": "1.69.0",
"description": "Interactive house plan Lovelace card for Home Assistant",
"license": "MIT",
"type": "module",
+1 -1
View File
@@ -347,7 +347,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.69.0-beta.5';
const CARD_VERSION = '1.69.0';
const ENTRY_BUILD_FINGERPRINT = '__HOUSEPLAN_SOURCE_FINGERPRINT__';
const EDITOR_RETRY_ASSET = '__HOUSEPLAN_EDITOR_RETRY_ASSET__';
+1 -1
View File
@@ -337,7 +337,7 @@ import {
} from './space-order';
import { applyOpeningMoves, mergeCollinearPartitions, spaceMergeGeometry } from './wall-merge';
const CARD_VERSION = '1.69.0-beta.5';
const CARD_VERSION = '1.69.0';
type ResizeLiveLabel = {
kind: 'length';