# Adom Panel Catalog

This skill lists all available panels and links to panel-specific skills that provide dedicated APIs for controlling individual panels.

For **adding/removing tabs, resizing splits, querying the layout, and knowing which owner and repo you are in**, use the `adom-workspace-control` skill (`~/.claude/skills/adom/guides/adom-workspace-control.md`).

## Web View Panel API

The Web View panel (`adom/a1b2c3d4-0031-4000-a000-000000000031`) supports these actions via `PATCH https://hydrogen.adom.inc/api/panels/webview/{owner}/{repo}`:

| Action | Required Fields | Description |
|--------|----------------|-------------|
| `navigate` | `url` (string) | Load a URL in the iframe |
| `refresh` | — | Reload the current page |
| `setHeaderHidden` | `hidden` (boolean) | Show/hide the address bar |
| `setProxyEnabled` | `enabled` (boolean) | Toggle proxy mode (navigation & scroll tracking) |

Example: `curl -s -X PATCH -H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" -d '{"panelId":"<leaf-id>","action":"navigate","url":"https://example.com"}' "https://hydrogen.adom.inc/api/panels/webview/$OWNER/$REPO"`

All actions return `204 No Content`. The `panelId` is the leaf node ID whose active tab is a Web View. Some sites block iframe embedding — proxy mode can help bypass `X-Frame-Options` restrictions.

## Sandbox Panel API

The Sandbox panel (`adom/a1b2c3d4-5555-4000-a000-000000000050`) executes JavaScript in an isolated `<iframe sandbox="allow-scripts">`. See `sandbox/SKILL.md` for full docs.

| Action | Required Fields | Returns |
|--------|----------------|---------|
| `eval` | `code` (string) | `{ status: "executed", result? }` or `{ status: "error", error }` or `{ status: "queued" }` |
| `reset` | — | `204` |
| `setHeaderHidden` | `hidden` (boolean) | `204` |

**Endpoint:** `PATCH https://hydrogen.adom.inc/api/panels/sandbox/{owner}/{repo}`

**CLI:** `adom-cli hydrogen sandbox eval|reset|set-header`

## Screenshot API (all panels)

Screenshots are now workspace-level and work on **any panel type**, not just sandbox.

**Endpoint:** `PATCH https://hydrogen.adom.inc/api/workspaces/editor/{owner}/{repo}/current/screenshot`

| Scope | What it captures | Methods |
|-------|-----------------|---------|
| `panel` | A single panel | `element-capture` (default) or `html2canvas` (sandbox only) |
| `workspace` | All panels side by side | `element-capture` only |
| `screen` | Entire display | `element-capture` only |

**CLI:**
```bash
adom-cli hydrogen screenshot panel --panel-id <leaf-id>          # active tab
adom-cli hydrogen screenshot panel --tab-id <tab-id>             # specific tab (auto-finds pane)
adom-cli hydrogen screenshot panel --panel-id <id> --tab-id <id> # explicit pane + tab
adom-cli hydrogen screenshot workspace                           # all panels
adom-cli hydrogen screenshot screen                              # entire display
```

User must enable sharing via the monitor icon in the nav bar. On 504 timeout, the browser **automatically prompts the user** — tell them sharing was requested, retry after a few seconds. `html2canvas` works without sharing but only for sandbox panels.

## Singleton Panels

These may only appear **once** in the entire workspace. Check the current layout before adding — if already present, tell the user rather than adding a duplicate.

| Full ID | Name |
|---------|------|
| `adom/a1b2c3d4-1111-4000-a000-000000000001` | 3D Viewer |
| `adom/a1b2c3d4-0012-4000-a000-000000000012` | Schematic Editor |

## Full Panel Catalog

### Development

| Full ID | Name | Description |
|---------|------|-------------|
| `adom/a1b2c3d4-eeee-4000-a000-00000000000e` | Visual Studio Code | Embedded VS Code editor |
| `adom/a1b2c3d4-0012-4000-a000-000000000012` | Schematic Editor | Circuit schematic editor *(singleton)* |
| `adom/a1b2c3d4-0014-4000-a000-000000000014` | Script Runner | Execute automation scripts |

### Control

