mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-06 14:39:22 +00:00
While an opening is dragged along a wall, a measure badge sits on the middle of EACH shoulder: the along-the-wall distance from the wall end to the nearest opening edge, live (segmentCm/formatLength, so metric/imperial and cell_cm are honoured). Collinear touching room edges count as ONE physical wall — a user thinks in whole walls, not the fragments roomEdges derives. When the opening's center reaches the wall's center (±half a grid step) a perpendicular dashed tick (alignment-guide look) appears through the wall center and the center magnet-snaps; Shift disables the magnet. Everything vanishes on release. Angled walls work: distances run along the wall, the tick is perpendicular. - src/logic.ts: openingShoulders() — pure shoulder/centered math (unit-tested) - src/houseplan-card.ts: _opMeasure state fed by _opPointerMove, badge layer next to the resize badges, _renderOpeningCenterTick in the SVG - demo/smoke_opening_measure.mjs: real-pointer drag; numbers checked against the demo geometry (4.56/5.52 m, 5.04/5.04 m at center), magnet == 0.5, Shift keeps 0.4987, everything gone after drop (was red without the feature) - docs/TESTING.md: checklist line
Synthetic demo home
A fully fictional house (plans, devices, states) used for README screenshots, the demo GIF and headless smoke tests — so no real home data ever appears in public materials.
srv/demo.html— self-contained host page:<ha-icon>/<ha-card>stubs and a fakehass(registries, states,callWS,callService, floors).srv/assets/— generated plan SVGs andicons.js(node demo/gen_icons.mjs, needs the repo's devDependencies). The card bundle is copied fromdist/:cp dist/houseplan-card.js demo/srv/assets/.serve.mjs— playwright launcher (route interception, no web server).smoke_*.mjs— feature smoke tests; run with a Chromium installed viaPLAYWRIGHT_BROWSERS_PATH=<dir> npx playwright install chromium-headless-shell.
Note for sandboxed sessions: /tmp does not survive; this directory is the
persistent home of the harness (docs/DEVELOPMENT.md has the LD_LIBRARY_PATH recipe).