name: hydrogen-web-control description: > What you CAN and (mostly) CANNOT drive in the Hydrogen web editor (hydrogen.adom.inc///edit) from the cloud, and why its embedded Claude Code panel input is unreachable by automation. Read before trying to type into a Hydrogen Claude tab. Trigger words: hydrogen editor, hydrogen web control, type into the claude tab, drive hydrogen, galliaApril editor, claude panel input.

Hydrogen web control

The Hydrogen editor (https://hydrogen.adom.inc/<user>/<env>/edit) is a web app the user runs in Chrome or Edge. You can reach its top frame via the browser extension (native-browser-control, remember "browser":"edge" if it's in Edge). But its embedded Claude Code panel input is buried in nested cross-origin webviews and is NOT reachable by any automation we have. This skill exists so you don't burn a session rediscovering that.

The structure (why the Claude input is unreachable)

hydrogen.adom.inc/<user>/<env>/edit        <- top page (browser-extension reachable)
  └─ iframe  <user>-<env>-....adom.cloud    <- CROSS-ORIGIN (accessible:false)
       └─ iframe  (VS Code / code-server)    <- another layer
            └─ webview  (Claude Code panel)   <- the "ctrl esc to focus" input lives here

What the top frame exposes: a single textarea with placeholder "Plan/Build your project" (Hydrogen's own launcher), NOT the Claude chat input. The Claude input is several cross-origin frames down.

What FAILS (all tested, all dead ends)

  • nbrowser/CDP eval (Chrome AND Edge): top-frame only. It can't cross into the cross-origin iframe, and nbrowser has no frame-targeting (allFrames/frameUrl/frame params are ignored). iframe.contentDocument -> accessible:false.
  • OS SendInput (desktop_click + desktop_type + desktop_press_key, and the "ctrl esc to focus Claude" shortcut): reaches the browser and Edge's NATIVE UI (your text lands in Edge's search box, not Claude) but does NOT register in the webview editor. Always screenshot, you'll see the placeholder unchanged.
  • UIA (desktop_find_control): the webview's shadow DOM isn't exposed; returns the document fallback, not the input.

What WORKS

  • Reading/driving the top frame (the "Plan/Build your project" textarea, page chrome) via nbrowser_eval. Set a textarea value with the native setter: Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,'value').set.call(ta, text) then dispatch input.
  • Screenshotting the Hydrogen window (desktop_screenshot_window, background).
  • Navigating the top page.

If you need the Hydrogen Claude to run a prompt

You can't type it in programmatically. Options:

  1. Ask the user to paste the prompt into that Claude tab (it's the one case where asking is correct, you genuinely cannot do it). If it's a galliaApril-env Claude in bypass mode, it has relay access and will drive Fusion/the browser itself, see claude-control.
  2. Do the work yourself instead of delegating to that sibling, you have the same relay access it does.

The real unlock (flag it to whoever owns adom-browser-extension): frame-targeted eval so CDP can address a nested webview's execution context.