Commit Graph

4 Commits

Author SHA1 Message Date
gx e54d55371c templates.json: tpl_3 теперь 4 камеры + temp_chart-узкий
Было: tpl_3 = main + 2 preview + temp_chart (rs=4) + ha_chat.
При 4 active композитор выбирал tpl_3 (waste=1 vs tpl_4 waste=0 — wait,
tpl_3 имел 3 cam cells, при 4 active брал tpl_4=quad без виджетов).

Стало: tpl_3 = main + 3 preview + temp_chart (rs=2, низ-право) + ha_chat.
4 cam cells, при 4 active best-fit выбирает tpl_3 (waste=0, раньше в registry
чем tpl_4 → tie-breaker за tpl_3). Виджеты остаются видимыми.

Geometry validated: 36+4+4+4+4+12=64 микроячеек, no overlaps.

Hot-reloaded via reload_templates ZMQ в проде.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 19:17:56 +01:00
gx 24d398526e Phase 11b: вернули asymmetric layouts с widget cells
User: "где сетки main+preview, сетки с виджетами?". Восстановили из
прежней истории:
  - tpl_3 (1+2+widget+widget): main 1440×810 + 2 преview 480×270 +
    widget temp_chart справа + widget ha_chat снизу
  - tpl_5 (1+4+widget): main + 4 preview right column + ha_chat снизу
  - tpl_6 (1+3+2+widget): main + 3 правых + 2 нижних + widget info
  - tpl_7 (1+3+3+widget): main + 3 правых + 3 нижних + widget ha_chat
  - tpl_8 (1+3+4): main + 3 правых + 4 в нижней строке (полное покрытие)
  - tpl_9 — 3×3 + widget полосы справа/снизу

Widget cells — placeholder (тёмно-серый Y=40 + LabelDecoration с именем
widget'а). Реальные виджеты (HA chat, температурный график) — Phase 12+.
Chёрные ячейки больше не будут — composer.maybe_relayout заполняет
свободные camera-cells остальными drawable из pool.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 09:44:00 +01:00
gx 9d2a0b2bd7 Phase 11b: fill свободных camera-cells остальными drawable камерами
User: "смущает чёрная ячейка в сетке". Причина: asymmetric templates
имели widget cells (placeholder тёмно-серый Y=40) + при недостатке active
camera cells оставались BlankCell (чёрный).

Два изменения:

1. templates.json — оставили только 16:9 layouts (tpl_1/tpl_4/tpl_9/tpl_16).
   Все camera-cells, никаких widget-областей. Cells full 16:9 (cs==rs
   микроячейки), полностью покрывают output 1920×1080 без чёрных полос.
   Asymmetric layouts (main + satellites) удалены — вернуть в Phase 12
   когда widget'ы будут реальными (HA-chat, temperature graph).

2. composer::maybe_relayout — заполнить свободные camera-cells остальными
   drawable камерами из pool (по priority), если template имеет больше
   cells чем motion-active. Условие: cap > active.size().

Производство при 4 источниках в pool:
  - 1 motion → tpl_1 (1 cell full screen)
  - 2 motion → tpl_4 (2 motion + 2 not-active drawable = 4 cells заняты)
  - 4 motion → tpl_4 (все 4 motion)
  - При добавлении новых камер (до 16) — tpl_9 при 5..9, tpl_16 при 10..16

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 09:15:20 +01:00
gx f8e27b9e85 Phase 10/11 WIP — pool + motion-mode + 8×8 templates (rolled back)
Объединённое состояние работ:
  - Phase 10: source pool, motion-driven layout, Frigate motion_pulse,
    zone-filter в pool, --source / --motion-mode CLI
  - Phase 11 Steps 1-3c: 8×8 микро-сетка, JSON templates с asymmetric
    layouts (tpl_1/3/4/5/6/7/8), reload через ZMQ, auto-labels per camera

В прод отдеплоено и откачено: используем gx/cuframes-composer:0.10 как
baseline. Phase 11 продолжится в branch phase11b-cpp как C++ refactor
с ООП-моделью Cell/Layout/Decoration.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 21:24:23 +01:00