Environment: omp (darwin-arm64), session browser attached to a relay Chrome (http://127.0.0.1:9224), macOS 26 (Kernel 25.6.0), keystone @getpipher/keystone from ~/.omp/plugins/node_modules.
Repro (the documented §7.2 omp path):
- omp session whose
browser global attaches to the user's relay Chrome (not a spawned headless).
- In the eval kernel:
const { render } = await import('<plugins>/@getpipher/keystone/engine/render-omp.mjs'); await render({ htmlPath, viewports: [1280, 375], outDir })
- Driver opens the tab fine (
Opened tab "keystone-1280-…" on relay), then dies at screenshot:
ToolError: The attached browser tab is not visible; switch to it before taking a screenshot
Expected: §7.2 renders work on any omp session, including relay-attached ones.
Actual: omp's facade tab.screenshot() guard requires the tab to be the visible tab; background relay tabs always fail. driver-omp-native.mjs comments assume "shared, headless, launch-on-first-use" — that assumption doesn't hold on relay sessions.
Workaround that worked (no tab-switching needed): replace the tab's screenshot method on a clone — call raw Puppeteer page.screenshot({ encoding: 'base64' }) via tab.run and return a data: URL; driver-omp-native's writeScreenshot already handles data: strings. CDP captureScreenshot renders background tabs fine. Suggest the driver do this internally (or offer a transport: 'raw-cdp' option / bringToFront fallback) so the documented one-import flow works on relay sessions.
Happy to verify a fix against my session. (Also: after this failure, render-core leaves the opened tab behind — the error path doesn't close it.)
Environment: omp (darwin-arm64), session browser attached to a relay Chrome (http://127.0.0.1:9224), macOS 26 (Kernel 25.6.0), keystone @getpipher/keystone from ~/.omp/plugins/node_modules.
Repro (the documented §7.2 omp path):
browserglobal attaches to the user's relay Chrome (not a spawned headless).const { render } = await import('<plugins>/@getpipher/keystone/engine/render-omp.mjs'); await render({ htmlPath, viewports: [1280, 375], outDir })Opened tab "keystone-1280-…" on relay), then dies at screenshot:Expected: §7.2 renders work on any omp session, including relay-attached ones.
Actual: omp's facade
tab.screenshot()guard requires the tab to be the visible tab; background relay tabs always fail. driver-omp-native.mjs comments assume "shared, headless, launch-on-first-use" — that assumption doesn't hold on relay sessions.Workaround that worked (no tab-switching needed): replace the tab's
screenshotmethod on a clone — call raw Puppeteerpage.screenshot({ encoding: 'base64' })viatab.runand return adata:URL; driver-omp-native'swriteScreenshotalready handlesdata:strings. CDP captureScreenshot renders background tabs fine. Suggest the driver do this internally (or offer atransport: 'raw-cdp'option / bringToFront fallback) so the documented one-import flow works on relay sessions.Happy to verify a fix against my session. (Also: after this failure,
render-coreleaves the opened tab behind — the error path doesn't close it.)