Commit Graph
2088 Commits
Author SHA1 Message Date
Codexandclaude[bot] 4f040c4c8e fix: exact upload quota, support palette allowlist, bounded SVG reference chains (#498)
Attachment uploads stage the body as `.upload-*` under files_root and then
asked the quota to count that file as stored usage *and* as the incoming
size, so the last file that still fit was refused at the boundary — by
bytes and by count. check_quota/dir_usage now take `exclude` for the
caller's own staged file; other staged files keep counting, so two
concurrent uploads can never both land past the limit.

The support package copied every string key of settings.fill_colors. The
schema stays open for compatibility, but the projection now keeps only the
eleven slots the card defines (SUPPORT_FILL_COLOR_KEYS, pinned to
src/logic.ts DEFAULT_FILL_COLORS by a test); an empty palette is omitted.

The SVG local-reference walk was a recursive DFS: a flat chain of a few
thousand hrefs passed every #436 bound and died with RecursionError, which
the upload view turned into a 500. The walk is iterative and measures the
longest chain through each node (memoised, order-independent); chains
deeper than MAX_SVG_REF_DEPTH = 64 are refused as too_large, cycles stay
invalid_image.

Tests: quota boundaries on the validator and the HA endpoint, a barrier
test for concurrent uploads, palette allowlist and TS parity, reference
chains (plain, hostile id order, cycle) on the validator and the endpoint;
six mutants caught by the standard runner.

Issue: #498
User-Visible: yes
2026-09-09 07:06:20 +00:00
claude[bot] 5f8d40caf0 docs: review document for #498
Issue: #498
User-Visible: no
2026-09-09 07:06:20 +00:00
Codexandclaude[bot] c71f21f3c9 docs: spec #498 r2 — numbered AC, longest-chain reference limit, concurrent quota semantics
Spec review r1: add the AC list with proofs and the perf/touch statement;
measure the SVG reference limit as the longest chain through a node
(memoised), not the stack height of the first traversal, so a hostile id
order cannot cut a long chain into short segments; state that two uploads
checked while both are staged are both refused (conservative), never both
stored.

Issue: #498
User-Visible: no
2026-09-09 07:06:20 +00:00
claude[bot] 5d6f610a7c docs: review document for #498
Issue: #498
User-Visible: no
2026-09-09 07:06:20 +00:00
Codexandclaude[bot] ac478127d5 docs: spec for #498 — exact upload quota, support palette allowlist, bounded SVG reference chains
Issue: #498
User-Visible: no
2026-09-09 07:06:20 +00:00
claude[bot] 2aa6ed21e7 docs: review document for #505
Issue: #505
User-Visible: no
2026-09-09 07:01:42 +00:00
Matysh 7b9af60541 Remove unused summary visibility translations (#505)
Issue: #505
User-Visible: no
2026-09-09 09:54:14 +03:00
claude[bot] f03a9e5ddc docs: review document for #505
Issue: #505
User-Visible: no
2026-09-09 06:48:00 +00:00
Matysh d32dfc9be1 Record unchanged visual evidence after dev integration (#505)
Issue: #505
User-Visible: no
2026-09-09 09:33:28 +03:00
Matysh 2f607a04f1 Record summary panel visual and negative-witness evidence (#505)
Issue: #505
User-Visible: no
2026-09-09 09:32:36 +03:00
Matysh 05778a47c0 Align summary panel with designer prototype (#505)
Issue: #505
User-Visible: yes
2026-09-09 09:32:36 +03:00
claude[bot]andMatysh d23cb267d0 docs: review document for #505
Issue: #505
User-Visible: no
2026-09-09 09:32:23 +03:00
Matysh bb14064b18 docs: address summary panel spec review r1
Issue: #505
User-Visible: no
2026-09-09 09:32:23 +03:00
claude[bot]andMatysh f29b9831a5 docs: review document for #505
Issue: #505
User-Visible: no
2026-09-09 09:32:23 +03:00
Matysh 598e95f4c4 docs: specify summary panel designer parity
Issue: #505
User-Visible: no
2026-09-09 09:32:23 +03:00
claude[bot] 2e387ac1e0 docs: review document for #495
Issue: #495
User-Visible: no
2026-09-09 05:48:32 +00:00
Codex 2946e28352 fix: import result follows the commit; dropped route runs reach the store (#495)
Apply re-validated the preview token after both halves were durable, so a
TTL that lapsed during the write, or an eviction by a newer preview of the
same user, answered "preview expired" for a plan that was already replaced
and withheld both update events. The token is now simply spent after the
commit; validity is decided once, on entry under write_lock.

Route runs dropped by drop_unknown_routes never reached the store unless a
marker happened to be orphaned in the same pass; an idle robot kept them in
memory only and a restart brought them back. The drop now happens under
_refresh_lock, leaves with the orphan transaction or with an immediate
write of its own, and rolls back like #335 when the store refuses.

Tests: HA harness for both apply races and a live config/set route drop,
recorder stubs for the four durability cases; five mutants caught by the
standard runner.

Issue: #495
User-Visible: yes
2026-09-09 08:34:46 +03:00
claude[bot] adbd349920 docs: review document for #495
Issue: #495
User-Visible: no
2026-09-09 05:33:25 +00:00
Codex 70a394d228 docs: spec for #495 — import result follows the commit, dropped route runs reach the store
Issue: #495
User-Visible: no
2026-09-09 08:26:52 +03:00
Sergey Matyunin 8721d7d911 docs: refresh fixed warm-remount screenshot fingerprint (#437)
Issue: #437
User-Visible: no
2026-09-09 06:45:49 +03:00
Sergey Matyunin 1d072be0a9 fix: freeze warm-remount stage through chrome settle (#437)
Issue: #437
User-Visible: yes
2026-09-09 06:43:16 +03:00
Sergey Matyunin a56df6eb8e docs: refresh warm-remount screenshot fingerprint (#437)
Issue: #437
User-Visible: no
2026-09-09 06:27:36 +03:00
Sergey Matyunin 590d6b59b6 fix: preserve warm-remount viewport through layout settle (#437)
Issue: #437
User-Visible: yes
2026-09-09 06:24:32 +03:00
Sergey Matyunin 931f1d45aa build: refresh v1.73.0-beta.7 candidate after #485
Issue: #437
Issue: #485
Issue: #489
Issue: #490
Issue: #491
Issue: #492
Issue: #493
Issue: #499
User-Visible: no
Release: v1.73.0-beta.7
2026-09-09 04:17:13 +03:00
claude[bot] e77f7b7361 docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 01:12:38 +00:00
Matysh ca25e91087 test: keep radar bundle ratchet outside gzip noise
Проверка (CI) / Классификация изменённых файлов (push) Successful in 1m36s
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 3m42s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 1m4s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 20s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 20s
Проверка (CI) / Мутанты по диффу (1/3): затронутые свидетели краснеют (push) Failing after 11m19s
Проверка (CI) / Мутанты по диффу (3/3): затронутые свидетели краснеют (push) Failing after 12m16s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 13m34s
Проверка (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 9m19s
Проверка (CI) / Мутанты по диффу (2/3): затронутые свидетели краснеют (push) Successful in 1h36m17s
Issue: #485
User-Visible: no
2026-09-09 04:01:00 +03:00
claude[bot]andMatysh 02289aee44 docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:54:09 +03:00
Matysh f2007326c4 docs: record radar field evidence
Issue: #485
User-Visible: no
2026-09-09 03:54:09 +03:00
Matysh e9fb255a29 fix: close radar review gaps
User-Visible: yes
Issue: #485
2026-09-09 03:54:02 +03:00
claude[bot]andMatysh f911a442c4 docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:53:33 +03:00
Matysh d12488f40d fix: harden presence radar stage one
User-Visible: yes
Issue: #485
2026-09-09 03:52:23 +03:00
claude[bot]andMatysh 63eb4f315c docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:52:22 +03:00
Matysh 58f5f18540 feat: add presence radar stage 1
User-Visible: yes
Issue: #485
2026-09-09 03:51:25 +03:00
claude[bot]andMatysh 7e4751ba62 docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
Sergey MatyuninandMatysh 4e9feaaead docs: preserve manual radar setup entry (#485)
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
claude[bot]andMatysh 1d3d379d6c docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
Sergey MatyuninandMatysh 51d5858b3d docs: restrict radar setup section to eligible devices (#485)
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
claude[bot]andMatysh a253dc83be docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
Sergey MatyuninandMatysh 1fff72aa3f docs: address radar specification review #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
claude[bot]andMatysh 2d8e7871f6 docs: review document for #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
Sergey MatyuninandMatysh 78afb68962 docs: specify radar presence stages for #485
Issue: #485
User-Visible: no
2026-09-09 03:50:50 +03:00
Sergey Matyunin 3434747d1c build: prepare v1.73.0-beta.7 candidate
Проверка (CI) / Классификация изменённых файлов (push) Successful in 58s
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 14m42s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 1m20s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 24s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 24s
Проверка (CI) / Мутанты по диффу (1/3): затронутые свидетели краснеют (push) Failing after 12m28s
Проверка (CI) / Мутанты по диффу (3/3): затронутые свидетели краснеют (push) Failing after 12m22s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 13m36s
Проверка (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) / Мутанты по диффу (2/3): затронутые свидетели краснеют (push) Failing after 16m48s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 10m4s
Baseline-Reviewed: https://github.com/Matysh/houseplan-card/actions/runs/34294899732
Issue: #437
Issue: #489
Issue: #490
Issue: #491
Issue: #492
Issue: #493
Issue: #499
User-Visible: yes
Release: v1.73.0-beta.7
2026-09-09 03:38:16 +03:00
claude[bot] 260435e438 docs: review document for #493
Issue: #493
User-Visible: no
2026-09-09 00:21:40 +00:00
Sergey Matyunin 578cae5240 fix: harden summary panel settings and writes (#493)
Issue: #493
User-Visible: yes
2026-09-09 02:53:36 +03:00
claude[bot]andSergey Matyunin 0bce4b1123 docs: review document for #493
Issue: #493
User-Visible: no
2026-09-09 02:53:36 +03:00
Sergey Matyunin 13a0bfdf87 docs: define summary panel hardening contract (#493)
Issue: #493
User-Visible: no
2026-09-09 02:53:36 +03:00
claude[bot] 3113ca8c57 docs: review document for #491
Issue: #491
User-Visible: no
2026-09-08 23:17:51 +00:00
claude[bot] a0f61551cb docs: review document for #491
Issue: #491
User-Visible: no
2026-09-08 23:01:49 +00:00
Sergey Matyuninandclaude[bot] ce575f4012 docs: remove trailing blank from #491 spec
Issue: #491
User-Visible: no
2026-09-08 23:01:49 +00:00
Sergey Matyuninandclaude[bot] 488f70c493 fix: make paired plan writes recover before the next edit (#491)
Issue: #491
User-Visible: yes
2026-09-08 23:01:49 +00:00