feat: add configurable summary panel (#437)

Issue: #437
User-Visible: yes
This commit is contained in:
Sergey Matyunin
2026-09-08 18:49:36 +03:00
parent 7dbb6c8e72
commit 96e07b9a02
77 changed files with 3980 additions and 425 deletions
+8 -1
View File
@@ -176,8 +176,15 @@ export const LOW_HEADROOM_WARNING_BYTES = 15_000;
* renderer'ам до загрузки редактора: именно они меняют температурную заливку
* обычного и статичного плана. Измеренный факт 290 937 Б оставляет 563 Б
* сверху и 1 437 Б до нижней границы полосы; UI и writer остались в lazy editor.
*
* 2026-09-08, #437: потолок перецентрирован 291 500 → 292 000. Весь runtime
* сводной панели, её CSS, четыре словаря, форма и расчёт агрегатов вынесены в
* ленивые чанки; в initial View остались только точка динамической загрузки,
* capability и narrow bridge, без которых панель нельзя безопасно запустить.
* Измеренный факт 291 219 Б оставляет 781 Б сверху и 1 219 Б снизу; общий
* бюджет 301 066 Б не меняется.
*/
export const INITIAL_VIEW_GZIP_CEILING = 291_500;
export const INITIAL_VIEW_GZIP_CEILING = 292_000;
export const INITIAL_VIEW_CEILING_BAND = 2_000;
/**
+15
View File
@@ -7,6 +7,21 @@
* field whose key is still current but whose old value is compatibility-only.
*/
export const CONFIG_FIELD_REGISTRY = Object.freeze([
{
id: 'settings.summary_panel',
enforcedBy: 'summary-panel.ts + validation.py change-aware reference validation; #437',
selector: { path: ['settings', 'summary_panel'] },
storage: 'House Plan server config',
type: '{ version: 1, title, show_on_mobile, blocks[] } | bounded future object',
default: 'unset (= localized read-only defaults; no server write)',
level: 'global shared presentation',
ui: 'View → Summary panel settings',
runtime: 'read-only screen-space overlay; HA entity values remain runtime-only',
introduced: '#437 / v1.73.0',
status: 'current',
migration: 'none — omission derives defaults; explicit empty blocks remain empty',
compatibility: 'older ordinary config/set preserves the namespace; future versions stay opaque and inert',
},
{
id: 'card.tap_action',
schema: 'lovelace-card', // #33: Lovelace card option — not in the backend manifest by design
+13
View File
@@ -420,6 +420,19 @@
"required": false,
"type": "bool"
},
"config.settings.summary_panel": {
"required": false,
"variants": [
{
"allowExtra": true,
"object": true,
"opaque": "<function _summary_panel_invariants>"
},
{
"opaque": "<function _future_summary_panel>"
}
]
},
"config.settings.sun_rays": {
"required": false,
"type": "bool"