Adom Hydrogen (platform base)
Public Made by Adomby adom
Layer Hydrogen's workspace onto a standard Adom workstation.
name: hd-webview
description: >
WEBVIEW — what the word "webview" means in Hydrogen Desktop and exactly how to
open one. When the user says "show me in webview", "open it in webview", "in a
webview", "webview panel", "wv", or asks to show ANY app/page/tool "in webview",
it ALWAYS means a native Hydrogen workspace webview tab opened via
adom-cli hydrogen webview open-or-refresh — NEVER VS Code's built-in Simple
Browser, never an editor-internal browser, never an iframe hack. ALSO covers the
External Webview (extwv): the opt-in real-browser panel for sites that refuse to
be embedded (Google, Amazon), and the "This site can't be embedded" handoff card.
Read this the moment the word webview (or wv, or extwv) appears. Trigger words —
webview, wv, extwv, external webview, show me in webview, open in webview, in a
webview, webview tab, webview panel, native webview, show in webview, launch in
webview, webview app, site can't be embedded, refuses to embed, x-frame-options.
hd-webview — "webview" means a native Hydrogen webview tab. Period.
When a user (or a setup prompt) says "show me X in webview", they mean a native Hydrogen Desktop webview tab — a first-class panel in the HD workspace, next to their editor. Nothing else qualifies.
⛔ NEVER (the 2026-07-16 incident — do not repeat)
- NEVER open VS Code's built-in "Simple Browser" (or any editor-internal browser page) to satisfy a webview request. A setup-thread AI did this once — the user called it "an awful outcome that can never happen again." The Simple Browser is not the HD webview: it's cramped, it isn't a workspace tab, and it breaks every downstream flow (screenshots, captions, panel routing).
- Don't fall back silently to pup or a native browser either — those are
different, deliberate destinations (see
hd-open-urlfor the decision guide). "webview" is not ambiguous; it names exactly one thing.
✅ The exact command (idempotent — safe to re-run)
# open (or refresh, if a tab with this name already exists) a webview tab:
adom-cli hydrogen webview open-or-refresh --name "<Tab Name>" --url "<url>" --panel-id <id>
# ⚠️ --panel-id is REQUIRED to CREATE a new tab (without it: "Tab 'X' not found
# and --panel-id not provided"). Get a panel id first:
adom-cli hydrogen workspace get # or: adom-cli hydrogen workspace tabs
# Re-running with the same --name once the tab exists just navigates/refreshes
# (no --panel-id needed). The --name is your stable handle.
Local Adom apps (parts search, chip-fetcher, adom-tsci previews, wiki pages)
are all shown this way: start/locate the app's local URL, then
open-or-refresh it into a named tab.
Fullscreen: the 90% dialog
Every webview toolbar has a fullscreen button: it grows the page to a 90% dialog over the HD window (never real OS fullscreen — the content stays sandboxed inside HD). Exit via the close button, clicking outside, or Esc. Pages that call the browser fullscreen API get the same 90% treatment.
Verify you actually did it
The tab must appear in adom-cli hydrogen workspace tabs with your --name.
If it isn't there, you did NOT open a webview — go again.
For the broader "which surface should this URL open in?" decision (webview vs pup vs native browser vs headless fetch), see hd-open-url.
extwv — External Webview: the real-browser panel for sites that refuse embedding
The default webview tab is an iframe, so sites that send
X-Frame-Options: deny/sameorigin or a restrictive CSP frame-ancestors
(Google, Amazon, most login walls) will not load in it. HD 0.1.257+ handles this
with a second panel type: External Webview (extwv) — the same tab/pane
ergonomics, but backed by a REAL native browser surface (WebView2) that loads
anything.
How users hit it: navigating a webview to a blocked site shows a handoff card — "This site can't be embedded" — with two buttons: Open in External Webview (a new extwv tab in the same pane) and Open in HD Browser Window (hdbw). Users can also add one directly from the + panel menu → "External Webview".
Check embeddability up front (before choosing a surface for a known URL):
# HD control API — returns {"embeddable": bool, "reason": "...", "title": "<page title>"}
GET http://127.0.0.1:{control}/webview-can-embed?url=https://google.com
# → embeddable=false, reason "x-frame-options: sameorigin" → use extwv (or hdbw)
Open an extwv tab programmatically (HD control API; the adom-cli hydrogen webview verbs target the DEFAULT webview panel type, not extwv):
POST http://127.0.0.1:{control}/workspace/tabs
{"panelType": "adom/a1b2c3d4-0032-4000-a000-000000000032",
"displayName": "Google", "initialState": {"url": "https://google.com"}}
Know the trade-offs (why extwv is opt-in, not the default):
- It is a native OS surface: HD's own HTML can never draw on top of it (menus and overlays are designed around it, but don't try to float custom UI over an extwv pane).
- Heavier than an iframe tab; prefer the default webview whenever the site embeds fine.
- Reload lives in the tab's right-click menu (0.1.258+), and the tab's hover tooltip identifies the panel as "External Webview (extwv)" (0.1.261+), so you can always tell the two apart.
Vocabulary: "open it in extwv" == this panel. See the shared Adom glossary
(definitions skill / wiki.adom.inc/adom/definitions) for the full surface
vocabulary.
hdbw — HD's standalone browser window (the fourth surface)
Under Hydrogen Desktop there is one more surface: hdbw, HD's standalone built-in
Tauri browser window (picker label "HD Browser Window", destination id
webview-window, window label hd-browse-*). It is a separate OS window HD manages
directly — bigger than a pane tab, still not a real browser. Open one first-class via
POST /hdbw/open {"url": ...} on HD's control API (0.1.113+), or pick "HD Browser
Window" in the Browser Picker. The surface shortlist: wv (this skill's webview
panel; HD's pane tab inside HD), extwv (the real-browser pane tab for embed-blocked
sites, above), pup, nb (the user's native browser via abe), hdbw. VS
Code's Simple Browser is NEVER one of them.
---
name: hd-webview
description: >
WEBVIEW — what the word "webview" means in Hydrogen Desktop and exactly how to
open one. When the user says "show me in webview", "open it in webview", "in a
webview", "webview panel", "wv", or asks to show ANY app/page/tool "in webview",
it ALWAYS means a native Hydrogen workspace webview tab opened via
`adom-cli hydrogen webview open-or-refresh` — NEVER VS Code's built-in Simple
Browser, never an editor-internal browser, never an iframe hack. ALSO covers the
External Webview (extwv): the opt-in real-browser panel for sites that refuse to
be embedded (Google, Amazon), and the "This site can't be embedded" handoff card.
Read this the moment the word webview (or wv, or extwv) appears. Trigger words —
webview, wv, extwv, external webview, show me in webview, open in webview, in a
webview, webview tab, webview panel, native webview, show in webview, launch in
webview, webview app, site can't be embedded, refuses to embed, x-frame-options.
---
# hd-webview — "webview" means a native Hydrogen webview tab. Period.
When a user (or a setup prompt) says **"show me X in webview"**, they mean a
**native Hydrogen Desktop webview tab** — a first-class panel in the HD
workspace, next to their editor. Nothing else qualifies.
## ⛔ NEVER (the 2026-07-16 incident — do not repeat)
- **NEVER open VS Code's built-in "Simple Browser"** (or any editor-internal
browser page) to satisfy a webview request. A setup-thread AI did this once —
the user called it "an awful outcome that can never happen again." The Simple
Browser is not the HD webview: it's cramped, it isn't a workspace tab, and it
breaks every downstream flow (screenshots, captions, panel routing).
- Don't fall back silently to pup or a native browser either — those are
*different, deliberate* destinations (see `hd-open-url` for the decision
guide). "webview" is not ambiguous; it names exactly one thing.
## ✅ The exact command (idempotent — safe to re-run)
```bash
# open (or refresh, if a tab with this name already exists) a webview tab:
adom-cli hydrogen webview open-or-refresh --name "<Tab Name>" --url "<url>" --panel-id <id>
# ⚠️ --panel-id is REQUIRED to CREATE a new tab (without it: "Tab 'X' not found
# and --panel-id not provided"). Get a panel id first:
adom-cli hydrogen workspace get # or: adom-cli hydrogen workspace tabs
# Re-running with the same --name once the tab exists just navigates/refreshes
# (no --panel-id needed). The --name is your stable handle.
```
Local Adom apps (parts search, chip-fetcher, adom-tsci previews, wiki pages)
are all shown this way: start/locate the app's local URL, then
`open-or-refresh` it into a named tab.
## Fullscreen: the 90% dialog
Every webview toolbar has a **fullscreen button**: it grows the page to a 90%
dialog over the HD window (never real OS fullscreen — the content stays
sandboxed inside HD). Exit via the close button, clicking outside, or Esc. Pages
that call the browser fullscreen API get the same 90% treatment.
## Verify you actually did it
The tab must appear in `adom-cli hydrogen workspace tabs` with your `--name`.
If it isn't there, you did NOT open a webview — go again.
For the broader "which surface should this URL open in?" decision (webview vs
pup vs native browser vs headless fetch), see **hd-open-url**.
## extwv — External Webview: the real-browser panel for sites that refuse embedding
The default webview tab is an **iframe**, so sites that send
`X-Frame-Options: deny/sameorigin` or a restrictive CSP `frame-ancestors`
(Google, Amazon, most login walls) will not load in it. HD 0.1.257+ handles this
with a second panel type: **External Webview (extwv)** — the same tab/pane
ergonomics, but backed by a REAL native browser surface (WebView2) that loads
anything.
**How users hit it:** navigating a webview to a blocked site shows a handoff
card — "This site can't be embedded" — with two buttons: **Open in External
Webview** (a new extwv tab in the same pane) and **Open in HD Browser Window**
(hdbw). Users can also add one directly from the **+ panel menu → "External
Webview"**.
**Check embeddability up front** (before choosing a surface for a known URL):
```bash
# HD control API — returns {"embeddable": bool, "reason": "...", "title": "<page title>"}
GET http://127.0.0.1:{control}/webview-can-embed?url=https://google.com
# → embeddable=false, reason "x-frame-options: sameorigin" → use extwv (or hdbw)
```
**Open an extwv tab programmatically** (HD control API; the `adom-cli hydrogen
webview` verbs target the DEFAULT webview panel type, not extwv):
```bash
POST http://127.0.0.1:{control}/workspace/tabs
{"panelType": "adom/a1b2c3d4-0032-4000-a000-000000000032",
"displayName": "Google", "initialState": {"url": "https://google.com"}}
```
**Know the trade-offs** (why extwv is opt-in, not the default):
- It is a native OS surface: **HD's own HTML can never draw on top of it**
(menus and overlays are designed around it, but don't try to float custom UI
over an extwv pane).
- Heavier than an iframe tab; prefer the default webview whenever the site
embeds fine.
- Reload lives in the tab's right-click menu (0.1.258+), and the tab's hover
tooltip identifies the panel as "External Webview (extwv)" (0.1.261+), so you
can always tell the two apart.
**Vocabulary:** "open it in extwv" == this panel. See the shared Adom glossary
(`definitions` skill / wiki.adom.inc/adom/definitions) for the full surface
vocabulary.
## hdbw — HD's standalone browser window (the fourth surface)
Under Hydrogen Desktop there is one more surface: **hdbw**, HD's standalone built-in
Tauri browser window (picker label "HD Browser Window", destination id
`webview-window`, window label `hd-browse-*`). It is a separate OS window HD manages
directly — bigger than a pane tab, still not a real browser. Open one first-class via
`POST /hdbw/open {"url": ...}` on HD's control API (0.1.113+), or pick "HD Browser
Window" in the Browser Picker. The surface shortlist: **wv** (this skill's webview
panel; HD's pane tab inside HD), **extwv** (the real-browser pane tab for embed-blocked
sites, above), **pup**, **nb** (the user's native browser via abe), **hdbw**. VS
Code's Simple Browser is NEVER one of them.