Files
houseplan-card/dist/houseplan-assets.json
T
Codex 9d6ac98d3a fix: attach a warm summary runtime before the first render (#506)
Every card instance attached its summary-panel runtime through
import().then(), even when the chunk had loaded long ago. The first render
therefore measured a header without summary controls; the controls arrived
a beat later, the stage shrank, the deferred refit opened a `stage-resize`
continuity candidate and the first HA tick paid three extra render passes
(Full Performance: blend stateUpdate1 50 → 130 ms, overlay 217 → 809 ms;
locally 4 performUpdate per tick instead of 1).

summary-runtime-loader.ts separates the summary code from its state: the
loaded factory is cached per page, every host builds its own runtime from
it (no shared preferences, drafts, subscriptions, timers or DOM). A warm
factory yields the runtime synchronously in connectedCallback, before the
first Lit render; a cold mount still pays one lazy import, concurrent cold
mounts share the pending import, a failed import is forgotten so the next
connection retries, and a disconnect cancels the pending attachment of that
connection. SummaryRuntimeSlot owns the per-host lifecycle so the card core
stays under its line ceiling.

Witnesses: loader unit tests (distinct instances, shared pending import,
cancelled attachment, retry after failure); demo/smoke_summary_warm_attach
(warm replacement and cold-key instance on a warm page own the runtime
before the first render, header/stage stable from the first frame, no
stage-resize, one performUpdate per geometry-neutral tick, a real viewport
resize still opens stage-resize); mutant summary-runtime-attaches-after-
first-render. smoke_summary_panel waited for `_summary` as a readiness
proxy; it now waits for the server config load, which stays asynchronous.

Local paired glow benchmarks (4× CPU throttle): blend 159.7 → 49.9 ms and
overlay 326.7 → 120.4 ms at stateUpdate1 with renders 4 → 1; the isometric
load loses the three summary-owned long tasks.

Docs screenshots: all 11 frames decode pixel-identical to the committed
ones; the manifest carries only the new source fingerprint. Initial View
ceiling recentred 299 100 → 299 600 for the +299 B loader.

Issue: #506
User-Visible: yes
2026-09-09 13:57:53 +03:00

315 lines
10 KiB
JSON

{
"schema": 1,
"fingerprint": "95d32c120d1ca37feb5a930e4a20e5ec2c460f82a52d88a41fe0d143f697ae74",
"entry": "houseplan-card.js",
"panelEntry": "houseplan-panel.js",
"initialViewFiles": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-card.js"
],
"initialViewGzipBytes": 298891,
"initialPanelFiles": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-card.js",
"houseplan-panel.js"
],
"initialPanelGzipBytes": 301193,
"initialPanelOnlyFiles": [
"houseplan-panel.js"
],
"initialPanelOnlyGzipBytes": 2302,
"lazyFiles": [
"houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"houseplan-assets/de-IBWzSVOj.js",
"houseplan-assets/editor-DKd1NGbT.js",
"houseplan-assets/fr-T10CV6-a.js",
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/guard-7S6iRB0N.js",
"houseplan-assets/houseplan-editor-runtime-DJMGYUqW.js",
"houseplan-assets/houseplan-onboarding-runtime-Cdd3N5hN.js",
"houseplan-assets/hp-zigbee-topology-overlay-HyXCDpzQ.js",
"houseplan-assets/iso-scene-render-miMf0jvt.js",
"houseplan-assets/live-interaction-runtime-Dahsj-4y.js",
"houseplan-assets/pdf-export-DpHlViMV.js",
"houseplan-assets/summary-panel-runtime-loaded-2X-IAkWu.js",
"houseplan-assets/zigbee-topology-DOkBU6gZ.js",
"houseplan-assets/zigbee-topology-runtime-CiDfY5zA.js"
],
"lazyGzipBytes": 417329,
"lazyEditorFiles": [
"houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"houseplan-assets/editor-DKd1NGbT.js",
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/guard-7S6iRB0N.js",
"houseplan-assets/houseplan-editor-runtime-DJMGYUqW.js",
"houseplan-assets/zigbee-topology-DOkBU6gZ.js"
],
"lazyEditorGzipBytes": 205633,
"lazyOnboardingFiles": [
"houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"houseplan-assets/houseplan-onboarding-runtime-Cdd3N5hN.js"
],
"lazyOnboardingGzipBytes": 14148,
"lazyLocaleFiles": [
"houseplan-assets/de-IBWzSVOj.js",
"houseplan-assets/fr-T10CV6-a.js"
],
"lazyLocaleGzipBytes": 54843,
"lazyIsometricFiles": [
"houseplan-assets/guard-7S6iRB0N.js",
"houseplan-assets/iso-scene-render-miMf0jvt.js"
],
"lazyIsometricGzipBytes": 13452,
"lazyFurnitureArtFiles": [
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js"
],
"lazyFurnitureArtGzipBytes": 10253,
"lazyPdfFiles": [
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/pdf-export-DpHlViMV.js"
],
"lazyPdfGzipBytes": 120367,
"files": [
{
"path": "houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"sha256": "a4abe8807d8c404a7ce9f65b0a72ca3d8f8d4d5bf38fa8220915818f9238c0db",
"rawBytes": 21134,
"gzipBytes": 7144,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/de-IBWzSVOj.js",
"sha256": "cf031fb380b4b056c116e14a8cb26729ae4d0b275991b07989917f884f8841ff",
"rawBytes": 91441,
"gzipBytes": 27705,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/editor-DKd1NGbT.js",
"sha256": "e62e388db3b39eaa5f0e8f9b9676b7a6e30c453f84d22d530740f9be093512d1",
"rawBytes": 3837,
"gzipBytes": 1585,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/fr-T10CV6-a.js",
"sha256": "b602e1137a8395f963be744ed43d2054e472093502f687e40e6bd3e7a25a8794",
"rawBytes": 93719,
"gzipBytes": 27138,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"sha256": "1e26cad8d04b459f4b1140e705a02a1d380b8c49a84f92b8ea2ce3e684544800",
"rawBytes": 33655,
"gzipBytes": 10253,
"isEntry": false,
"imports": [],
"dynamicImports": []
},
{
"path": "houseplan-assets/guard-7S6iRB0N.js",
"sha256": "67f95421a21516a66157d8fdc0129c2d1280cee31a3621a81039c88835d1c0f8",
"rawBytes": 518,
"gzipBytes": 368,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/houseplan-card-Bj6mVEeM.js",
"sha256": "dea85ab6dfeebcb263bd672270041e34473d40b9db24e69259e55d42e5ff44d4",
"rawBytes": 1076387,
"gzipBytes": 298088,
"isEntry": false,
"imports": [],
"dynamicImports": [
"houseplan-assets/de-IBWzSVOj.js",
"houseplan-assets/editor-DKd1NGbT.js",
"houseplan-assets/fr-T10CV6-a.js",
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/houseplan-editor-runtime-DJMGYUqW.js",
"houseplan-assets/houseplan-onboarding-runtime-Cdd3N5hN.js",
"houseplan-assets/hp-zigbee-topology-overlay-HyXCDpzQ.js",
"houseplan-assets/iso-scene-render-miMf0jvt.js",
"houseplan-assets/live-interaction-runtime-Dahsj-4y.js",
"houseplan-assets/pdf-export-DpHlViMV.js",
"houseplan-assets/summary-panel-runtime-loaded-2X-IAkWu.js"
]
},
{
"path": "houseplan-assets/houseplan-editor-runtime-DJMGYUqW.js",
"sha256": "bc5163222924f68e6279b412b16a53f28a76b5b4d80d4a03e7fe28c4cce77a39",
"rawBytes": 671972,
"gzipBytes": 178859,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/guard-7S6iRB0N.js",
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-assets/zigbee-topology-DOkBU6gZ.js"
],
"dynamicImports": [
"houseplan-assets/zigbee-topology-runtime-CiDfY5zA.js"
]
},
{
"path": "houseplan-assets/houseplan-onboarding-runtime-Cdd3N5hN.js",
"sha256": "31ea22267928606938b34c47f1ac8ecc2041048bc8c045a411d7108d353de849",
"rawBytes": 28237,
"gzipBytes": 7004,
"isEntry": false,
"imports": [
"houseplan-assets/backdrop-pick-CXOE1u8Z.js",
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/hp-zigbee-topology-overlay-HyXCDpzQ.js",
"sha256": "0e18deb183cb473c2a96fb689c91c68a3729b8ad56fb8907b01c30810585dbec",
"rawBytes": 11034,
"gzipBytes": 3731,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-assets/zigbee-topology-DOkBU6gZ.js",
"houseplan-assets/zigbee-topology-runtime-CiDfY5zA.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/iso-scene-render-miMf0jvt.js",
"sha256": "00fd101b4e5469f6d289b77eab3056bedf98082520af9139a1afff5823fcb025",
"rawBytes": 38562,
"gzipBytes": 13084,
"isEntry": false,
"imports": [
"houseplan-assets/guard-7S6iRB0N.js",
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/live-interaction-runtime-Dahsj-4y.js",
"sha256": "631b277aae71d9977fabb3f330c4a9cdf38e47ec51259584540b747d9c9444df",
"rawBytes": 5196,
"gzipBytes": 2124,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/pdf-export-DpHlViMV.js",
"sha256": "48b07b9ecfbbf2c1a8de53edce8bc32b1217e2c2f20eb5ceb24af75999870d8a",
"rawBytes": 237254,
"gzipBytes": 110114,
"isEntry": false,
"imports": [
"houseplan-assets/furniture-plan-art.generated-C-yj8ZTi.js",
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-editor-DOpNDtK_.js",
"sha256": "4ed28cc81b7f0ccac46e0fb6ac37856ddbdf7813040585447089bf4a0a61805f",
"rawBytes": 14811,
"gzipBytes": 3390,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-assets/summary-panel-runtime-loaded-2X-IAkWu.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-metrics-DXF83oAy.js",
"sha256": "51953d004b76561a842f67b9455985cceac2663c52499d1e1acc3a3cdfdaded9",
"rawBytes": 2195,
"gzipBytes": 1121,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/summary-panel-runtime-loaded-2X-IAkWu.js",
"sha256": "7598bcc5d26d8d2f9a15cc154c32a0b836ba0ac53b7b5f9b65f3c2c2bc0287d1",
"rawBytes": 69530,
"gzipBytes": 19034,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": [
"houseplan-assets/summary-panel-editor-DOpNDtK_.js",
"houseplan-assets/summary-panel-metrics-DXF83oAy.js"
]
},
{
"path": "houseplan-assets/zigbee-topology-DOkBU6gZ.js",
"sha256": "0176688590ae76a8766ee735de892e37f29211a042c27f5a2992eda0cc8ef8d9",
"rawBytes": 18961,
"gzipBytes": 7424,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-assets/zigbee-topology-runtime-CiDfY5zA.js",
"sha256": "6b43a567d3686249519d43ef6f04bb9596529d99d04f745944c0e561c0e3034e",
"rawBytes": 3941,
"gzipBytes": 1762,
"isEntry": false,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js",
"houseplan-assets/zigbee-topology-DOkBU6gZ.js"
],
"dynamicImports": []
},
{
"path": "houseplan-card.js",
"sha256": "b8095427f52e7413e84d3202953d15765fbd43d4536226beff01ba7ff692ae2e",
"rawBytes": 1205,
"gzipBytes": 803,
"isEntry": true,
"imports": [
"houseplan-assets/houseplan-card-Bj6mVEeM.js"
],
"dynamicImports": []
},
{
"path": "houseplan-panel.js",
"sha256": "f0a1709a58213029c08e73da2ed81b217827c8f5cdbf96e082385cfb608eabcc",
"rawBytes": 6124,
"gzipBytes": 2302,
"isEntry": true,
"imports": [
"houseplan-card.js"
],
"dynamicImports": []
}
]
}