You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IPC clients cannot capture their frame: MCP capture_frame 'not wired', per-exe atlas trigger and service screenshot trigger not serviced #1810
On the IPC / service path there is no way to capture a client's frame from that client's side. Every per-app capture route fails, so a standalone forced-IPC (or shell) client's composited output can't be measured from the app.
Repro (win box, dev runtime built from fix/1795-local2d-flatten-honest, 2026-10-03)
Start the service, then run cube_zones_d3d11_win with XRT_FORCE_MODE=ipc DISPLAYXR_ZONES=1 DISPLAYXR_MCP=1.
route
result
per-app MCP capture_frame on \.\pipe\displayxr-mcp-<pid>
{"error":"capture_frame not wired: compositor has not registered a handler. Rebuild with the MCP capture hooks enabled for this graphics API."}. The IPC client compositor (client_d3d11) never calls oxr_mcp_tools_set_capture_handler().
never consumed: the trigger file stays on disk and no PNG is written
service %TEMP%\workspace_screenshot_trigger
never consumed for a standalone client whose DP runs transparency = client-present. No capture WARN at all, so the pipeline never reached a capture site.
The in-process compositors serve all of these, and CLAUDE.md says xrCaptureAtlasDXR routes through an "IPC branch". In practice none of the per-app paths reach the service's per-client atlas.
Why it matters
Colour work on the service path (#1795, ADR-044 §7: pure-zones / Local2D commits) can't be verified numerically from the client. The service stamps Local2D into the per-client atlas, so an atlas capture would be the oracle.
Expected
For an IPC client, capture_frame (and the per-exe trigger) should request the service's per-client atlas over IPC: pre-weave, ADR-044 §5 semantics, raw alpha under DXR_ATLAS_CAPTURE_RAW_ALPHA. Alternatively, the service-side screenshot trigger should also fire on the client-present / standalone path.
Shell-mode capture via the shell's MCP capture_frame (xrCaptureWorkspaceFrameDXR) is a separate route and is not covered by this report.
Also failing: the shell's MCP capture_frame (\.\pipe\displayxr-mcp-shell, wraps xrCaptureWorkspaceFrameDXR). It returned {"ok":false,"path_prefix":"...\Temp\displayxr_capture"} for a workspace with one cube_zones_d3d11_win client. Setup: installed shell v2.3.2 on a dev service built from #1809's branch, 2026-10-03. David asked for this to be fixed so agents can verify the service path autonomously.
Activity
dfattal commentedon Oct 3, 2026
Also failing: the shell's MCP
capture_frame(\.\pipe\displayxr-mcp-shell, wrapsxrCaptureWorkspaceFrameDXR). It returned{"ok":false,"path_prefix":"...\Temp\displayxr_capture"}for a workspace with onecube_zones_d3d11_winclient. Setup: installed shell v2.3.2 on a dev service built from #1809's branch, 2026-10-03. David asked for this to be fixed so agents can verify the service path autonomously.fix(capture): IPC clients can capture their own atlas (#1810) (#1811)