Pipeline filter state (overlays, layout, cell_map, audio) живёт в RAM
ffmpeg process. При recreate container (compose up, OOM, NVENC crash,
config change) state lost — controller'у нужно re-push.
Раньше user'у приходилось вручную:
curl POST /layout/.../set
docker restart cuda-grid-controller # для browser/dynamic re-register
Теперь автоматизировано:
PipelineMonitor polls ZMQ каждые 3 sec (no-op set_layout).
On timeout/error → mark instance lost.
First success after lost → trigger restore:
1. set_layout к state.active_layout
2. set_audio_output_enabled к state.audio_output_enabled
3. re-push все overlays из state.overlays
4. browser/dynamic/frigate hooks: mark_all_unregistered() —
их loops автоматически re-add на next iteration
Verified test: docker restart cuda-grid-pipeline → 10 sec downtime →
monitor logs lost+restored+restore_done с count=6 overlays.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Use case: Grafana с session cookie (login flow вместо Bearer token),
admin UIs без API token endpoint.
Config:
dashboards:
- id: my_widget
cookies:
- name: session_id
value: abc123
url: https://example.com/
Каждый element passed к page.context.add_cookies. Playwright spec format:
{name, value, url} OR {name, value, domain, path, ...}.
Multi-dashboard verified рабочий (caвая dashboard = own Page в shared browser).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Без resize element screenshot возвращался в native dims (e.g. Grafana panel
790×258), не fitting configured overlay slot (1280×180 = info strip). Result
— overflow + gap.
С resize (LANCZOS) PNG exactly w_px×h_px, fills slot полностью. Trade-off:
если aspect не совпадает (panel 3:1 → strip 7:1), будет растяжение
horizontal. User responsibility tune w_px/h_px к нужным пропорциям.
Verified: GPU/VRAM panel 790×258 → 1280×180 readable, lines + labels OK.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Use case: Grafana service account token, basic auth, custom UA. Headers
устанавливаются через page.set_extra_http_headers перед первым goto.
Пример:
dashboards:
- id: grafana_gpu
url: https://chat2.goldix.org/grafana/d/UID/dash
extra_http_headers:
Authorization: "Bearer glsa_xxxxxxxxxxxx"
Без этого Grafana с auth gate показывает empty login page (см. test
2026-05-22 ночью: page.screenshot вернул только footer "Documentation/
Support/Community" — content area empty потому что unauthorized).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>