| Full ID | Name | Description |
|---------|------|-------------|
| `adom/a1b2c3d4-3333-4000-a000-000000000003` | Motor Control | XRP robot motor speed/direction |
| `adom/a1b2c3d4-4444-4000-a000-000000000004` | LED Control | XRP robot LED color/brightness |
| `adom/a1b2c3d4-5555-4000-a000-000000000005` | Servo Control | XRP robot servo angle |
| `adom/a1b2c3d4-001b-4000-a000-00000000001b` | Drone Control | Drone flight control and telemetry |
| `adom/a1b2c3d4-001c-4000-a000-00000000001c` | ESC Control | Electronic Speed Controller |
| `adom/a1b2c3d4-0010-4000-a000-000000000010` | Lights Control | RGB/white LED strip with color wheel |
| `adom/a1b2c3d4-0022-4000-a000-000000000022` | Workcell Power | Power supply voltage/current limits |
| `adom/a1b2c3d4-0023-4000-a000-000000000023` | Basic Control Panel | GPIO pin modes and digital write |

### Visualization

| Full ID | Name | Description |
|---------|------|-------------|
| `adom/a1b2c3d4-1111-4000-a000-000000000001` | 3D Viewer | Workcell/robot 3D view *(singleton)* |
| `adom/a1b2c3d4-001a-4000-a000-00000000001a` | Babylon OTB | Babylon.js 3D viewer with OTB support |
| `adom/a1b2c3d4-6666-4000-a000-000000000006` | IMU Sensor | Accelerometer, gyroscope, orientation |
| `adom/a1b2c3d4-8888-4000-a000-000000000008` | Time of Flight Sensor | ToF distance readings |
| `adom/a1b2c3d4-9999-4000-a000-000000000009` | Ultrasonic Sensor | Ultrasonic distance / obstacle detection |
| `adom/a1b2c3d4-aaaa-4000-a000-00000000000a` | Line Follower | Line following sensor array |
| `adom/a1b2c3d4-0015-4000-a000-000000000015` | Temperature Graph | Real-time temperature graphing |
| `adom/a1b2c3d4-0016-4000-a000-000000000016` | Chip Data | Microchip data monitoring |
| `adom/a1b2c3d4-0017-4000-a000-000000000017` | Chip Statistics | Microchip performance metrics |
| `adom/a1b2c3d4-0018-4000-a000-000000000018` | Oven Data | Oven temperature/control monitoring |
| `adom/a1b2c3d4-0019-4000-a000-000000000019` | ToF Sensor | Time-of-Flight data visualization |
| `adom/a1b2c3d4-001d-4000-a000-00000000001d` | Bosch Sensors | Bosch sensor suite monitoring |
| `adom/a1b2c3d4-001e-4000-a000-00000000001e` | BMP Sensor | Bosch BMP pressure/temperature |
| `adom/a1b2c3d4-0020-4000-a000-000000000020` | BMV Sensor | Bosch BMV sensor visualization |
| `adom/a1b2c3d4-0021-4000-a000-000000000021` | UWB Sensor | Ultra-Wideband positioning |

### Media

| Full ID | Name | Description |
|---------|------|-------------|
| `adom/a1b2c3d4-ffff-4000-a000-00000000000f` | Live Stream | Live camera: static/free-moving or XY zoom |
| `adom/a1b2c3d4-ffff-4000-a000-000000000100` | WebRTC Player | Single WebRTC video stream |
| `adom/a1b2c3d4-2660-4a00-a000-000000000266` | XY Zoom Camera | Dual WebRTC streams with minimap |

### Utility

| Full ID | Name | Description |
|---------|------|-------------|
| `adom/a1b2c3d4-0011-4000-a000-000000000011` | System Log | Real-time system log with filtering |
| `adom/a1b2c3d4-bbbb-4000-a000-00000000000b` | Robot Log | XRP robot console output |
| `adom/a1b2c3d4-7777-4000-a000-000000000007` | Battery Charger | Battery charging status and power |
| `adom/a1b2c3d4-cccc-4000-a000-00000000000c` | Curriculum | XRP robot educational content |
| `adom/a1b2c3d4-0031-4000-a000-000000000031` | Web View | Embedded browser — load any URL. **Pass `initialState: { "url": "..." }` at creation time** to pre-load a URL instead of navigating after. |
| `adom/a1b2c3d4-5555-4000-a000-000000000050` | Sandbox | Isolated JS execution environment — eval code, take screenshots, reset state. See `sandbox/SKILL.md`. |
