Count delivered page errors after awaited browser close. Exercise the public harness lifecycle with deterministic negative subprocess cases and retain the unchanged Chromium probes for the real transport. Move the premature-snapshot mutation witness to the deterministic Node suite. Issue: #776 User-Visible: no
7.7 KiB
Project status
The current state for a resuming session: a generated snapshot, the current cycle and the standing decisions that explain it. Rules are not here — the process is
PROCESS.md, release mechanics aredocs/DEVELOPMENT.md› Release, and task scope and status live in GitHub Issues and their labels. The snapshot below is generated — never edit it by hand; the prose sections after it are edited by hand, a row in the same commit as the change it describes (PROCESS.md§2.6).
Snapshot
Everything computable from the tree and git; regenerate, never edit by hand (#634). Workflow status is not here — it lives only in issue labels.
| Item | State |
|---|---|
| Generated | 2026-10-05 — rerun node scripts/status-snapshot.mjs for the current tree |
| Version | 1.80.0-beta.4 in all 7 version sources (scripts/release-contract.mjs) |
| Latest stable tag | v1.79.0 |
| Latest prerelease tag | v1.80.0-beta.3 |
| Tests | Node unit 3624 · pure backend 423 · HA-harness backend 330 · browser smokes 297 (npm run inventory) |
Current cycle and standing decisions
| Item | State |
|---|---|
| Current local cycle | v1.80.0-beta.4 candidate — #802 remote Zigbee destination names and collision-aware tooltips passed owner-authorized local review and are merged into dev. WSL unit/build, targeted browser checks and full golden are green; full exact-SHA Validate and artifact verification precede publication. main remains on stable v1.79.0. |
| Branches | main carries stable releases only; pre-release tags point at dev. Work lands on dev, which is equal to or ahead of main, never behind. |
| Smoke exception guard | #776 makes finish() aggregate delivered page errors after awaited browser teardown, so a late rejection cannot print EXC followed by a false OK. Deterministic Node lifecycle tests complement the unchanged Chromium guard probes. |
| Device battery | #792 adds a default-on, installation-wide own-device charge indicator, independent of static face modes. LED strips are excluded; multiple sources use only the first. Standard HA MDI icons in the designer's layout, frozen-frame diagnostics and Zigbee-caption priority share the same implementation across device surfaces. |
| Zigbee routes | #798 replaces inferred neighbour trees with integration-reported end-parent and active coordinator next-hop evidence. Unknown/conflicting routes are not guessed; stale/partial snapshots remain labelled. Solid arrows have a separate 0–255 palette; ordinary device LQI colours are unchanged. |
| Zigbee caption layout | #802 adds remote destination names and keeps the matching pointer tooltip clear of diagnostic text; only an unplaceable tooltip yields in a small card. Focus/touch/actions and provider transport remain unchanged. |
| Partial wall promotion | #804 settles new-room lineage after reconciliation: surviving independent wall pieces reserve their IDs, preventing the Garderoba duplicate-ID failure without changing geometry or relaxing opening-host validation. |
| Zigbee scan lifecycle | #800 replaces #799's 10-minute total budget with integration-owned background jobs: closing the browser does not stop waiting; after 10 minutes an exact-job cancel becomes available. MQTT setup/publish caps and the retained-info check remain bounded. Tests cover 15-minute success, cross-client restore, cancel races, stale-cache retention and reload on a live HA connection. |
| LED regression acceptance | #788 covers mixed face/free and fractional-coordinate joins, winding-safe field unions, retained endpoints/acute vertices and circle–wall transition events. The actual owner export is exercised locally; public fixtures are synthetic. Pixel oracles, not just SVG counts, protect the visible falloff. |
| LED core colour | #790 makes the on core follow the resolved light colour with or without Glow. Off, unavailable and non-live static strips keep their neutral presentation; geometry and field brightness are unchanged. |
| LED performance work | #789 batches source entry, reuses render-local barriers and temporarily paints 24 of 48 retained gradient bands during actual zoom; full quality returns after 160 ms of scale inactivity. Emitters, clips and idle pixels are unchanged. Exact-SHA 50×50 acceptance includes restoration and quick restart; implementation alone does not certify the camera budget. |
| Warm remount | Delayed editor restoration preserves the original View camera, reserves pending chrome space, and yields synchronously to mode/space navigation (#762). Header/stage dimensions are published as one settled pair. Canonical: docs/WARM-REMOUNT.md. |
| 2.5D View | Public since #649: the installation-wide General settings switch settings.volumetric_view (Display). Flat stays the default and byte-for-byte unchanged; editors and houseplan-space-card stay Flat. Canonical: docs/ISOMETRIC.md. |
| Input support | Owner's rule since 2026-08-08: View and kiosk are fully supported and release-blocking on touch; the three editors are desktop-first, touch editing is best effort. Canonical: docs/TOUCH-SUPPORT.md. |
| Localization | UI in en/ru/de/fr (src/i18n/*.json); German and French load lazily through the registry introduced by #62. |
| HACS and community | In the HACS default catalog since 2026-08-25 (hacs/default#9004): install is a plain HACS search, houseplan.zip is attached to stable tags. Support channel — Telegram chat https://t.me/ha_houseplan; GitHub Issues stay for bugs and features. |
| Furniture | Top-view category/variant palette (#159, #593) from the MIT pack assets/furniture/houseplan-0.4.1 (#606); plan art is lazy (#474), saved geometry and default dimensions never change with the pack. |
| Vacuums | Live puck, server-side trails and fit calibration are shipped; Roomba is not covered. Canonical: docs/VACUUM.md. |
| Demo stand | https://demo.houseplan.tech — public, login demo/demo, resets to a synthetic home every hour. https://dev.houseplan.tech — closed, auto-deploys the head of dev. The demo home and what the stand cannot show: demo/stand/README.md. |
| Privacy | Real-house plan sources and screenshots are gone from the tree; public images are generated from synthetic fixtures (docs/images/screenshots.json). Old images persist in git history and release archives — history is deliberately not rewritten, because that would break release tags and HACS installs. |
The feature surface and early milestones are described by the changelog and the
user guide; the former parallel list is archived in
legacy/docs/STATUS-FEATURES.md.
Where the rest lives
- Scope and personas —
docs/SCOPE.md; process, statuses and gates —PROCESS.md(role digests indocs/process/). - Release mechanics, CI proof semantics and publication —
docs/DEVELOPMENT.md› Release. - Local toolchain (Windows, WSL, the five-minute contour) —
docs/DEVELOPMENT.md. - Tests —
docs/TESTING.md: Node unit, pure backend, HA-harness backend (CI or WSL only; it uses repository-pinned Python plus pytest-homeassistant-custom-component) and browser smokes. Counts and runtime pins are never copied into prose:npm run inventory,npm run toolchain:check.
How to resume work in a fresh session
- Read by role, as
AGENTS.md› Read this first lists it. - Clone
https://github.com/Matysh/houseplan-cardand runnpm ci— it installs the hooks (git config core.hooksPath→.githooks). - Start a task from its packet:
node scripts/task-packet.mjs --issue NN. - The task's local gate is
npm run gate:small; nothing is copied to a Home Assistant instance by hand (PROCESS.md§12).