v1.54.1: the v1.54.0 audit findings, sealed

Version 1.54.0 -> 1.54.1 in package.json, package-lock.json, manifest.json,
const.py and CARD_VERSION; rebuilt bundle in all three tracked copies
(dist/, demo/srv/assets/, custom_components/houseplan/frontend/).
Changelog entries (EN+RU) — one line per finding, HP-1540-01..06 — and
docs/STATUS.md bumped.

Suites on this exact tree: 161 frontend unit, 74 pure-backend, 74 browser
smokes — all green.
This commit is contained in:
Matysh
2026-07-31 13:07:37 +03:00
parent 257a71123a
commit a1f7fb4161
10 changed files with 110 additions and 45 deletions
+33
View File
@@ -6,6 +6,39 @@
> **Правило проекта:** оба файла пополняются в одном коммите с самим
> изменением — как и остальная документация (см. docs/STATUS.md).
## v1.54.1 — 2026-07-31
Патч-релиз: всё, что нашёл adversarial-аудит v1.54.0 (HP-1540-01..06),
каждый фикс закреплён регрессией, падающей на старом коде.
- **Исправлено: первая калибровка только что обнаруженного пылесоса молча
ничего не делала.** Пока диалог устройства ни разу не сохранён, у робота
нет маркера в конфиге — а раздел «Живая позиция» уже полностью
интерактивен: каждый обработчик тихо выходил, но автокалибровка всё равно
объявляла успех. Теперь любая правка пылесоса сама создаёт маркер, а тост
успеха появляется только после того, как матрица действительно легла в
конфиг.
- **Исправлено: робот с первой картой `map_index: 0` терял серверный
след.** Бэкенд выбирал id карты по «истинности» и выбрасывал ноль, так
что записанная уборка хранилась под ключом, который карточка не искала.
Теперь обе стороны живут по одному явному правилу: побеждает первое
существующее значение, и ноль — значение.
- **Исправлено: один робот на двух этажах писал историю только для
последнего этажа.** Рекордер держал по одному маркеру на источник, и
второе размещение молча вытесняло первое. Теперь каждый маркер источника
получает свою копию уборки.
- **Исправлено: автокалибровка не видела планы из прямоугольных комнат.**
Сопоставление принимало только полигоны, а потом сваливало вину на имена
комнат. Старые прямоугольники считаются, как и во всей остальной
карточке.
- **Исправлено: пересекающиеся обновления рекордера текли подписками.**
Два одновременных сохранения конфига могли подписаться оба и бросить один
callback до перезапуска; обновления теперь сериализованы, а teardown
выигрывает у любого ещё летящего обновления.
- Тосты «нет комнат» / «имена не совпали» и docs/VACUUM.md больше не
отправляют к несуществующей калибровке по трём точкам — они ведут к
«Подогнать вручную», которая существует.
## v1.54.0 — 2026-07-31
### Роботы-пылесосы вживую