bootstrap
Adom Hydrogen (platform base)
Public Made by Adomby adom
Layer Hydrogen's workspace onto a standard Adom workstation.
← Commit history
skills/hd-webview/SKILL.mddeleted−123@@ -1,123 +0,0 @@-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.