mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 19:58:50 +00:00
docs: ленивый арт мебели — ARCHITECTURE, FURNITURE, отпечаток скриншотов
Issue: #474 User-Visible: no
This commit is contained in:
@@ -49,8 +49,8 @@ const demoHtml = (withFurniture, twoCards) => {
|
||||
|
||||
const run = async ({ furniture, twoCards = false, chunk = 'serve', delayMs = 0 }) => {
|
||||
const browser = await chromium.launch({ args: ['--no-sandbox'] });
|
||||
const page = await (await browser.newContext({ viewport: { width: 820, height: 760 } })).newPage();
|
||||
watchPage(page);
|
||||
const ctx = await browser.newContext({ viewport: { width: 820, height: 760 } });
|
||||
const page = watchPage(await ctx.newPage());
|
||||
const requests = [];
|
||||
let artRequests = 0;
|
||||
await page.route('**/*', async (route) => {
|
||||
|
||||
@@ -28,6 +28,7 @@ houseplan-card/
|
||||
│ ├─ decor-image-editor.ts # lazy Background/Furniture image palette, upload and properties controller
|
||||
│ ├─ houseplan-onboarding-runtime.ts # first-space/import dialogs, independent of editor
|
||||
│ ├─ iso-scene-render.ts # hidden alpha-only Stage 3 scene/runtime boundary
|
||||
│ ├─ furniture-art-runtime.ts # page-scoped lazy designer furniture artwork (ready/pending/fallback)
|
||||
│ ├─ iso-overlays.ts # pure raised-overlay ownership, collision and nudge
|
||||
│ ├─ hp-dialog.ts # shared HA/native modal shell, focus and transient-overlay lifecycle
|
||||
│ ├─ hp-confirm.ts # presentation for shared dangerous-action confirmation
|
||||
@@ -184,6 +185,14 @@ the same profiler available between stable promotions.
|
||||
start. Two failed content-hashed attempts settle on English rather than
|
||||
leaving an inert surface. The bundle manifest classifies this graph as
|
||||
`lazyLocaleFiles`, separate from editor and onboarding graphs.
|
||||
Designer furniture artwork follows the same shape (#474): the catalogue
|
||||
(ids, groups, default sizes) stays eager, the 44 SVG drawings live in
|
||||
`lazyFurnitureArtFiles` behind `FURNITURE_ART_RUNTIME`. Plan intake starts
|
||||
the load only when the plan draws a designer piece, the boot veil holds
|
||||
until the runtime settles (within the veil's hard cap), the editor imports
|
||||
the drawings statically and hands them over synchronously (`adopt`), and
|
||||
two failed content-hashed attempts — or a chunk from another build — settle
|
||||
into `fallback`: pieces render as unknown symbols and one toast is shown.
|
||||
8. **One four-phase environment resolver.** `resolveDayCycle()` in `src/sun.ts`
|
||||
atomically chooses a strict real `sun.sun` sample or browser-local clock
|
||||
fallback and returns only phase/source/light tokens. `src/day-cycle-render.ts`
|
||||
|
||||
+11
-2
@@ -35,7 +35,11 @@ npm run furniture:check
|
||||
|
||||
The generator validates a deliberately small, inert SVG subset and produces:
|
||||
|
||||
- `src/furniture-plan-art.generated.ts` for the initial View graph;
|
||||
- `src/furniture-plan-catalog.generated.ts` — ids, groups, categories and
|
||||
default sizes; the only part of the pack in the initial View graph;
|
||||
- `src/furniture-plan-art.generated.ts` — the 44 top-view drawings, a lazy
|
||||
chunk (#474) loaded by `src/furniture-art-runtime.ts` when a plan draws a
|
||||
designer piece and imported statically by the editor;
|
||||
- `src/furniture-menu-art.generated.ts` for the lazy editor graph only.
|
||||
|
||||
Generated files are never edited manually. The 77 drawings were created by
|
||||
@@ -134,7 +138,12 @@ ids preserve their identity; the remaining old ids remain available. Default
|
||||
dimensions change only for a newly picked replacement—an already saved
|
||||
object's `w` and `h` are never rewritten.
|
||||
|
||||
Plan artwork is available in View and kiosk. Front-view menu art is imported
|
||||
Plan artwork is available in View and kiosk: a plan with designer furniture
|
||||
requests the artwork chunk once per page before its first frame, and the
|
||||
first-open veil waits for it; a plan without furniture never requests it.
|
||||
If the chunk cannot be loaded, designer pieces render as unknown symbols —
|
||||
nothing — until the page reloads, and a toast says so once; the 12 retained
|
||||
primitive symbols draw regardless. Front-view menu art is imported
|
||||
only after the editor runtime is requested. Touch View/kiosk support is
|
||||
blocking; editor ergonomics on touch remain best effort under
|
||||
`docs/TOUCH-SUPPORT.md`.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"fixture": "synthetic-only",
|
||||
"chromium": "151.0.7922.34",
|
||||
"oxipng": "oxipng 10.2.0",
|
||||
"sourceFingerprint": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceFingerprint": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"captureScriptSha256": "cadb8e1bcab9f1dcdd7d75b3b90ddcbaaeb2b8c2a098f575a21f39ff70f5c59c",
|
||||
"command": "npm run build && node demo/docs/capture.mjs",
|
||||
"scenarios": {
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "80a70361dc18dd0461568df332062e6482c633af5d280954f8b675701418a76d"
|
||||
},
|
||||
"view-touch": {
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "4106cc28847047505f46921ff95765d8abdf5b382d9d17d4c5e4ad129dd8f6be"
|
||||
},
|
||||
"space-create": {
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "9f0970de09772674c3156b9fc5b2d49de0ceb22be11ecf8b136047d37d100a84"
|
||||
},
|
||||
"room-contour-close": {
|
||||
@@ -48,7 +48,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "1dab6cc3b9d1bf7d8c40f0e5137f8c688683c9b7eabc5167da99d41ecfdd5b79"
|
||||
},
|
||||
"plan-context-tray": {
|
||||
@@ -59,7 +59,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "94ef50762753c0ac6ddc84d2521c4232a3f9ecd89843810d2df61c517592bed7"
|
||||
},
|
||||
"device-editor": {
|
||||
@@ -70,7 +70,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "53bcd3dd041c8ddef7c2d5a9defc7ebfc10b296849dad0c2115603009c715f6b"
|
||||
},
|
||||
"device-display-preview": {
|
||||
@@ -81,7 +81,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "c797362e523e7ea42cab19e9e3dca374bce9e786cb84601993d235264b040d1e"
|
||||
},
|
||||
"background-editor": {
|
||||
@@ -92,7 +92,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "054170fd9ef45762b602b4d5c9c3b9ea9724858be61af137970c246f485c13bb"
|
||||
},
|
||||
"room-card": {
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "2ae4a58853d98e10d12456b2078ec2f6a0b597722c8310d7b016abd2bc42561e"
|
||||
},
|
||||
"device-info": {
|
||||
@@ -114,7 +114,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "8e63cfc0f990da55e9b9a9f6691503693d3b552dad77ee95a720df3aa16fc297",
|
||||
"sourceSha256": "3ff112535e9aec7c91d06a8d72af82d81b3b36956610469c572e505947b18b3b",
|
||||
"imageSha256": "aeeadb860404c3cbd130e858db6dd1d78b7001a6855405034a86959a9bc35669"
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user