Commit Graph
1868 Commits
Author SHA1 Message Date
Codexandclaude[bot] e758c3d9fb fix: quantise the light aperture amount of moving covers (#366)
A gate or door bound to a position-reporting cover fed current_position
into the light-barrier signature at toFixed(3) precision: every percent of
movement produced a new fingerprint, a full physicalBodyParts recompute
and a recut — up to ~100 heavy passes per gate cycle, plus LRU churn.

The light pipeline now consumes one quantised amount
(OPENING_LIGHT_AMOUNT_QUANTUM = 0.05, exact 0 and 1 nodes) at the single
point that feeds BOTH the signature and the cut geometry, so the cache key
and the drawn aperture agree by construction and a full sweep costs at
most 21 recomputes. The door LEAF animation stays smooth — _openingAmt is
quantised only for the light pipeline, nowhere else. Binary contact doors
are byte-identical to the previous behaviour (pinned by unit).

Assumption recorded in the spec: the 5% visual step of the light cut is
indistinguishable on real plans; if field impressions disagree, the
quantum is a one-constant change (0.02 => <=51 recomputes) or the decision
falls back to a debounce. LIGHT.md §Caching documents the grid.

Issue: #366
User-Visible: yes
2026-08-29 08:15:51 +00:00
claude[bot] 0d4010f87d docs: review document for #360
Issue: #360
User-Visible: no
2026-08-29 08:14:17 +00:00
claude[bot] 6ce42b33f5 docs: review document for #360
Issue: #360
User-Visible: no
2026-08-29 08:06:42 +00:00
claude[bot] 0decce8d06 docs: review document for #361
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
Sergey Matyuninandclaude[bot] cc209b97d1 test: accept furniture stroke golden baselines
Reviewed the full Linux candidate for #361. Exactly four furniture-bearing scenarios are accepted; the other 138 baselines remain byte-identical.

Issue: #361
User-Visible: no
Release: v1.69.0-beta.4
Baseline-Reviewed: https://github.com/Matysh/houseplan-card/actions/runs/33240556186
2026-08-29 07:55:23 +00:00
claude[bot] e27396a5a8 docs: review document for #361
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
Sergey Matyuninandclaude[bot] 953eda4f6e fix: scale furniture strokes with plan zoom
Issue: #361
User-Visible: yes
2026-08-29 07:55:23 +00:00
claude[bot] 64baa41cce docs: review document for #361
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
Sergey Matyuninandclaude[bot] c475f54e7e docs: require targeted furniture smoke
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
claude[bot] 927ca2ab45 docs: review document for #361
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
Sergey Matyuninandclaude[bot] 64114d2219 docs: specify furniture stroke zoom
Issue: #361
User-Visible: no
2026-08-29 07:55:23 +00:00
claude[bot] 3ccda408ba docs: review document for #366
Issue: #366
User-Visible: no
2026-08-29 07:48:53 +00:00
claude[bot] a2c189eaa3 docs: review document for #369
Issue: #369
User-Visible: no
2026-08-29 07:48:25 +00:00
Codex c50d9e4290 docs: #369 spec revision 2 per SPEC-REVIEW-369-r1
Issue: #369
User-Visible: no
2026-08-29 10:41:40 +03:00
claude[bot] 631bafea76 docs: review document for #366
Issue: #366
User-Visible: no
2026-08-29 07:41:18 +00:00
claude[bot] 00197a3af0 docs: review document for #369
Issue: #369
User-Visible: no
2026-08-29 07:41:12 +00:00
Claude 23d6681d3e ci: публикация ревью-дока не имеет права трогать ничего, кроме документа
28.08 коммит bb2919f уехал в dev с тридцатью файлами вместо одного markdown:
откатил отревьюженную реализацию #359, вернул старые чанки, оставил в dist/
двойной набор. dev держал откаченное дерево три часа. Сообщение коммита было
невинным, и от рутины инцидент отличался только диффом.

Механизм воспроизведён локально, а не предположен. `git checkout -- .`
восстанавливает рабочее дерево ИЗ ИНДЕКСА, `git clean -fd` убирает
неотслеживаемое — ни то, ни другое индекс не трогает. Ревьюер работает с Bash и,
проверяя «умеет ли тест падать», вполне может сделать git add; всё оставшееся у
него в индексе прежняя уборка сохраняла, и следующий git commit забирал это
вместе с документом.

Отсюда три рубежа, каждый закрывает свой отрезок пути.

База: reset --hard на свежий origin/$target снимает и индекс, и дерево разом.
Терять нечего — документ приезжает из RUNNER_TEMP, а не из рабочей копии.
Индексируется ровно один путь, а не каталог.

Индекс: перед коммитом дифф проверяется allowlist'ом docs/reviews/.

Диапазон: перед КАЖДЫМ push проверяется origin/$target...HEAD — то есть то, что
пуш добавит в ветку. Проверок две, потому что push делается из двух мест, и
второй путь срабатывает ровно тогда, когда dev ушёл вперёд — в тех самых
условиях, при которых случился bb2919f.

Пустой дифф — тоже отказ: публиковать нечего означает, что документа нет, а
прежняя редакция шага выходила тут с нулём и оставляла вердикт без артефакта
(#171). Сравнение по префиксу каталога, а не подстрокой: docs/reviews-old и
docs/reviewsx разрешёнными не считаются. Форс-пуш отсутствует и закреплён тестом.

Четыре мутанта проверены руками, два добавлены в реестр. Пятый — «убрать одну из
двух проверок диапазона» — сначала выжил: тест требовал наличия, а не количества.
Тест усилен до подсчёта, мутант убит.

Issue: #365
User-Visible: no
2026-08-29 10:38:36 +03:00
Codex cbf9318efd docs: specify #369 audit-lows batch
Issue: #369
User-Visible: no
2026-08-29 10:34:23 +03:00
claude[bot] f2e365726a docs: review document for #39
Issue: #39
User-Visible: no
2026-08-29 07:23:36 +00:00
Codex 7c45372c32 fix: guard dismissal honesty, one threshold source, EXIF proven (#39 r1)
r1-M1: dismissal (Escape/scrim/Cancel) while the reduce or keep-original
flow is executing no longer races the decision — hp-close is ignored while
busy, and every flow re-checks it still owns the guard before applying, so
a force-cleared dialog can never silently install its stale result. The
smoke now drives both: hp-close during a hanging decode leaves the busy
dialog up, and a force-cleared guard ends with clean staging, no toast, no
planFile. A new registry mutant removes the busy gate and is killed.

r1-M2: the hard-dialog text takes its limit from the imported
HARD_DIMENSION instead of a literal — recalibration stays a one-file
change, as the spec promises.

r1-M3: AC8 is now proven end to end, not plausible: the smoke splices a
real EXIF APP1 (orientation 6) into a canvas-encoded 8200×4100 JPEG,
asserts the header probe reads the unrotated SOF, that the decode call
carries imageOrientation:'from-image' (captured on the hook), and that the
reduced copy comes out portrait 2048×4096. TESTING.md names the scenario.

Issue: #39
User-Visible: no
2026-08-29 10:13:09 +03:00
claude[bot]andCodex e84af749aa docs: review document for #39
Issue: #39
User-Visible: no
2026-08-29 10:13:09 +03:00
Codex 7c31725ac9 feat: warn about huge backdrops and offer a safe reduced copy (#39)
A picked raster is now classified from its HEADER BYTES ONLY before anything
heavy happens: src/backdrop-probe.ts parses PNG IHDR (+colour type/tRNS for
alpha), JPEG SOF and WebP VP8/VP8L/VP8X at fixed offsets, never using a file
field as an allocation size; hostile or truncated headers collapse to
'unknown', which warns without numbers instead of passing silently. The
thresholds live in that module as the single calibration point
(WARN_DECODED_BYTES 128 MiB ≈ 32 MP, HARD_DIMENSION 16384 — the browser
canvas cap, DOWNSCALE_TARGET_PX 4096), derived from the desktop-Chromium
matrix now committed as demo/benchmark_backdrop_decode.mjs with a
conservative tablet margin documented in the spec.

The shared pick flow (src/backdrop-pick.ts) feeds BOTH lazy runtimes — the
editor space dialog and the onboarding first-space dialog — so the guard
cannot drift between them, and nothing of it enters the eager View graph.
Warn shows the real numbers and three actions; the reduced copy decodes
EXIF-aware, keeps aspect and alpha (PNG stays PNG, opaque becomes JPEG
q0.9) and flows through the ordinary planFile → upload path. Hard has two
phases with one outcome: beyond 16384 px only Cancel; a failed or timed-out
(10 s) reduce closes with a toast, clean staging and NO silent fallback to
the original the user just declined. SVG never reaches the probe. The safe
path swaps the manual byte-loop base64 for FileReader — half the JS-heap
peak on every upload, byte-identical output (parity asserted in the smoke).

Proofs: header-table units incl. a fuzz set of hostile headers and ±1
threshold bounds; smoke_backdrop_guard on the real bundle — zero decode
calls before the choice, byte parity of keep-original, a real 6200 px
reduce to 4096 for both alpha and opaque branches, cancel-only hard
dialog, both phase-2 failures (reject and hang under the test-only timeout
override), re-pick after refusal, SVG bypass; four registry mutants
(probe-always-safe, alpha-dropped, hard-demoted, phase-2 silent fallback).
Spec anchor corrected alongside: the server plan limit is 8 MB
(MAX_PLAN_BYTES), attachments are the 50 MB path — an 8 MB JPEG is easily
80-160 MP decoded, so the client-side guard stays the primary defence.

Issue: #39
User-Visible: yes
2026-08-29 10:13:09 +03:00
Claude 4d73774779 ci: ребейз виден автору до пуша, конфликт называет файлы, уход dev отмечается
Конвейер приводит ветку к dev сам (#257) и при конфликте возвращает задачу, не
тратя цикл ревью. Оставались три щели, и все три про то, что человек узнаёт
поздно и без подробностей.

Первое. Отставание теперь видно в scripts/pre-push-gate.mjs до пуша, с числом
коммитов и готовой командой. Это предупреждение, а не гейт: гейтом остаётся
конвейер, который забыть не может. Смысл в цене — после любого ребейза разбор
становится полным, а не по дельте (§7.2), а конфликт всё равно чинится на машине
автора. Отключается --no-rebase-check.

Второе. Конфликт называет файлы. Список снимается ДО `git rebase --abort`: abort
снимает состояние конфликта вместе с ним, и раньше автору доставалось «не
ребейзится» без единого имени. Логика проверена на настоящем конфликте в
одноразовом репозитории — два файла названы.

Третье. Если dev ушёл вперёд, пока шло ревью, это записывается в summary
прогона, а при зелёном вердикте ещё и комментарием: вердикт вынесен по дереву,
которое уже не совпадает с вершиной линии, и слияние приведёт ветку к dev.
Комментарий только при зелёном — шуметь на каждом прогоне ни к чему, а вот
молчать перед слиянием нельзя.

Чего задача не делает: не заставляет dev стоять на месте, пока идёт ревью. Если
возвраты частые именно из-за темпа, лечится очередью слияний, а это решение о
процессе, не о скрипте.

Два мутанта проверены руками — «советовать ребейз всегда» и «никогда не сообщать
про уход dev», — каждый убит.

Issue: #364
User-Visible: no
2026-08-29 10:06:41 +03:00
Sergey Matyunin d3d3312adb docs: accept #362 screenshot source
Issue: #362
User-Visible: no
2026-08-29 09:40:13 +03:00
claude[bot] 866968d674 docs: review document for #362
Issue: #362
User-Visible: no
2026-08-29 06:39:28 +00:00
Sergey Matyuninandclaude[bot] 5d37438e11 fix: make devices inert in the Background editor
Issue: #362
User-Visible: yes
2026-08-29 06:39:28 +00:00
claude[bot] f6da1ff57c docs: review document for #39
Issue: #39
User-Visible: no
2026-08-29 06:28:19 +00:00
Codex 9431a5cea2 docs: #39 spec revision 4 per SPEC-REVIEW-39-r2
Issue: #39
User-Visible: no
2026-08-29 09:22:55 +03:00
claude[bot] ff47c5728c docs: review document for #39
Issue: #39
User-Visible: no
2026-08-29 06:22:11 +00:00
Codex f787de997b docs: #39 spec revision 3 per SPEC-REVIEW-39-r1
Issue: #39
User-Visible: no
2026-08-29 09:15:21 +03:00
claude[bot] b3ed32d2de docs: review document for #362
Issue: #362
User-Visible: no
2026-08-29 06:14:17 +00:00
claude[bot] 3262b097e6 docs: review document for #39
Issue: #39
User-Visible: no
2026-08-29 06:14:09 +00:00
Codex 156be64559 docs: actualize #39 large-backdrops spec (revision 2, benchmark-calibrated)
Issue: #39
User-Visible: no
2026-08-29 09:07:17 +03:00
Matysh e728eab876 build: prepare v1.69.0-beta.3 candidate
Проверка (CI) / Классификация изменённых файлов (push) Successful in 16s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 14s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 15s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 35s
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 40s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 59s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 3m47s
Package door-state-aware Glow, smoothed vacuum trails, cold-View reliability fixes and the furniture placement preview reviewed since beta.2.

Issue: #20
Issue: #209
Issue: #357
Issue: #358
Issue: #359
User-Visible: yes
v1.69.0-beta.3
2026-08-29 01:14:03 +03:00
claude[bot] 38042e0fad docs: review document for #359
Issue: #359
User-Visible: no
2026-08-28 21:58:39 +00:00
Matysh fd762fa744 fix: restore reviewed furniture preview tree
The code-review worker published its report from a stale local snapshot and unintentionally reverted the already reviewed implementation artifacts. Restore every affected path exactly to the reviewed 84bdc7ef tree while retaining CODE-REVIEW-359-r1.md.

Issue: #359
User-Visible: no
2026-08-29 00:51:43 +03:00
claude[bot] bb2919f8c0 docs: review document for #359
Issue: #359
User-Visible: no
2026-08-28 21:49:12 +00:00
Matysh 84bdc7efbe test: accept furniture placement preview golden
Reviewed the Linux candidate from the full CI run. Only the new furniture placement preview frame is accepted; 141 existing baselines remain byte-identical.

Issue: #359
User-Visible: no
Release: v1.69.0-beta.2
Baseline-Reviewed: https://github.com/Matysh/houseplan-card/actions/runs/33213146088
2026-08-29 00:44:36 +03:00
Matysh 8b7219e955 docs: accept furniture preview screenshot index
Capture: https://github.com/Matysh/houseplan-card/actions/runs/33213453705
Issue: #359
User-Visible: no
2026-08-29 00:40:53 +03:00
Matysh 8b66d67d3d feat: preview furniture placement
Issue: #359
User-Visible: yes
2026-08-29 00:34:06 +03:00
claude[bot] 3c281bb12c docs: review document for #359
Issue: #359
User-Visible: no
2026-08-28 21:14:24 +00:00
Matysh 842dc373b1 docs: prove furniture preview edge cases
Issue: #359
User-Visible: no
2026-08-29 00:09:18 +03:00
claude[bot] d6d2ae4ae4 docs: review document for #359
Issue: #359
User-Visible: no
2026-08-28 21:08:22 +00:00
Matysh 392ef22c0d docs: specify furniture placement preview
Issue: #359
User-Visible: no
2026-08-29 00:00:55 +03:00
claude[bot] ccbbe94cab docs: review document for #209
Issue: #209
User-Visible: no
2026-08-28 20:54:22 +00:00
Matysh 17da1e3b3c test: accept pending door-state golden alongside #209
Accept the reviewed Linux frame left pending by #20 alongside the already accepted #209 vacuum frame. The closed and partially open doors now form the visual contract for proportional Glow transmission.

Issue: #209
User-Visible: no
Release: v1.69.0-beta.2
Baseline-Reviewed: https://github.com/Matysh/houseplan-card/actions/runs/33207816479
2026-08-28 23:38:42 +03:00
Matysh c743e1ecd8 test: accept vacuum smoothing golden (#209)
Reviewed the Linux candidate for the deterministic current and previous vacuum routes. Only the new #209 frame is accepted; the unrelated door-hover drift was explicitly retained at its existing reviewed baseline.

Issue: #209
User-Visible: no
Release: v1.69.0-beta.2
Baseline-Reviewed: https://github.com/Matysh/houseplan-card/actions/runs/33207816479
2026-08-28 23:34:56 +03:00
Matysh 6c0b3f7c31 docs: refresh screenshots for final #209 tree
Issue: #209
User-Visible: no
2026-08-28 23:28:09 +03:00
Matysh 3c2d9e8863 build: refresh bundle after golden contract (#209)
Issue: #209
User-Visible: no
2026-08-28 23:20:28 +03:00
Matysh afd1ba6175 test: bind vacuum golden to smoothing default (#209)
Issue: #209
User-Visible: no
2026-08-28 23:18:02 +03:00