mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-07 23:19:14 +00:00
v1.50.2: the v1.50.1 review (HP-1501-01, HP-1501-02)
- HP-1501-01: v1.50.1 bounded layout positions and left room rectangles, polygon vertices, view_box and opening coordinates on bare _finite — the same absurd-magnitude failure, one schema over. _GEOM (±4) covers them all now, opening angles get ±360. And because a store may already hold such a vertex from before the door existed, contentBounds applies its canvas envelope to room geometry exactly as it does to device positions: the point renders where it is, the frame ignores it, a space of nothing but absurd points falls back to the whole canvas. - HP-1501-02: a repair matching zero positions answered ok/moved:0 and replaced the one-deep backup with an empty one — a typo right after repairing the wrong space destroyed the promised way back. Empty match is nothing_to_repair now: no write, no revision bump, backup intact. Old test fixtures carried view_box [0,0,100,100] from the render-unit days; they now use the normalised box the product actually stores.
This commit is contained in:
@@ -1,5 +1,27 @@
|
||||
# Changelog
|
||||
|
||||
## v1.50.2 — 2026-07-29
|
||||
|
||||
**From the v1.50.1 review**
|
||||
|
||||
- **Geometry magnitudes are bounded on both layers (HP-1501-01).** v1.50.1
|
||||
bounded layout positions, but room rectangles, polygon vertices, view_box
|
||||
and opening coordinates still took any finite float — one schema-valid 1e100
|
||||
vertex framed the space so wide the plan was a dot, for every client, and
|
||||
the server stored it as a perfectly good configuration. The config schema
|
||||
now bounds geometry to ±4 (angles to ±360°), and the content frame applies
|
||||
the same canvas envelope to room vertices it already applied to device
|
||||
positions — so a store that already holds an absurd coordinate from before
|
||||
this door existed still renders: the point draws wherever it is, it just no
|
||||
longer commands the frame. A vertex a bit past the canvas edge keeps
|
||||
working.
|
||||
- **A no-op repair no longer eats the undo backup (HP-1501-02).** A typo'd
|
||||
space id "succeeded" with moved: 0 — and its empty result replaced the
|
||||
one-deep backup, destroying the only way back exactly when it was needed
|
||||
most: right after repairing the wrong space. Matching nothing is an error
|
||||
now (`nothing_to_repair`); nothing is written, the revision does not move,
|
||||
and the previous repair stays undoable.
|
||||
|
||||
## v1.50.1 — 2026-07-29
|
||||
|
||||
**From the v1.50.0 review**
|
||||
|
||||
@@ -6,6 +6,28 @@
|
||||
> **Правило проекта:** оба файла пополняются в одном коммите с самим
|
||||
> изменением — как и остальная документация (см. docs/STATUS.md).
|
||||
|
||||
## v1.50.2 — 2026-07-29
|
||||
|
||||
**По ревью v1.50.1**
|
||||
|
||||
- **Величины геометрии ограничены на обоих слоях (HP-1501-01).** v1.50.1
|
||||
ограничила позиции устройств, но прямоугольники комнат, вершины полигонов,
|
||||
view_box и координаты проёмов всё ещё принимали любое конечное число — одна
|
||||
проходящая схему вершина 1e100 растягивала кадр так, что план становился
|
||||
точкой у всех клиентов, и сервер хранил это как вполне корректную
|
||||
конфигурацию. Теперь схема конфига ограничивает геометрию ±4 (углы ±360°),
|
||||
а рамка содержимого применяет к вершинам комнат тот же конверт холста, что
|
||||
уже применяла к позициям устройств — конфиг, где абсурдная координата уже
|
||||
лежит с прежних времён, всё равно рендерится: точка рисуется, где стоит,
|
||||
просто кадром больше не командует. Вершина чуть за краём холста работает
|
||||
как раньше.
|
||||
- **Пустой repair больше не съедает бэкап (HP-1501-02).** Опечатка в space_id
|
||||
«успешно» отвечала moved: 0 — и её пустой результат заменял бэкап глубиной
|
||||
один, уничтожая единственный путь назад ровно тогда, когда он нужнее всего:
|
||||
сразу после починки не того пространства. Теперь «нечего чинить» — ошибка
|
||||
(`nothing_to_repair`): ничего не пишется, ревизия не растёт, предыдущий
|
||||
repair по-прежнему отменяем.
|
||||
|
||||
## v1.50.1 — 2026-07-29
|
||||
|
||||
**По ревью v1.50.0**
|
||||
|
||||
+2
-2
@@ -15,12 +15,12 @@
|
||||
|
||||
| Item | State |
|
||||
|---|---|
|
||||
| Version | **v1.50.1** everywhere (manifest, const.py, package.json, CARD_VERSION); deployed to the home instance |
|
||||
| Version | **v1.50.2** 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` carries every published release, the latest tag is the current version above**; `dev` is where work lands and is merged into `main` at release time (so `dev` is normally equal to or ahead of `main`, never behind). 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.50.1** via direct copy (HACS custom repo also installed) |
|
||||
| Home instance | ha.jbstudio.pro (SSH port 323, key `ha_jb`), deployed **v1.50.2** via direct copy (HACS custom repo also installed) |
|
||||
| Localization | UI en/ru (src/i18n/*.json), everything user-visible localized incl. kiosk popover |
|
||||
| Tests | Four layers: frontend unit (`npm test`, node:test over `test-build/`), pure backend (`pytest tests_backend`, runs anywhere), HA-harness backend (same folder, CI only — needs py3.13 + pytest-homeassistant-custom-component), and browser smokes (`demo/smoke_*.mjs`, headless chromium). **Counts are not written down here** — they went stale within two releases while the version line beside them was kept current, which reads as less coverage than exists (review R5-2). Run `npm run inventory` for the current numbers, or read them off the last CI run |
|
||||
| Community | **Telegram chat: https://t.me/ha_houseplan** (created 2026-07-27) — the primary user-facing support channel; GitHub issues stay for bugs/features. Link it from any new release notes and posts |
|
||||
|
||||
@@ -239,6 +239,13 @@ Run the *core flows* (marked ★ below) in each environment at least once per mi
|
||||
on the plan after a reload. Same for each tap action and each fill mode
|
||||
[auto: backend test_every_display_mode_the_editor_offers_is_accepted and
|
||||
neighbours, test_a_marker_showing_its_value_can_be_saved]
|
||||
- [ ] Geometry bounds (v1.50.2, HP-1501-01): a config with a 1e100 room
|
||||
vertex is refused by the server; one already stored still renders with a
|
||||
sane frame [auto: test_geometry_magnitudes_are_bounded + unit
|
||||
contentBounds legacy case]
|
||||
- [ ] No-op repair (v1.50.2, HP-1501-02): geometry/repair with a typo'd space
|
||||
id errors, moves no revision and keeps the previous backup undoable
|
||||
[auto: test_a_noop_repair_does_not_eat_the_backup]
|
||||
- [ ] Card below other dashboard content (v1.50.1, HP-1500-02): place the card
|
||||
after a tall card in a normal dashboard — the plan still gets most of the
|
||||
viewport instead of a zero-height stage [auto: smoke_zoom_out]
|
||||
|
||||
Reference in New Issue
Block a user