From b03ef70794986313c1280ae90756233bfc9275da Mon Sep 17 00:00:00 2001 From: Matysh Date: Thu, 23 Jul 2026 21:24:58 +0300 Subject: [PATCH] docs: catch STATUS/ARCHITECTURE/UX-MODES up to v1.41.0, kiosk recipe in README.ru - STATUS.md: fresh snapshot (version, dev-branch workflow, PAT, HACS queue reality, test counts) + feature-surface digest since 07-17 - ARCHITECTURE.md: decor layer, glow clip model, open boundaries math, controls, island rooms, kiosk, nav persistence - UX-MODES.md: kiosk as the fourth interaction surface - README.ru.md: wall-tablet recipe (parity with English) --- README.ru.md | 17 +++++++++++++++++ docs/ARCHITECTURE.md | 31 +++++++++++++++++++++++++++++++ docs/STATUS.md | 42 +++++++++++++++++++++++++++++++++--------- docs/UX-MODES.md | 10 ++++++++++ 4 files changed, 91 insertions(+), 9 deletions(-) diff --git a/README.ru.md b/README.ru.md index fac095e..f3c629a 100644 --- a/README.ru.md +++ b/README.ru.md @@ -8,6 +8,23 @@ --- +## Настенный планшет / ТВ (киоск-режим) + +Отдельный дашборд с view типа «панель», у карточки — `kiosk: true` (или +галочка «Режим настенного устройства» в редакторе карточки): + +```yaml +type: custom:houseplan-card +kiosk: true +cycle: 0 # автосмена пространств каждые N секунд, 0 = выкл (удобно для ТВ) +``` + +Без шапки и редакторов — только живой план. Свайп листает этажи (при 1:1), +пинч — зум, двойной тап — сброс. Долгое нажатие (3 с) по пустому месту — +настройка размеров значков и текста для ЭТОГО экрана (хранится на +устройстве). Шапку самого Home Assistant скрывают настройки companion-app +или плагин [kiosk-mode](https://github.com/NemesisRE/kiosk-mode). + ## Что это и зачем House Plan показывает ваш умный дом так, как он выглядит на самом деле — на плане этажей. Вместо длинных списков сущностей вы видите комнаты и устройства на своих местах: где протечка, какая температура в детской, включён ли свет в прихожей, открыты ли ворота. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index a6e767e..56e7e17 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -212,3 +212,34 @@ footer button lives outside it and stays clickable. (default target `/plan-doma`). The full card reads `#space=` on load (a valid id wins over `default_floor`) and on `hashchange`, without blocking manual space switching; an invalid/absent hash falls back to the default. + + +## Additions v1.28–v1.41 (2026-07-24) + +- **Decor layer** (`space.decor[]`, v1.33): purely visual shapes + (line/rect/ellipse/text, normalized coords, per-shape style) drawn in the + SVG right above the background image and BELOW rooms; pointer-events only + inside the Background editor. Validated by `DECOR_SCHEMA` (vol.Any of the + four kinds). +- **Glow fill** (v1.35+): `fill_mode: 'glow'` paints every room with + `fill_colors.glow_base` and renders per-source radial gradients clipped by + a per-light `clipPath` = zone polygons + doorway sectors, each contour a + SEPARATE clipPath child (children union; subpaths of one nonzero path + cancel on opposite windings — field bug v1.36.3). Radius: global + `settings.glow_radius_cm` + per-marker `glow_radius_cm`. +- **Open boundaries** (v1.37): `room.open_to: [roomId]` symmetric links; + light zones are connected components (`openZoneOf`); shared stretches + computed by collinear-overlap math (`sharedBoundary`) and drawn as a TRUE + dash — both room outlines and derived wall segments are trimmed + (`outlineWithout`/`cutSegments`). +- **Marker controls** (v1.36): `marker.controls[]` (lights/switches only) + toggled as one HA-group-semantics service call on the marker's EXPLICIT + tap_action=toggle; icon state/tint mirrors the targets. `primaryEntity` + picks in tiers so domain priority beats registry `hidden` (grouped lamps). +- **Island rooms** (v1.34): full nesting is legal (`polyContainsPoly`); + parents render as evenodd paths with holes (`islandsOf`). +- **Kiosk mode** (v1.41): a card-config flag, not a mode — `_setMode` is + hard-blocked, header hidden, swipe/carousel handled in the stage pointer + pipeline (`swipeTarget`), per-screen multipliers in `LS_KIOSK`. +- **Nav persistence** (v1.38.2): `LS_NAV` stores {space, mode}; hash + deep-link > saved > default_floor; stale-cache retry after the live load. diff --git a/docs/STATUS.md b/docs/STATUS.md index b68e841..eabc258 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -9,18 +9,42 @@ > (versions, publication, infrastructure), DEVELOPMENT.md for new gotchas, > ARCHITECTURE.md for design changes, ROADMAP.md when plans move. -## Snapshot (2026-07-17) +## Snapshot (2026-07-24) | Item | State | |---|---| -| Version | **v1.27.0** everywhere (manifest, const.py, package.json, CARD_VERSION) | -| GitHub | https://github.com/Matysh/houseplan-card — branch `main`, releases v1.9.3…**v1.23.1** (latest published 2026-07-17, bundle auto-attached by release.yml) | -| CI | `.github/workflows/validate.yml` (hacs + hassfest + frontend + backend) — **fully green** since v1.11.1; `release.yml` auto-attaches the card bundle (needs `permissions: contents: write`, fixed) | -| HACS | Works as custom repository (id 1290210112 on the home instance). **Inclusion PR: https://github.com/hacs/default/pull/9004** (queue ≈2 months as of 2026-07). Lesson: #8995 was auto-closed by hacs-bot — the PR body MUST be their exact template with every checkbox ticked and all 3 links (release, HACS action run, hassfest run); a custom body gets closed without discussion | -| Brands | Ships **inside the integration**: `custom_components/houseplan/brand/{icon,icon@2x,logo,logo@2x}.png` (HA ≥2026.3 local-brands mechanism). home-assistant/brands PR #10700 was auto-closed — that repo no longer accepts custom integrations | -| Home instance | ha.jbstudio.pro (SSH port 323, key `ha_jb`), deployed **v1.23.1**, installed *via HACS* (custom repo). The user has real rooms, 12 openings (doors/windows with TTLock locks and contact sensors) and live fills configured | -| Localization | UI en/ru (`src/i18n.ts`), auto by `hass.locale` + `language` card option; codebase and docs are English-first (`README.ru.md` is the Russian copy) | -| Tests | 77 frontend (node:test, incl. a 12-test buildDevices suite on a fake hass) + 10 pure backend (anywhere) + 12 HA-harness backend (CI only, py3.13; skipped locally — sandbox has py3.10) | +| Version | **v1.41.0** everywhere (manifest, const.py, package.json, CARD_VERSION); deployed to the home instance | +| Workflow | Since 2026-07-22: minor changes go to branch **`dev`** (build + smokes → deploy home → commit → push, NO release); releases are batched on the owner's command (merge dev→main, one tag, one release with a summary changelog, CI checked on dev beforehand) | +| GitHub | https://github.com/Matysh/houseplan-card — `main` = releases up to **v1.40.1**; `dev` ahead with v1.40.2+ (speaker icons, kiosk). Push via SSH key `ha_jb` (remote git@github.com:…); API releases via the fine-grained PAT in `~/.git-credentials` (Contents R/W, issued 2026-07-23) | +| CI | validate.yml (hacs + hassfest + frontend + backend) green; release.yml attaches the bundle on release publish | +| HACS | Custom repository works. **Inclusion PR: hacs/default#9004** — open, valid, labeled; ~864 older open PRs but merge rate ≈180/mo; realistic ETA 1–3 months (checked 2026-07-24) | +| Home instance | ha.jbstudio.pro (SSH port 323, key `ha_jb`), deployed **v1.41.0** via direct copy (HACS custom repo also installed) | +| Localization | UI en/ru (src/i18n/*.json), everything user-visible localized incl. kiosk popover | +| Tests | 111 frontend (node:test) + 12 pure backend + 12 HA-harness (CI, py3.13); ~30 demo smoke suites (headless chromium) | +| Product scope | docs/SCOPE.md (2026-07-22) is the feature guard rail — check before accepting any feature | + +## Current feature surface (since the 2026-07-17 snapshot) + +- **Three editors + View**: Plan / Devices / Background (decor layer v1.33) as + tabs with an X to close; View is the default; nav (space+mode) persists + across reloads (v1.38.2). **Kiosk mode** (v1.41.0): `kiosk: true` — no + header/editors, swipe between spaces, double-tap zoom reset, `cycle: N` + carousel, per-screen size multipliers in localStorage. +- **Glow fill** (v1.35–v1.37): dark house + per-source light pools (rgb/color + temp/default; per-source radius), door sectors, open boundaries + (`room.open_to`, virtual walls, dashed, transitive light zones). +- **Real switches** (v1.36): `marker.controls[]` group-toggle with HA-group + semantics; icon mirrors targets; hidden grouped lamps fixed (tiered + primaryEntity). **Lights toggle by default** (v1.39): primary domain light + → tap toggles, kettle-style devices keep the card default. +- **Plan geometry**: polyline split (v1.32), island rooms w/ evenodd holes + (v1.34), smart guides + 45° angle badge (v1.40), opening hover preview. +- **Rooms**: room cards with metrics (temp/hum/lqi/light "1 of 3") and + proportional resize (v1.31); link icon to the HA area (v1.40.1, room taps + removed). **New-device red dot** (v1.29), lock action button (v1.30). +- **Dialog UX**: binding radios + entities checkbox + search dropdown + (v1.38.0); tap actions simplified to Device card / more-info / Toggle, + right-click → more-info (v1.38.1); Esc closes every dialog (v1.30.4). ## Recent milestones (details in CHANGELOG.md) diff --git a/docs/UX-MODES.md b/docs/UX-MODES.md index be28a6f..abd51e8 100644 --- a/docs/UX-MODES.md +++ b/docs/UX-MODES.md @@ -87,3 +87,13 @@ Header in View: space tabs, device count, zoom cluster. Nothing else. editing under Plan; colored frame indicator. - **It.3 — Devices tab:** drag + direct-edit click + curation tools under Devices. - **It.4+:** follow-up features 1–5 above, each its own release. + + +## Kiosk mode (v1.41.0) + +`kiosk: true` on the card is the fourth interaction surface: the full View +experience with the header removed and editors hard-blocked (even for +admins). Swipe switches spaces at 1:1 zoom only (zoomed gestures pan; +double tap resets zoom); `cycle: N` auto-advances spaces with a 60 s pause +after any touch; a 3 s long-press on empty plan opens the per-screen size +popover (localStorage). Nav persistence never restores an editor here.