mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-06 22:49:16 +00:00
Keep the day-cycle outline on its own compositing layer
The "Follows the sun" background made the plan crawl in Firefox: 23 MB of textures per frame, sixteen of about twenty picture-cache tiles thrown away every frame, nine frames per second. The card's own JavaScript was idle for 89 % of that. The cost is the outer outline. It is a triple drop-shadow over the grouped paper footprint, and although the group holds paper silhouettes only and never changes on hover or pan, the filter lived in the plan's own layer — so every repaint of the plan re-ran three blur passes over the whole sheet. One hint moves the filtered paper into its own layer and unhooks it from the plan's repaints. Measured on a demo-stand pan (Chromium, CDP, summed RasterTask): 1456.6 ms against a static background's 96.7 ms before, 84.7 ms against 103.2 ms after. The new smoke measures that ratio and fails above two. The picture does not change: the outline outside the plan matches byte for byte and the frame's mean colour moves from 176.59 to 176.66 of 255. Splitting the layer does move the remaining content onto a different sub-pixel grid, so the diagonal wall hatch anti-aliases differently and the four day-cycle baselines are re-taken on the beta candidate. Issue: #532 User-Visible: yes
This commit is contained in:
@@ -2,6 +2,14 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
- The “Follows the sun” background no longer slows the plan down. The plan's
|
||||
outer outline is a blur over the whole sheet, and it lived in the same layer
|
||||
as the plan: any mouse movement made the engine re-run it. The outline now
|
||||
keeps its own layer. Measured on a demo-stand pan, rasterization fell from
|
||||
fifteen times a static background to the same order as one. The picture is
|
||||
unchanged, to the pixel
|
||||
([#532](https://github.com/Matysh/houseplan-card/issues/532)).
|
||||
|
||||
## v1.74.0 — 2026-09-11
|
||||
|
||||
- The plan is noticeably smoother, and in Firefox the difference is dramatic.
|
||||
|
||||
@@ -8,6 +8,14 @@
|
||||
|
||||
## Не выпущено
|
||||
|
||||
- Фон «Следует за Солнцем» больше не замедляет план. Внешний контур плана —
|
||||
это размытие по габариту всего листа, и оно жило в общем слое с планом: любое
|
||||
движение мыши заставляло движок прогонять его заново. Теперь контур держится
|
||||
отдельным слоем. Замер на панораме демо-стенда: растеризация упала с
|
||||
пятнадцатикратной к статичному фону до сопоставимой с ним. Картинка
|
||||
не изменилась ни на пиксель
|
||||
([#532](https://github.com/Matysh/houseplan-card/issues/532)).
|
||||
|
||||
## v1.74.0 — 2026-09-11
|
||||
|
||||
- План стал заметно плавнее, а в Firefox разница разительная. Перетаскивание
|
||||
|
||||
@@ -75,6 +75,13 @@ The public setting remains a two-value selector. `static` uses `bg_color`.
|
||||
05:00→13:00→21:00 fallback arc. It has zero visible opacity at night.
|
||||
- Four constant environment layers cross-fade for exactly 1100 ms with
|
||||
`cubic-bezier(.22,.61,.36,1)`. Reduced motion disables the transition.
|
||||
- The zero-offset outline is a filter over the grouped paper footprint, so it
|
||||
is kept on its own compositing layer (`will-change: filter`, scoped to the
|
||||
day-cycle stage). The group holds paper silhouettes only and does not change
|
||||
while the plan is hovered or panned; without the hint every repaint of the
|
||||
plan re-ran three blur passes over the whole sheet, which cost a Firefox
|
||||
window about fifteen times the rasterization of a static background (#532).
|
||||
A static background carries neither the filter nor the hint.
|
||||
- Only the environment and the zero-offset alpha-aware outline outside the
|
||||
grouped plan-paper footprint change. The plan, paper, floors, room fills,
|
||||
Glow/spill, devices, labels, decor/backdrop, vacuum, hover, and window rays
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"fixture": "synthetic-only",
|
||||
"chromium": "151.0.7922.34",
|
||||
"oxipng": "oxipng 10.2.0",
|
||||
"sourceFingerprint": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceFingerprint": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"captureScriptSha256": "9e4b0ae533407fe003a129078aec020f2c83d67cdb6fc6da696ce3d829beaeb5",
|
||||
"command": "npm run build && node demo/docs/capture.mjs",
|
||||
"scenarios": {
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "76c35a87810e3dc6890bda7b43da133f57d8860031204a62cda7115c15950090"
|
||||
},
|
||||
"view-touch": {
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "795585acb09488236ebb8028a7fcbd918404c5fe01560bb9b4559de13d441625"
|
||||
},
|
||||
"space-create": {
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "9f0970de09772674c3156b9fc5b2d49de0ceb22be11ecf8b136047d37d100a84"
|
||||
},
|
||||
"room-contour-close": {
|
||||
@@ -48,7 +48,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "0c354a79f9c3660788b6c5e889a27b6bd78b1f209dc0eef6bb43e2c1344028c4"
|
||||
},
|
||||
"plan-context-tray": {
|
||||
@@ -59,7 +59,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "64169c543291bc4df806dcf8ff484b42c8ea55eb343323d945344e0e28f2ce97"
|
||||
},
|
||||
"device-editor": {
|
||||
@@ -70,7 +70,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "3c8703175605fcf0387d654cd30783ecfd33e21743e70b45190a5ae1a8d355c2"
|
||||
},
|
||||
"device-display-preview": {
|
||||
@@ -81,7 +81,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "5d6193202102f5e6d85567f1111fa105895b933979fbf369c6ba0b1029deb823"
|
||||
},
|
||||
"background-editor": {
|
||||
@@ -92,7 +92,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "375900a29aa62632883ede6727b7dbb8b48cabe9d7d0e16425f9779c837f3dd9"
|
||||
},
|
||||
"room-card": {
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "3d85424676c823ddca3fa7dab3cce089b6030e48c05d16d2d48d922c66c0cbd2"
|
||||
},
|
||||
"device-info": {
|
||||
@@ -114,7 +114,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "ac962820f8e1c5cb5b042d39b18dc95905fa840cb2d4749060d991be4f6977c2"
|
||||
},
|
||||
"pdf-export": {
|
||||
@@ -125,7 +125,7 @@
|
||||
},
|
||||
"theme": "light",
|
||||
"language": "en",
|
||||
"sourceSha256": "45f506aca7baceaa68ed03b4a7d97f05c8c22c42976287b6f3b42274f0122327",
|
||||
"sourceSha256": "1a0b29e3e36eba71bc42630eceef108cf9a9bc82cc78aa7d1d047144086ae4f6",
|
||||
"imageSha256": "4537692fd57a3ed95528eddd748eee5cb6e456ffab7cc49169853d62459252cd"
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user