bootstrap
Adom Hydrogen (platform base)
Public Made by Adomby adom
Layer Hydrogen's workspace onto a standard Adom workstation.
← Commit history
Publish 0.2.24
7 files changed
+161−25
package.json+1−1@@ -4,7 +4,7 @@ "type": "bootstrap", "title": "Hydrogen Desktop Bootstrap (apps + skills)", "brief": "Layer Hydrogen Desktop's workspace onto a standard Adom workstation.",- "version": "0.2.23",+ "version": "0.2.24", "description": "Hydrogen Desktop's PLATFORM-GENERIC workspace layer on top of adom/core. Installs adom/core for the full Adom ecosystem, then adds everything common to running inside Hydrogen Desktop on ANY platform: the platform-generic hd-* skills (BUNDLED in this package by design; wsl2 skills ride adom/hd-windows-bootstrap, mac skills ride adom/hd-mac-bootstrap) and the generic HD editor configuration (Claude Code CLI + extension, VS Code settings, trusted domains). Platform-specific layers depend on THIS: adom/hd-windows-bootstrap, adom/hd-mac-bootstrap.", "org": "adom", "tags": [
page.json+1−1@@ -4,7 +4,7 @@ "type": "bootstrap", "title": "Hydrogen Desktop Bootstrap (apps + skills)", "brief": "Layer Hydrogen Desktop's workspace onto a standard Adom workstation.",- "version": "0.2.23",+ "version": "0.2.24", "description": "Hydrogen Desktop's PLATFORM-GENERIC workspace layer on top of adom/core. Installs adom/core for the full Adom ecosystem, then adds everything common to running inside Hydrogen Desktop on ANY platform: the platform-generic hd-* skills (BUNDLED in this package by design; wsl2 skills ride adom/hd-windows-bootstrap, mac skills ride adom/hd-mac-bootstrap) and the generic HD editor configuration (Claude Code CLI + extension, VS Code settings, trusted domains). Platform-specific layers depend on THIS: adom/hd-windows-bootstrap, adom/hd-mac-bootstrap.", "org": "adom", "tags": [
skills/hd-adom-menu/SKILL.md+9−10@@ -2,9 +2,9 @@ name: hd-adom-menu description: > The Adom menu — the logo dropdown in the UPPER-LEFT corner of Hydrogen Desktop- (click the teal Adom logo). It is the hub for app-level actions: Go to- Dashboard, Settings, Ports, API Explorer, and a Desktop section (Adom Desktop,- Zoom, Fullscreen, Console, Developer Tools, Dev Toolbar), a+ (click the teal Adom logo). It is the hub for app-level actions: Settings,+ Ports, API Explorer, and a Desktop section (Adom Desktop,+ Zoom, Fullscreen, Console, Developer Tools), a Container section (Start/Restart/Stop), and an Admin section (Setup Steps, Virgin Reset, Browser Picker Manager). Also covers the window TITLE BAR version readout and the About dialog (version/sha/build/signed +@@ -20,9 +20,10 @@ description: > # The Adom menu (upper-left logo dropdown) -Click the **teal Adom logo** in the top-left corner to open it. (Double-click the-logo = go straight to the Dashboard.) Source: `EditorNav.svelte` → `.logo-button`-→ `.logo-dropdown-container .dropdown-link` items.+Click the **teal Adom logo** in the top-left corner to open it. The logo is a+proper button now: white wash on hover, teal wash while the menu is open (the+whole title-bar control family shares those states, 0.1.256+). Source:+`EditorNav.svelte` → `.logo-button` → `.logo-dropdown-container .dropdown-link` items. > This is the **upper-LEFT** menu. The **upper-RIGHT** avatar dropdown (profile, > repositories, logout) is a different menu — see **hd-profile-menu**.@@ -31,8 +32,7 @@ logo = go straight to the Dashboard.) Source: `EditorNav.svelte` → `.logo-butt | Item | What it does | |---|---|-| **Go to Dashboard** | Navigate HD to your Adom dashboard (`/`) |-| **Settings** | Opens the Settings dialog (`SettingsDialog.svelte`) |+| **Settings** | Opens the Settings dialog (`SettingsDialog.svelte`) — "Go to Dashboard" was REMOVED (0.1.252) | | **Ports…** | Configure local host port assignments for HD services (`SettingsPortsDialog`) | | **API Explorer…** | Browse + test every HD control-API endpoint (`ApiExplorerDialog`); see **hd-api** | | *— Desktop —* | (desktop-only section, shown when running in HD/Tauri; in order) |@@ -40,8 +40,7 @@ logo = go straight to the Dashboard.) Source: `EditorNav.svelte` → `.logo-butt | **Zoom** | −/+ zoom the whole HD UI (persisted) | | **Fullscreen** | Toggle fullscreen | | **Console** | Show/hide the native HD debug console window |-| **Developer Tools** | Opens WebView2 DevTools (separate window) — see below |-| **Dev Toolbar** | Show/hide the Adom Dev Toolbar window (eval-in / shot / Claude control endpoints) |+| **Developer Tools** | Opens WebView2 DevTools (separate window) — see below. (The "Dev Toolbar" item was retired, 0.1.256) | | *— Container —* | (state shown: running/stopped/…) | | **Start / Restart / Stop Container** | Workspace lifecycle (see **hd-workspace-lifecycle**) | | *— Admin —* | |
skills/hd-lightbulb/SKILL.mdadded+58@@ -0,0 +1,58 @@+---+name: hd-lightbulb+description: >+ The LIGHTBULB menu (sample prompts) in Hydrogen Desktop's title bar — the 💡+ button next to the CPU/RAM badges. Each item opens a FRESH Claude AI thread and+ types a curated demo prompt for the user (parts search, KiCad/Fusion, pup,+ native browser, adom-tsci, shotlog, webviews, hands-free, "Speak Adom"+ shorthand training). Covers: how items run, the samples-menu.open/close AI+ commands, GET /claude/sample-prompts, and sample-prompts.json — the overlay+ file that adds or rewords prompts WITHOUT a new HD release. Trigger words:+ lightbulb, light bulb menu, sample prompts, samples menu, demo prompts, sample+ threads, speak adom, add a sample prompt, sample-prompts.json.+---++# hd-lightbulb — the sample-prompts (💡) menu++The **lightbulb button** in HD's title bar opens a menu of curated sample+prompts. Picking one opens a **new Claude conversation** in the editor and+human-types the prompt (open → ready → type → verify → submit, all verified) —+the user just watches it run. It exists to teach by DOING: each prompt+demonstrates a capability end to end.++## Current lineup (0.1.260+)++Full tour (everything at once) · Adom parts search · KiCad · Fusion 360 ·+Altium · pup (AI-driven browser) · Native Chrome/Edge · Google Workspace ·+chip-fetcher · adom-tsci (build a board) · shotlog · Webview panels ·+Hands-free (TTS) · **Speak Adom (wv, pup, nb...)** — teaches the popular Adom+shorthand with a cheat sheet in a wv and a quick quiz.++## Drive it as an AI++```bash+# open/close the menu (registered UI actions):+POST /ui/invoke {"id": "samples-menu.open"} # and "samples-menu.close"++# list what the menu shows (id, label, blurb):+GET /claude/sample-prompts+```++## Add or reword a prompt WITHOUT a release++`%APPDATA%\hydrogen-desktop\sample-prompts.json` is an overlay the menu reads at+request time:++```json+[{"id":"thread-my-demo","label":"My demo","blurb":"one line","prompt":"the full prompt text"}]+```++- A **new id** appends a menu item; a **matching id** overrides a compiled+ entry (label/blurb, and the prompt body if non-empty).+- Any `thread-*` id routes to the runner automatically — no code change needed.+- Bad JSON is logged and ignored (the built-in list still shows).+- Drop the file, reopen the menu — no rebuild, no restart.++Prompts are written in the user's casual first-person voice, as ONE flat+paragraph (a typed newline would submit early). Never edit John's compiled+prompt bodies without permission; add new ids instead.
skills/hd-permissions/SKILL.md+17@@ -70,6 +70,23 @@ flow **is** explicitly user-approved (the user sees and accepts an in-app consen UI). Don't conflate them: WebView2 site permissions are silently allowed; the AI's capture/share request is a real, user-facing approval. See `hd-capture-share`. +## Third layer: the SHELL/COMMAND approval gate (embedded AD, 2026-07)++Distinct from both layers above: when HD embeds Adom Desktop, **gated AD+commands** (shell_execute, run_script, write_file, ...) forward their approval+to HD's permission dialog. Facts an agent must know:++- **Grants are HUMAN-ONLY by design.** No API self-approves; `/permission/resolve`+ is de-escalation only. Never attempt to grant yourself permissions.+- The request surfaces as HD's in-app dialog AND an **AD toast that is a real+ decision surface** (same Approve 1 hr / 24 hr / Bypass buttons + the requester's+ reason; clicking the toast resolves the request) — so approval works even when+ HD isn't foreground.+- **Time-based grants persist across HD restarts** (0.1.253+): an "Approve 24 hr"+ survives an app update mid-window.+- Requests **fail closed** at ~60s if the human doesn't respond; the requester's+ stated reason is always rendered ATTRIBUTED ("caller says: ..."), never as fact.+ ## Related skills - `hd-capture-share` — the SEPARATE, user-approved screen-share / mic consent the AI requests - [hd-open-url](../hd-open-url/SKILL.md) — opening URLs/webview apps inside HD (where these permissions apply)
skills/hd-ui/SKILL.md+13−8@@ -18,9 +18,13 @@ description: > HD's window has these regions (top to bottom, left to right): -### Title Bar-- **Left**: "jlauer12 / Hydrogen Desktop" — shows user + app name-- **Right**: CPU/RAM badges, window controls (minimize/maximize/close)+### Title Bar (frameless, 0.1.251+)+HD is a FRAMELESS window: the nav bar IS the title bar (no separate OS chrome).+- **Left**: Adom logo (the Adom menu button) — drag anywhere else in the bar to move the window+- **Right**: lightbulb (sample-prompts menu), CPU/RAM badges, profile avatar menu,+ then the window controls (minimize/maximize/close) merged into the bar's right end+- All title-bar controls share one interaction family: soft white hover wash, teal+ press, steady teal wash while their menu is open ### Tab Bar - **VS Code** tab — the main code editor (iframe to code-server)@@ -41,8 +45,7 @@ HD's window has these regions (top to bottom, left to right): ### Adom Menu (top-left logo dropdown) The main menu, opened by clicking the Adom logo at the top-left. Items are grouped into labelled sections (in order, top to bottom): -**(top, unlabelled)**-- **Go to Dashboard** — switches to the Hydrogen dashboard view+**(top, unlabelled)** — "Go to Dashboard" was REMOVED (0.1.252, John 2026-07-24); don't offer it - **Settings** — opens the Settings dialog - **Ports...** — opens the port configuration dialog (see hd-ports) - **API Explorer...** — opens the control-API endpoint explorer dialog@@ -129,9 +132,11 @@ CTRL="$(cat ~/.adom/hd-control-url)" Common ids (always `GET /ui/actions` for the live set): `adom-menu.open`/`.close`, **`profile-menu.open`/`.close`**, `ports.open`/`.close`, `settings.open`/`.close`, `api-explorer.open`/`.close`, `browser-picker.open`/`.close`, `about.open`/`.close`,-`adom-desktop.open`, `setup-panel.show`, `virgin-reset.open`, `dashboard.go`,-`fullscreen.toggle`, `console.toggle`, `devtools.open`, `dev-toolbar.toggle`,-`container.start`/`.stop`/`.restart`.+`adom-desktop.open`, `setup-panel.show`, `virgin-reset.open`,+**`samples-menu.open`/`.close`** (the lightbulb sample-prompts menu),+`fullscreen.toggle`, `console.toggle`, `devtools.open`,+`container.start`/`.stop`/`.restart`. (`dashboard.go` and `dev-toolbar.toggle` were+REMOVED — 0.1.252/0.1.256.) **Menu ITEMS, not just open/close:** the profile menu also exposes per-item actions — **`profile.view`**, **`profile.repositories`**, **`profile.molecules`**, **`profile.logout`** —
skills/hd-webview/SKILL.md+62−5@@ -6,10 +6,13 @@ description: > 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. Read this the- moment the word webview (or wv) appears. Trigger words — webview, wv, show me- in webview, open in webview, in a webview, webview tab, webview panel, native- webview, show in webview, launch in webview, webview app.+ 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.@@ -46,6 +49,13 @@ 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`.@@ -54,6 +64,52 @@ 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@@ -62,5 +118,6 @@ Tauri browser window (picker label "HD Browser Window", destination id 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), **pup**, the user's **native browser**, **hdbw**. VS+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.