Commit Graph
3141 Commits
Author SHA1 Message Date
Claudeandclaude[bot] cb97274ea7 test(harness): run workflow steps the way the runner does (#766)
Thirteen test harnesses executed workflow `run:` bodies with their own bash
flags. Four of them used `bash -eo pipefail` "as in Actions", but the runner
executes a step without `shell:` as `bash -e {0}`: pipefail comes only from an
explicit `shell: bash` or from `set -o pipefail` in the body. The harness
supplied protection the step did not have, so a step that lost its pipefail
stayed green in tests (#729, #737, #751); the reverse also happened - the
#793 guard test was red only because of the harness flag.

test/helpers/workflow-step.mjs resolves the shell like the runner (step ->
jobs.<id>.defaults.run.shell -> workflow defaults.run.shell -> unset), maps it
to the runner's command lines (unset -> `bash -e {0}`, bash -> `bash
--noprofile --norc -e -o pipefail {0}`, sh, python, custom templates with
{0}), writes the body to a file and executes it by path. Unsupported YAML or
shells are refused loudly instead of guessed. All step-executing tests now go
through runStep(findStep(...)).

Witnesses: a step whose left pipeline side fails is green without a shell
(negative test) and red with `shell: bash`, job defaults or `set -o pipefail`;
the #751 executed test now also shows that the same real steps without their
pipefail line stay green, i.e. the test sees a removed pipefail; a guard fails
on any test that runs a step with its own bash flags. TESTING.md rule 7 names
the helper.

Issue: #766
User-Visible: no
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-06 23:05:58 +00:00
claude[bot] 32334a173a docs(reviews): индекс после сдвига каталога (#768)
Issue: #768
User-Visible: no
2026-10-06 23:01:07 +00:00
claude[bot] 42b8004af3 docs(reviews): индекс после сдвига каталога (#768)
Issue: #768
User-Visible: no
2026-10-06 23:01:07 +00:00
claude[bot] 0615c38e5e docs: review document for #768
Issue: #768
User-Visible: no
2026-10-06 23:01:07 +00:00
claude[bot] 2561d80a1a docs(reviews): индекс после сдвига каталога (#777)
Issue: #777
User-Visible: no
2026-10-06 22:56:45 +00:00
claude[bot] d6703ac0c2 docs: review document for #777
Issue: #777
User-Visible: no
2026-10-06 22:56:45 +00:00
Claude 083d4d6e33 perf(kiosk): open the scale dialog without the editor runtime (#763)
A 3 s hold in kiosk mode opens the per-screen size dialog. The core card
draws it (`_renderKioskDialog`, `hp-dialog` from the core bundle, core
i18n keys) and the summary-panel runtime, which every card connects on
mount, saves it. Yet `_kioskDialog` was listed in `editorRuntimeRequested`,
so every hold on a wall tablet downloaded the whole editor chunk; with the
chunk unreachable the kiosk also showed "Could not load the editor" (#757
only capped the retries). Dropping it from the condition is the whole fix;
the loader and the gesture are untouched.

Proof: new smoke_kiosk_scale_no_editor runs a cold page, a real 3.4 s touch
hold (CDP synthesizeTapGesture: a long press, not a tap on the new backdrop),
sliders by keyboard, Reset/Close taps, a second hold to reopen, the chunk
refused by the network, and the ordinary editor entry as control. On dev it
is red in 3 network checks (chunk fetched; refused chunk = 2 requests and a
toast); with the fix all 20 checks pass. smoke_lazy_editor_chunk case (a)
pinned the old cycle and now asserts zero requests and zero notices; the
(checked by hand). New mutant kiosk-scale-dialog-loads-editor-runtime
(caught by hand), listed under browser lifecycle guards; the smoke is
linked in smoke-links because it names none of the touched members.

Issue: #763
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-07 00:49:47 +03:00
claude[bot] 7fbc97a296 docs(reviews): индекс после сдвига каталога (#808)
Проверка (CI) / Предполёт: документация, провенанс, процесс (push) Canceled after 0s
Проверка (CI) / Классификация изменённых файлов (push) Canceled after 0s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Canceled after 0s
Проверка (CI) / HACS: валидация репозитория (push) Canceled after 0s
Проверка (CI) / Hassfest: манифест интеграции (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (1/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (2/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (3/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (4/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (5/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (6/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Canceled after 0s
Проверка (CI) / Бандл головы dev для стенда (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Canceled after 0s
Проверка (CI) / Смоки: все шарды зелёные (push) Canceled after 0s
Проверка (CI) / Golden-кадры против принятых эталонов (push) Canceled after 0s
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Canceled after 0s
Проверка (CI) / Геометрия: TS/Python parity исполнена (push) Canceled after 0s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Canceled after 0s
Проверка (CI) / Доказательство выполненных проверок (push) Canceled after 0s
Issue: #808
User-Visible: no
2026-10-06 21:27:11 +00:00
claude[bot] e10e482a63 docs: review document for #808
Issue: #808
User-Visible: no
2026-10-06 21:27:07 +00:00
Claude ef47d4c5a1 fix(zigbee): stale after an hour; routes paint over battery indicators (#808)
A topology snapshot is labelled stale after one hour instead of five
minutes. Nothing refreshes the map on its own and a Zigbee2MQTT scan alone
can take more than ten minutes, so the old age marked almost every map. A
failed refresh still marks the retained snapshot stale at once.

Route lines and arrows now paint over battery indicators. Endpoint markers
rise above the route layer as a whole (#464), battery included, so the
overlay renders a copy of the routes one level higher (z 9, before the
captions in DOM order) clipped to the endpoint battery frames. The frames
are measured in the existing layout frame of the overlay; outside them the
picture is unchanged: endpoint cores stay above routes, captions above
routes and batteries (#792 AC7). The copy carries no data-hp, so route
counts and selectors stay as they were; parent-caption arrows update in both
layers.

Tests: smoke_device_battery_zigbee gains a local link whose route crosses a
whole battery frame — the hovered endpoint's and the neighbour endpoint's,
Flat and 2.5D, sampled along the drawn line. On dev three of the four probes
are red (2.5D neighbours are not raised today). New mutant
zigbee-route-copy-under-battery (manually red); the parent-LQI mutant anchor
follows the refactored route list. smoke_zigbee_topology_hover age fixtures
move to the one-hour boundary. The golden routes control hides both layers;
device-battery-zigbee-overlap-dark changes (arrowhead now over the battery)
and needs acceptance via ci:golden.

Issue: #808
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-06 23:49:06 +03:00
Sergey Matyunin e49083d6ec Release v1.80.0-beta.6 candidate
Ship the reviewed battery-indicator shadow and per-device opt-out together
with the global All / Low only / None display modes. Rebuild the committed
bundle, refresh the pixel-identical documentation fingerprint, and tighten
the beta ratchets.

Issue: #806
Issue: #807
User-Visible: yes
Release: v1.80.0-beta.6
2026-10-06 22:35:14 +03:00
claude[bot] 8cff278c78 docs(reviews): индекс после сдвига каталога (#807)
Issue: #807
User-Visible: no
2026-10-06 18:36:59 +00:00
claude[bot] a1a404e419 docs: review document for #807
Issue: #807
User-Visible: no
2026-10-06 18:36:55 +00:00
Claude 8c726d753e feat(battery): low-only option for the device battery indicator (#807)
General settings offer All / Low only / None for battery indicators as a
three-button segmented control, the same visual as the light-source choice
in the device dialog. Low only keeps just the red low state (below 20 %, or
a binary battery sensor that is on); normal, warning and unknown are hidden.

Storage keeps #792 compatibility: absent = All, false = None, the exact
string "low" = Low only. The backend accepts bool or "low" and refuses any
other value; old frontends read "low" as All, old backends refuse to save it
(documented in CONFIG-COMPATIBILITY). One presentation option
(batteryLowOnly) filters the resolved indicator, so View, kiosk, 2.5D,
space-card and the device dialog preview share the same rule.

Track raised ship -> show: new i18n keys, a new config value and Python.

Tests: unit (mode resolver, write, dirty, low-only presentation), backend
validator and support package, smoke_device_battery (low-only keeps only
red), smoke_general_settings_form (radios, save/reopen/clean, All removes
the key). New mutant battery-low-only-shows-every-state; the backend mutant
anchor moves to the new validator.

Issue: #807
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-06 20:59:11 +03:00
claude[bot] f398b50037 docs(reviews): индекс после сдвига каталога (#806)
Issue: #806
User-Visible: no
2026-10-06 17:51:30 +00:00
claude[bot] 16b4197409 docs: review document for #806
Issue: #806
User-Visible: no
2026-10-06 17:51:26 +00:00
claude[bot] b83dd2021f docs: review document for #806
Issue: #806
User-Visible: no
2026-10-06 17:00:31 +00:00
Matysh ab9dc1fb46 feat(battery): добавляет тень и локальное скрытие индикатора
Issue: #806
User-Visible: yes
2026-10-06 18:59:09 +03:00
claude[bot] 705889cc37 docs: review document for #806
Issue: #806
User-Visible: no
2026-10-06 15:38:58 +00:00
claude[bot] e12c04568a docs: review document for #806
Issue: #806
User-Visible: no
2026-10-06 15:33:13 +00:00
Matysh d50efcb56e docs(release): refresh screenshot fingerprint for v1.80.0-beta.5
Проверка (CI) / Предполёт: документация, провенанс, процесс (push) Canceled after 0s
Проверка (CI) / Классификация изменённых файлов (push) Canceled after 0s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Canceled after 0s
Проверка (CI) / HACS: валидация репозитория (push) Canceled after 0s
Проверка (CI) / Hassfest: манифест интеграции (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (1/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (2/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (3/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (4/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (5/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Мутанты по диффу (6/6): затронутые свидетели краснеют (push) Canceled after 0s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Canceled after 0s
Проверка (CI) / Бандл головы dev для стенда (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Canceled after 0s
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Canceled after 0s
Проверка (CI) / Смоки: все шарды зелёные (push) Canceled after 0s
Проверка (CI) / Golden-кадры против принятых эталонов (push) Canceled after 0s
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Canceled after 0s
Проверка (CI) / Геометрия: TS/Python parity исполнена (push) Canceled after 0s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Canceled after 0s
Проверка (CI) / Доказательство выполненных проверок (push) Canceled after 0s
All eleven documentation frames are pixel-identical in the pinned Linux environment; update only their source fingerprint for the release candidate.

Issue: #792

Issue: #804

Issue: #776

User-Visible: no

Release: v1.80.0-beta.5
2026-10-06 17:30:47 +03:00
Matysh 25f463a933 Release v1.80.0-beta.5 candidate
Ship battery indicators, resilient room creation from partial wall faces, and
deterministic late smoke-error accounting. Rebuild the committed bundle and
tighten the beta ratchets.

Issue: #792
Issue: #804
Issue: #776
User-Visible: yes
Release: v1.80.0-beta.5
2026-10-06 17:22:40 +03:00
claude[bot] 63b6b48d03 docs(reviews): индекс после сдвига каталога (#776)
Issue: #776
User-Visible: no
2026-10-06 14:06:44 +00:00
claude[bot] 323fa70f96 docs: review document for #776
Issue: #776
User-Visible: no
2026-10-06 14:06:44 +00:00
Matyshandclaude[bot] 3e98ac4dde fix(test): include late page errors in smoke teardown verdict
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
2026-10-06 14:06:44 +00:00
claude[bot] 3ee8663bfa docs: review document for #774
Issue: #774
User-Visible: no
2026-10-06 14:04:02 +00:00
claude[bot] 7015a2c454 docs: review document for #774
Issue: #774
User-Visible: no
2026-10-06 13:51:49 +00:00
claude[bot] aa62145621 docs(reviews): индекс после сдвига каталога (#792)
Issue: #792
User-Visible: no
2026-10-06 13:32:55 +00:00
claude[bot] 602305417b docs: review document for #792
Issue: #792
User-Visible: no
2026-10-06 13:32:51 +00:00
Matysh 88bdd513ec test(golden): cover battery and Zigbee caption overlap
Address the in-scope Medium from CODE-REVIEW-792-r1 with a deterministic
golden scenario that uses actual topology rendering and overlapping battery
ink. Keep the existing battery boards and their reviewed images unchanged.
Align the English guide's setting name with the shipped locale (Low).

Issue: #792
User-Visible: no
2026-10-06 16:04:07 +03:00
claude[bot] b94112b8c4 docs: review document for #792
Issue: #792
User-Visible: no
2026-10-06 12:52:30 +00:00
Matysh 3c091e7ef8 fix(settings): preserve established Display option order
Append battery visibility after the existing tooltip, radar and volumetric
controls. The established 2.5D setting remains third. Extend the existing
browser oracle to allow exactly the new fourth option while preserving
its original first-three ordering requirement.

Full Validate 37461167422 exposed the ordering regression. It was reproduced
locally before the change; volumetric_setting, general_settings_form and
settings_dialog_cards all pass after it. Record the final gzip measurement.

Issue: #792
User-Visible: yes
2026-10-06 15:22:16 +03:00
Matysh 9951e6ba10 chore(golden): accept three MDI battery indicator scenes
Full 203-scene capture from published d4d48bb040
on pinned WSL/ext4 toolchain: 200 unchanged scenes and three new scenes;
105 environment witnesses passed (required floor: 10).
Reviewed light/dark boards and mobile framing against owner-approved MDI
glyphs and the designer's sizes, gaps and colors. Correct measured gzip
documentation by three bytes after the final source fingerprint settled.

Issue: #792
User-Visible: no
Release: v1.80.0-beta.4
Baseline-Reviewed-Local: sha256:7e238b1840401f791e00e53f5c77388006a0b04cc8d4e535775b3a5dc9f9db03
2026-10-06 15:04:00 +03:00
Matysh d4d48bb040 feat(devices): show own-device battery state with standard HA icons
Resolve one stable battery source independently of the functional device face,
include battery-only ticks in immutable render snapshots, and add a default-on
shared preference. Keep LED strips excluded and Zigbee captions above the
passive, out-of-flow indicator. Use the owner's accepted four MDI icons in the
designer's frame geometry and colours.

Include resolver/backend/browser/pixel contracts and three new golden scenes.
Recalibrate the owner-approved absolute/raw size budgets; preserve the existing
initial View rolling ceiling and band. Lazy extraction remains separate #805.

Issue: #792
User-Visible: yes
2026-10-06 14:43:19 +03:00
claude[bot] d787c02687 docs: review document for #792
Issue: #792
User-Visible: no
2026-10-06 10:56:30 +00:00
claude[bot] b9145d3e85 docs(reviews): индекс после сдвига каталога (#804)
Issue: #804
User-Visible: no
2026-10-06 10:14:27 +00:00
claude[bot] 6651d854d0 docs: review document for #804
Issue: #804
User-Visible: no
2026-10-06 10:14:23 +00:00
Matysh b3f5aefa20 fix(editor): preserve residual wall identity when creating room
Issue: #804
User-Visible: yes
2026-10-06 12:52:59 +03:00
claude[bot] de2029b7f9 docs: review document for #804
Issue: #804
User-Visible: no
2026-10-06 09:47:47 +00:00
claude[bot] bcc68f0da2 docs: accept derived artifacts on dev for v1.80.0-beta.4
Производные артефакты беты — одним коммитом на dev (PROCESS.md §8, §11.4, #697).
Прогон: https://github.com/Matysh/houseplan-card/actions/runs/37362267763
Скриншоты документации: отпечаток исходников; изменённые кадры: нет.

Issue: #697
User-Visible: no
2026-10-05 19:19:24 +00:00
Matysh 90e8ea4685 docs(review): record local acceptance of Zigbee caption layout
Issue: #802
User-Visible: no
2026-10-05 22:05:55 +03:00
Matysh c175a2ab1a Release v1.80.0-beta.4 candidate
Zigbee destination names and readable, non-overlapping hover diagnostics.
Local self-review authorized by the owner; WSL acceptance is green.

Issue: #802
User-Visible: yes
Release: v1.80.0-beta.4
2026-10-05 21:45:34 +03:00
claude[bot] 020739ebca docs: accept derived artifacts on dev for v1.80.0-beta.4
Производные артефакты беты — одним коммитом на dev (PROCESS.md §8, §11.4, #697).
Прогон: https://github.com/Matysh/houseplan-card/actions/runs/37357972443
Скриншоты документации: отпечаток исходников; изменённые кадры: нет.

Issue: #697
User-Visible: no
2026-10-05 18:44:35 +00:00
Matysh 319ee70010 docs(review): record local acceptance of Zigbee caption layout
Issue: #802
User-Visible: no
2026-10-05 21:41:56 +03:00
Matysh 5c893c7ff3 docs(review): record local acceptance of Zigbee caption layout
Issue: #802
User-Visible: no
2026-10-05 21:39:44 +03:00
Matysh db887cd7f0 fix(zigbee): readable remote captions and collision-aware device tooltips
Keep diagnostic captions and the matching pointer tooltip readable, including
late overlay paint, camera/resize changes and narrow-card fallback. Preserve
focus, touch and device actions. Add pure placement and real-mouse witnesses.

Issue: #802
User-Visible: yes
2026-10-05 21:30:15 +03:00
Matysh 7feda5b6c8 Release v1.80.0-beta.3 candidate
Issue: #800
User-Visible: yes
Release: v1.80.0-beta.3
2026-10-05 20:24:52 +03:00
claude[bot] 285a6dc436 docs: accept derived artifacts on dev for v1.80.0-beta.3
Производные артефакты беты — одним коммитом на dev (PROCESS.md §8, §11.4, #697).
Прогон: https://github.com/Matysh/houseplan-card/actions/runs/37347936626
Скриншоты документации: отпечаток исходников; изменённые кадры: нет.

Issue: #697
User-Visible: no
2026-10-05 17:24:35 +00:00
Matysh cdfe02e64d docs(review): record independent green #800 r3 2026-10-05 20:21:55 +03:00
Matysh 67af859e8c fix(zigbee): allow explicit retry after transient reload failure (#800)
Issue: #800
User-Visible: yes
2026-10-05 20:12:25 +03:00