diff --git a/.opencode/skills/verify-web/SKILL.md b/.opencode/skills/verify-web/SKILL.md new file mode 100644 index 0000000..0da714f --- /dev/null +++ b/.opencode/skills/verify-web/SKILL.md @@ -0,0 +1,126 @@ +--- +name: verify-web +description: Drive and prove the protocol-visualizer-web landing page (Vite + React static marketing site) in real headless Chromium. Use when verifying any user-facing behavior of the site — hero, feature cards, AI workflow section, theme toggle, install guide — or after changing components under src/. +--- + +# Verify protocol-visualizer-web + +This skill drives the real landing page the way a user sees it: a local `vite` +dev server plus headless Chromium over CDP. No mocks, no test-only endpoints — +the page is rendered with JavaScript and asserted through DOM state, +accessibility tree, and screenshots. + +Facts established from the repo (do not re-derive unless the repo changed): + +- **Surface:** single static marketing page (`src/App.tsx` renders `Header`, + `Hero`, `Features`, `AiWorkflow`, `Screenshot`, `TryCta`, `Install`, + `Disclaimer`, `Footer`). No backend, no auth, no database, no router. +- **Run:** `bun x vite --host 127.0.0.1 --port --strictPort` from the repo + root. Ready means HTTP 200 plus `
` in the shell. + Default verify port is `5173` (`VERIFY_PORT` overrides). +- **Drive:** `scripts/drive.mjs` launches headless Chromium (Playwright-cached + build or system Chrome, resolved automatically) with a disposable profile, + navigates over CDP, evaluates DOM assertions, and captures evidence. + Zero npm dependencies — bun built-ins only. +- **Isolate:** stateless static page. Parallel runs isolate by app port + (`VERIFY_PORT`) and CDP port (`VERIFY_CDP_PORT`, default `19222`). + Each drive uses a fresh Chromium profile, so `localStorage` never leaks + between runs. Never drive a URL you did not start (e.g. someone's + `npm run dev`); refuse and start your own. +- **Shell lifetime:** background processes do not survive across separate tool + calls in this environment. Prefer the one-shot `verify.mjs` below, which + owns the server as its own child for the whole run. + +## Launch + +Recommended one-shot (launch + doctor + drive + cleanup in one command). +Run from the repo root: + +```powershell +bun .opencode/skills/verify-web/scripts/verify.mjs --feature --port 5173 +``` + +`` is one of `hero`, `features-grid`, `ai-workflow`, `theme-toggle`, +`install-guide` (see `features/`). The run directory is +`.opencode/skills/verify-web/artifacts//` (`VERIFY_RUN_ID` overrides). + +Manual launch (only for interactive debugging; must stay in the same shell +session for subsequent steps): + +```powershell +$p = Start-Process bun -ArgumentList @('x','vite','--host','127.0.0.1','--port','5173','--strictPort') -PassThru +# ... run doctor/drive against http://127.0.0.1:5173/ ... +Stop-Process -Id $p.Id -Force +``` + +Ready signal: `Vite ready` in the log AND `doctor.mjs` exit 0. + +## Doctor + +Read-only check. Run first whenever anything looks off: + +```powershell +bun .opencode/skills/verify-web/scripts/doctor.mjs --url http://127.0.0.1:5173/ +``` + +Exit 0 with `{"ok": true, ...}` means worth driving. It asserts HTTP 200, +`
`, and a dev (`/src/main.tsx`) or built (`/assets/`) client. +It never starts, stops, or mutates anything. + +## Drive + +```powershell +bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature --out +``` + +Optional: `--chrome ` (or `CHROME_PATH` env) pins the browser binary; +`--cdp-port ` (or `VERIFY_CDP_PORT`) isolates parallel runs. + +Recipe per run: launch Chromium with a fresh profile → open CDP → +`Page.navigate` → wait for `#root h1` → evaluate the feature's checks from +`features/.md` → `Page.captureScreenshot` → dump `outerHTML` → +`Accessibility.getFullAXTree` → write `result.json` (exit 0 only if every +check passes). The theme-toggle recipe clicks twice so the page is left in +its original theme. + +Conventions: prefer the ARIA/semantic handles named in the feature files +(`aria-label`, roles, heading text) over CSS position. Treat every command +as literal. + +## Evidence + +Per feature, `//` (or `/` for a single feature) contains: + +- `screenshot.png` — rendered page (1280×900) with app identity visible +- `dom.html` — rendered DOM after React hydration (proves content, not shell) +- `axtree.json` — full accessibility tree (proves ARIA handles) +- `result.json` — each check id, pass/fail, observed value + +Proof standards: exercise the real user path (navigate, read, click — never +vitest/jsdom or internal setters); capture the action and the resulting state +(a green check alone is not proof — the screenshot and DOM must show the +state); verify side effects (theme-toggle asserts `documentElement` theme AND +`localStorage`); mocks nowhere — there is no network boundary in this app +other than the two external demo URLs, which are asserted as attributes, not +fetched. Report unreachable paths with the command and unmet precondition; +never report a skipped entry point as verified through another path. + +## Cleanup + +`verify.mjs` always kills the vite child it started and deletes the Chromium +profile, then confirms the artifacts still exist — a cleanup that eats the +proof fails the run. For manual launches: `Stop-Process` what you started +(PID, never by process name). Cleanup removes instances and scratch state +only; proof artifacts under +`.opencode/skills/verify-web/artifacts//` are retained. + +## Helpers + +All helpers are dependency-free `bun` scripts; invocations are shown above: + +- `scripts/verify.mjs` — full run: spawn server, doctor, drive, teardown. +- `scripts/doctor.mjs` — read-only health check of a running instance. +- `scripts/drive.mjs` — CDP drive + evidence capture for `--feature`. + +Feature recipes live in `features/`; read `features/README.md` first, then +the matching feature file, before driving. diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/axtree.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/axtree.json new file mode 100644 index 0000000..01a1743 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/axtree.json @@ -0,0 +1,11370 @@ +[ + { + "nodeId": "726", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "aria-label", + "superseded": true + }, + { + "type": "relatedElement", + "value": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode" + }, + "nativeSource": "title" + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/" + } + } + ], + "childIds": ["831"], + "backendDOMNodeId": 726, + "frameId": "8AE6312B5CF350076BE20E6D026DCC9C" + }, + { + "nodeId": "831", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "726", + "childIds": ["856"], + "backendDOMNodeId": 831 + }, + { + "nodeId": "856", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "831", + "childIds": ["857"], + "backendDOMNodeId": 856 + }, + { + "nodeId": "857", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "856", + "childIds": ["858"], + "backendDOMNodeId": 857 + }, + { + "nodeId": "858", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "857", + "childIds": ["859", "877", "1062", "1068"], + "backendDOMNodeId": 858 + }, + { + "nodeId": "859", + "ignored": false, + "role": { + "type": "role", + "value": "banner" + }, + "chromeRole": { + "type": "internalRole", + "value": 94 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "858", + "childIds": ["860"], + "backendDOMNodeId": 859 + }, + { + "nodeId": "877", + "ignored": false, + "role": { + "type": "role", + "value": "main" + }, + "chromeRole": { + "type": "internalRole", + "value": 118 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "858", + "childIds": ["878", "894", "922", "927", "1025", "1030"], + "backendDOMNodeId": 877 + }, + { + "nodeId": "1062", + "ignored": false, + "role": { + "type": "role", + "value": "complementary" + }, + "chromeRole": { + "type": "internalRole", + "value": 22 + }, + "name": { + "type": "computedString", + "value": "Disclaimer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Disclaimer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Disclaimer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "858", + "childIds": ["1063"], + "backendDOMNodeId": 1062 + }, + { + "nodeId": "1068", + "ignored": false, + "role": { + "type": "role", + "value": "contentinfo" + }, + "chromeRole": { + "type": "internalRole", + "value": 85 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "858", + "childIds": ["1069"], + "backendDOMNodeId": 1068 + }, + { + "nodeId": "860", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "859", + "childIds": ["861", "868", "871"], + "backendDOMNodeId": 860 + }, + { + "nodeId": "861", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#top" + } + } + ], + "parentId": "860", + "childIds": ["867"], + "backendDOMNodeId": 861 + }, + { + "nodeId": "868", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "Section navigation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Section navigation" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Section navigation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "860", + "childIds": ["869", "870"], + "backendDOMNodeId": 868 + }, + { + "nodeId": "871", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "860", + "childIds": ["872", "873"], + "backendDOMNodeId": 871 + }, + { + "nodeId": "872", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "871", + "childIds": ["737"], + "backendDOMNodeId": 872 + }, + { + "nodeId": "873", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "Switch to light theme", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "Switch to light theme" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "871", + "childIds": [], + "backendDOMNodeId": 873 + }, + { + "nodeId": "878", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 211 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["879"], + "backendDOMNodeId": 878 + }, + { + "nodeId": "894", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Features" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["895"], + "backendDOMNodeId": 894 + }, + { + "nodeId": "922", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Screenshot", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Screenshot" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Screenshot" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["923"], + "backendDOMNodeId": 922 + }, + { + "nodeId": "927", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Generate protocols with AI" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Generate protocols with AI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["928"], + "backendDOMNodeId": 927 + }, + { + "nodeId": "1025", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Request access" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["1026"], + "backendDOMNodeId": 1025 + }, + { + "nodeId": "1030", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Installation guide" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "877", + "childIds": ["1031"], + "backendDOMNodeId": 1030 + }, + { + "nodeId": "1063", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1062", + "childIds": ["1067"], + "backendDOMNodeId": 1063 + }, + { + "nodeId": "1067", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1063", + "childIds": ["828"], + "backendDOMNodeId": 1067 + }, + { + "nodeId": "1069", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1068", + "childIds": ["1070", "1071"], + "backendDOMNodeId": 1069 + }, + { + "nodeId": "1070", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1069", + "childIds": ["829"], + "backendDOMNodeId": 1070 + }, + { + "nodeId": "1071", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "External links", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "External links" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "External links" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1069", + "childIds": ["1072"], + "backendDOMNodeId": 1071 + }, + { + "nodeId": "867", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "861", + "childIds": ["734"], + "backendDOMNodeId": 867 + }, + { + "nodeId": "734", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "867", + "childIds": ["-1000000496"], + "backendDOMNodeId": 734 + }, + { + "nodeId": "869", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#features" + } + } + ], + "parentId": "868", + "childIds": ["735"], + "backendDOMNodeId": 869 + }, + { + "nodeId": "870", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "868", + "childIds": ["736"], + "backendDOMNodeId": 870 + }, + { + "nodeId": "737", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "872", + "childIds": ["-1000000499"], + "backendDOMNodeId": 737 + }, + { + "nodeId": "879", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "878", + "childIds": ["880"], + "backendDOMNodeId": 879 + }, + { + "nodeId": "880", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "879", + "childIds": ["881", "884", "885"], + "backendDOMNodeId": 880 + }, + { + "nodeId": "881", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "880", + "childIds": ["882", "883"], + "backendDOMNodeId": 881 + }, + { + "nodeId": "882", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "881", + "childIds": ["738"], + "backendDOMNodeId": 882 + }, + { + "nodeId": "883", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "881", + "childIds": ["733"], + "backendDOMNodeId": 883 + }, + { + "nodeId": "733", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "PREVIEW", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "PREVIEW" + } + } + ] + }, + "properties": [], + "parentId": "883", + "childIds": ["-1000000501"], + "backendDOMNodeId": 733 + }, + { + "nodeId": "884", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "880", + "childIds": ["739"], + "backendDOMNodeId": 884 + }, + { + "nodeId": "885", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "880", + "childIds": ["886", "887"], + "backendDOMNodeId": 885 + }, + { + "nodeId": "886", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "885", + "childIds": ["740"], + "backendDOMNodeId": 886 + }, + { + "nodeId": "887", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "885", + "childIds": ["741"], + "backendDOMNodeId": 887 + }, + { + "nodeId": "895", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "894", + "childIds": ["896", "897"], + "backendDOMNodeId": 895 + }, + { + "nodeId": "896", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "895", + "childIds": ["742"], + "backendDOMNodeId": 896 + }, + { + "nodeId": "897", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "895", + "childIds": ["898", "902", "906", "910", "914", "918"], + "backendDOMNodeId": 897 + }, + { + "nodeId": "923", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "922", + "childIds": ["924"], + "backendDOMNodeId": 923 + }, + { + "nodeId": "924", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "923", + "childIds": ["925", "926"], + "backendDOMNodeId": 924 + }, + { + "nodeId": "928", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "927", + "childIds": ["929", "930", "932", "1014", "1015"], + "backendDOMNodeId": 928 + }, + { + "nodeId": "929", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "928", + "childIds": ["756"], + "backendDOMNodeId": 929 + }, + { + "nodeId": "930", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "928", + "childIds": ["757", "758", "931", "760"], + "backendDOMNodeId": 930 + }, + { + "nodeId": "932", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "928", + "childIds": ["933", "1013"], + "backendDOMNodeId": 932 + }, + { + "nodeId": "1014", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "928", + "childIds": ["762"], + "backendDOMNodeId": 1014 + }, + { + "nodeId": "1015", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "928", + "childIds": ["1016", "1017", "1021", "1023"], + "backendDOMNodeId": 1015 + }, + { + "nodeId": "1026", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1025", + "childIds": ["1027", "1028", "1029"], + "backendDOMNodeId": 1026 + }, + { + "nodeId": "1027", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1026", + "childIds": ["783"], + "backendDOMNodeId": 1027 + }, + { + "nodeId": "1028", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1026", + "childIds": ["784"], + "backendDOMNodeId": 1028 + }, + { + "nodeId": "1029", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1026", + "childIds": ["785"], + "backendDOMNodeId": 1029 + }, + { + "nodeId": "1031", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1030", + "childIds": ["1032", "1033"], + "backendDOMNodeId": 1031 + }, + { + "nodeId": "1032", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1031", + "childIds": ["786"], + "backendDOMNodeId": 1032 + }, + { + "nodeId": "1033", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1031", + "childIds": ["1034", "1048", "1058"], + "backendDOMNodeId": 1033 + }, + { + "nodeId": "1034", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1033", + "childIds": ["1035", "1036"], + "backendDOMNodeId": 1034 + }, + { + "nodeId": "1035", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1034", + "childIds": ["795"], + "backendDOMNodeId": 1035 + }, + { + "nodeId": "1036", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1034", + "childIds": ["1037", "1040", "1043", "1045", "1047"], + "backendDOMNodeId": 1036 + }, + { + "nodeId": "1048", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1033", + "childIds": ["1049", "1050"], + "backendDOMNodeId": 1048 + }, + { + "nodeId": "1058", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method B: Command line" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1033", + "childIds": ["1059", "1060"], + "backendDOMNodeId": 1058 + }, + { + "nodeId": "828", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "1067", + "childIds": ["-1000000607"], + "backendDOMNodeId": 828 + }, + { + "nodeId": "829", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + } + } + ] + }, + "properties": [], + "parentId": "1070", + "childIds": ["-1000000608"], + "backendDOMNodeId": 829 + }, + { + "nodeId": "1072", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1071", + "childIds": ["830"], + "backendDOMNodeId": 1072 + }, + { + "nodeId": "-1000000496", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "734", + "childIds": [] + }, + { + "nodeId": "735", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + } + ] + }, + "properties": [], + "parentId": "869", + "childIds": ["-1000000497"], + "backendDOMNodeId": 735 + }, + { + "nodeId": "736", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + } + ] + }, + "properties": [], + "parentId": "870", + "childIds": ["-1000000498"], + "backendDOMNodeId": 736 + }, + { + "nodeId": "-1000000499", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "737", + "childIds": [] + }, + { + "nodeId": "738", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "882", + "childIds": ["-1000000500"], + "backendDOMNodeId": 738 + }, + { + "nodeId": "-1000000501", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "733", + "childIds": [] + }, + { + "nodeId": "739", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode." + } + } + ] + }, + "properties": [], + "parentId": "884", + "childIds": ["-1000000502", "-1000000503"], + "backendDOMNodeId": 739 + }, + { + "nodeId": "740", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "886", + "childIds": ["-1000000504"], + "backendDOMNodeId": 740 + }, + { + "nodeId": "741", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + } + ] + }, + "properties": [], + "parentId": "887", + "childIds": ["-1000000505"], + "backendDOMNodeId": 741 + }, + { + "nodeId": "742", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + } + ] + }, + "properties": [], + "parentId": "896", + "childIds": ["-1000000506"], + "backendDOMNodeId": 742 + }, + { + "nodeId": "898", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["899"], + "backendDOMNodeId": 898 + }, + { + "nodeId": "902", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["903"], + "backendDOMNodeId": 902 + }, + { + "nodeId": "906", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["907"], + "backendDOMNodeId": 906 + }, + { + "nodeId": "910", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["911"], + "backendDOMNodeId": 910 + }, + { + "nodeId": "914", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["915"], + "backendDOMNodeId": 914 + }, + { + "nodeId": "918", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "897", + "childIds": ["919"], + "backendDOMNodeId": 918 + }, + { + "nodeId": "925", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/user-attachments/assets/eeb96be5-8334-4370-bd4a-1564cb12d690" + } + } + ], + "parentId": "924", + "childIds": [], + "backendDOMNodeId": 925 + }, + { + "nodeId": "926", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "924", + "childIds": ["755"], + "backendDOMNodeId": 926 + }, + { + "nodeId": "756", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "929", + "childIds": ["-1000000533"], + "backendDOMNodeId": 756 + }, + { + "nodeId": "757", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "930", + "childIds": ["-1000000534"], + "backendDOMNodeId": 757 + }, + { + "nodeId": "758", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "930", + "childIds": ["-1000000535"], + "backendDOMNodeId": 758 + }, + { + "nodeId": "931", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "930", + "childIds": ["759"], + "backendDOMNodeId": 931 + }, + { + "nodeId": "760", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + } + } + ] + }, + "properties": [], + "parentId": "930", + "childIds": ["-1000000537", "-1000000538", "-1000000539"], + "backendDOMNodeId": 760 + }, + { + "nodeId": "933", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Video" + }, + "chromeRole": { + "type": "internalRole", + "value": 182 + }, + "name": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "932", + "childIds": ["934"], + "backendDOMNodeId": 933 + }, + { + "nodeId": "1013", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "932", + "childIds": ["761"], + "backendDOMNodeId": 1013 + }, + { + "nodeId": "762", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + } + ] + }, + "properties": [], + "parentId": "1014", + "childIds": ["-1000000541"], + "backendDOMNodeId": 762 + }, + { + "nodeId": "1016", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1015", + "childIds": ["763", "764"], + "backendDOMNodeId": 1016 + }, + { + "nodeId": "1017", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1015", + "childIds": [ + "765", + "766", + "767", + "1018", + "769", + "770", + "771", + "1020", + "773" + ], + "backendDOMNodeId": 1017 + }, + { + "nodeId": "1021", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1015", + "childIds": ["774", "775", "776", "1022", "778"], + "backendDOMNodeId": 1021 + }, + { + "nodeId": "1023", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1015", + "childIds": ["779", "780", "1024", "782"], + "backendDOMNodeId": 1023 + }, + { + "nodeId": "783", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + } + ] + }, + "properties": [], + "parentId": "1027", + "childIds": ["-1000000559"], + "backendDOMNodeId": 783 + }, + { + "nodeId": "784", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + } + } + ] + }, + "properties": [], + "parentId": "1028", + "childIds": ["-1000000560"], + "backendDOMNodeId": 784 + }, + { + "nodeId": "785", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1029", + "childIds": ["-1000000561"], + "backendDOMNodeId": 785 + }, + { + "nodeId": "786", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + } + ] + }, + "properties": [], + "parentId": "1032", + "childIds": ["-1000000562"], + "backendDOMNodeId": 786 + }, + { + "nodeId": "795", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + } + ] + }, + "properties": [], + "parentId": "1035", + "childIds": ["-1000000563"], + "backendDOMNodeId": 795 + }, + { + "nodeId": "1037", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1036", + "childIds": ["787", "1038", "797", "1039", "799", "800"], + "backendDOMNodeId": 1037 + }, + { + "nodeId": "1040", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1036", + "childIds": ["788", "801", "1041", "803", "804", "1042"], + "backendDOMNodeId": 1040 + }, + { + "nodeId": "1043", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1036", + "childIds": ["789", "806", "807", "1044", "809", "810"], + "backendDOMNodeId": 1043 + }, + { + "nodeId": "1045", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1036", + "childIds": ["790", "811", "1074", "1046"], + "backendDOMNodeId": 1045 + }, + { + "nodeId": "1047", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1036", + "childIds": ["791", "813"], + "backendDOMNodeId": 1047 + }, + { + "nodeId": "1049", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1048", + "childIds": ["814"], + "backendDOMNodeId": 1049 + }, + { + "nodeId": "1050", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1048", + "childIds": ["1051", "1054", "1056"], + "backendDOMNodeId": 1050 + }, + { + "nodeId": "1059", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1058", + "childIds": ["826"], + "backendDOMNodeId": 1059 + }, + { + "nodeId": "1060", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1058", + "childIds": ["1061"], + "backendDOMNodeId": 1060 + }, + { + "nodeId": "-1000000607", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "828", + "childIds": [] + }, + { + "nodeId": "-1000000608", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "829", + "childIds": [] + }, + { + "nodeId": "830", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + } + ] + }, + "properties": [], + "parentId": "1072", + "childIds": ["-1000000609"], + "backendDOMNodeId": 830 + }, + { + "nodeId": "-1000000497", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "735", + "childIds": [] + }, + { + "nodeId": "-1000000498", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "736", + "childIds": [] + }, + { + "nodeId": "-1000000500", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "738", + "childIds": [] + }, + { + "nodeId": "-1000000502", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and " + }, + "properties": [], + "parentId": "739", + "childIds": [] + }, + { + "nodeId": "-1000000503", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "liquid volumes in real time — without leaving VSCode." + }, + "properties": [], + "parentId": "739", + "childIds": [] + }, + { + "nodeId": "-1000000504", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "740", + "childIds": [] + }, + { + "nodeId": "-1000000505", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "741", + "childIds": [] + }, + { + "nodeId": "-1000000506", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + }, + "properties": [], + "parentId": "742", + "childIds": [] + }, + { + "nodeId": "899", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "898", + "childIds": ["900", "901"], + "backendDOMNodeId": 899 + }, + { + "nodeId": "903", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "902", + "childIds": ["904", "905"], + "backendDOMNodeId": 903 + }, + { + "nodeId": "907", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "906", + "childIds": ["908", "909"], + "backendDOMNodeId": 907 + }, + { + "nodeId": "911", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "910", + "childIds": ["912", "913"], + "backendDOMNodeId": 911 + }, + { + "nodeId": "915", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "914", + "childIds": ["916", "917"], + "backendDOMNodeId": 915 + }, + { + "nodeId": "919", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "918", + "childIds": ["920", "921"], + "backendDOMNodeId": 919 + }, + { + "nodeId": "755", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer in action" + } + } + ] + }, + "properties": [], + "parentId": "926", + "childIds": ["-1000000532"], + "backendDOMNodeId": 755 + }, + { + "nodeId": "-1000000533", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + }, + "properties": [], + "parentId": "756", + "childIds": [] + }, + { + "nodeId": "-1000000534", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + }, + "properties": [], + "parentId": "757", + "childIds": [] + }, + { + "nodeId": "-1000000535", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "758", + "childIds": [] + }, + { + "nodeId": "759", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "931", + "childIds": ["-1000000536"], + "backendDOMNodeId": 759 + }, + { + "nodeId": "-1000000537", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons " + }, + "properties": [], + "parentId": "760", + "childIds": [] + }, + { + "nodeId": "-1000000538", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback " + }, + "properties": [], + "parentId": "760", + "childIds": [] + }, + { + "nodeId": "-1000000539", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop." + }, + "properties": [], + "parentId": "760", + "childIds": [] + }, + { + "nodeId": "934", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "933", + "childIds": ["935", "936", "938", "968", "969", "970", "971", "972"], + "backendDOMNodeId": 934 + }, + { + "nodeId": "935", + "ignored": false, + "role": { + "type": "role", + "value": "group" + }, + "chromeRole": { + "type": "internalRole", + "value": 93 + }, + "name": { + "type": "computedString", + "value": "buffering", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "buffering" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "buffering" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "live", + "value": { + "type": "token", + "value": "polite" + } + }, + { + "name": "atomic", + "value": { + "type": "boolean", + "value": false + } + }, + { + "name": "relevant", + "value": { + "type": "tokenList", + "value": "additions text" + } + } + ], + "parentId": "934", + "childIds": ["1076"], + "backendDOMNodeId": 935 + }, + { + "nodeId": "936", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "934", + "childIds": ["937"], + "backendDOMNodeId": 936 + }, + { + "nodeId": "938", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": ["939"], + "backendDOMNodeId": 938 + }, + { + "nodeId": "939", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "938", + "childIds": ["940", "941", "961"], + "backendDOMNodeId": 939 + }, + { + "nodeId": "940", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "939", + "childIds": [], + "backendDOMNodeId": 940 + }, + { + "nodeId": "941", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "939", + "childIds": ["942", "946", "947", "957", "959"], + "backendDOMNodeId": 941 + }, + { + "nodeId": "961", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "video time scrubber", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "video time scrubber" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "video time scrubber" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "total time: 0:00" + }, + "value": { + "type": "number", + "value": 0 + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "settable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "orientation", + "value": { + "type": "token", + "value": "horizontal" + } + }, + { + "name": "valuemin", + "value": { + "type": "number", + "value": 0 + } + }, + { + "name": "valuemax", + "value": { + "type": "number", + "value": 100 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "elapsed time: 0:00" + } + } + ], + "parentId": "939", + "childIds": [], + "backendDOMNodeId": 961 + }, + { + "nodeId": "968", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": [], + "backendDOMNodeId": 968 + }, + { + "nodeId": "969", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": [], + "backendDOMNodeId": 969 + }, + { + "nodeId": "970", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": [], + "backendDOMNodeId": 970 + }, + { + "nodeId": "971", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": [], + "backendDOMNodeId": 971 + }, + { + "nodeId": "972", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "934", + "childIds": [ + "973", + "977", + "981", + "985", + "989", + "993", + "997", + "1001", + "1005", + "1009" + ], + "backendDOMNodeId": 972 + }, + { + "nodeId": "973", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 973 + }, + { + "nodeId": "977", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 977 + }, + { + "nodeId": "981", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 981 + }, + { + "nodeId": "985", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 985 + }, + { + "nodeId": "989", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 989 + }, + { + "nodeId": "993", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 993 + }, + { + "nodeId": "997", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 997 + }, + { + "nodeId": "1001", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 1001 + }, + { + "nodeId": "1005", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 1005 + }, + { + "nodeId": "1009", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "972", + "childIds": [], + "backendDOMNodeId": 1009 + }, + { + "nodeId": "761", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + } + } + ] + }, + "properties": [], + "parentId": "1013", + "childIds": ["-1000000540"], + "backendDOMNodeId": 761 + }, + { + "nodeId": "-1000000541", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "762", + "childIds": [] + }, + { + "nodeId": "763", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1016", + "childIds": ["-1000000415"], + "backendDOMNodeId": 763 + }, + { + "nodeId": "764", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install VSCode or Cursor" + } + } + ] + }, + "properties": [], + "parentId": "1016", + "childIds": ["-1000000542"], + "backendDOMNodeId": 764 + }, + { + "nodeId": "765", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000417"], + "backendDOMNodeId": 765 + }, + { + "nodeId": "766", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the skill:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the skill:" + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000543"], + "backendDOMNodeId": 766 + }, + { + "nodeId": "767", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000544"], + "backendDOMNodeId": 767 + }, + { + "nodeId": "1018", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["768"], + "backendDOMNodeId": 1018 + }, + { + "nodeId": "769", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000546"], + "backendDOMNodeId": 769 + }, + { + "nodeId": "770", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(see" + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000547"], + "backendDOMNodeId": 770 + }, + { + "nodeId": "771", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000548"], + "backendDOMNodeId": 771 + }, + { + "nodeId": "1020", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "1017", + "childIds": ["772"], + "backendDOMNodeId": 1020 + }, + { + "nodeId": "773", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1017", + "childIds": ["-1000000551"], + "backendDOMNodeId": 773 + }, + { + "nodeId": "774", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1021", + "childIds": ["-1000000427"], + "backendDOMNodeId": 774 + }, + { + "nodeId": "775", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + } + } + ] + }, + "properties": [], + "parentId": "1021", + "childIds": ["-1000000552"], + "backendDOMNodeId": 775 + }, + { + "nodeId": "776", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1021", + "childIds": ["-1000000553"], + "backendDOMNodeId": 776 + }, + { + "nodeId": "1022", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1021", + "childIds": ["777"], + "backendDOMNodeId": 1022 + }, + { + "nodeId": "778", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1021", + "childIds": ["-1000000555"], + "backendDOMNodeId": 778 + }, + { + "nodeId": "779", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "4. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "4. " + } + } + ] + }, + "properties": [], + "parentId": "1023", + "childIds": ["-1000000432"], + "backendDOMNodeId": 779 + }, + { + "nodeId": "780", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Use ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Use " + } + } + ] + }, + "properties": [], + "parentId": "1023", + "childIds": ["-1000000556"], + "backendDOMNodeId": 780 + }, + { + "nodeId": "1024", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1023", + "childIds": ["781"], + "backendDOMNodeId": 1024 + }, + { + "nodeId": "782", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + } + } + ] + }, + "properties": [], + "parentId": "1023", + "childIds": ["-1000000558"], + "backendDOMNodeId": 782 + }, + { + "nodeId": "-1000000559", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "783", + "childIds": [] + }, + { + "nodeId": "-1000000560", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + }, + "properties": [], + "parentId": "784", + "childIds": [] + }, + { + "nodeId": "-1000000561", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "785", + "childIds": [] + }, + { + "nodeId": "-1000000562", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "786", + "childIds": [] + }, + { + "nodeId": "-1000000563", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "795", + "childIds": [] + }, + { + "nodeId": "787", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["-1000000441"], + "backendDOMNodeId": 787 + }, + { + "nodeId": "1038", + "ignored": false, + "role": { + "type": "role", + "value": "strong" + }, + "chromeRole": { + "type": "internalRole", + "value": 160 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["796"], + "backendDOMNodeId": 1038 + }, + { + "nodeId": "797", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ", with ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ", with " + } + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["-1000000565"], + "backendDOMNodeId": 797 + }, + { + "nodeId": "1039", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["798"], + "backendDOMNodeId": 1039 + }, + { + "nodeId": "799", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["-1000000567"], + "backendDOMNodeId": 799 + }, + { + "nodeId": "800", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "available in PATH", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "available in PATH" + } + } + ] + }, + "properties": [], + "parentId": "1037", + "childIds": ["-1000000568"], + "backendDOMNodeId": 800 + }, + { + "nodeId": "788", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["-1000000447"], + "backendDOMNodeId": 788 + }, + { + "nodeId": "801", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The " + } + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["-1000000569"], + "backendDOMNodeId": 801 + }, + { + "nodeId": "1041", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["802"], + "backendDOMNodeId": 1041 + }, + { + "nodeId": "803", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " Python package:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " Python package:" + } + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["-1000000571", "-1000000572"], + "backendDOMNodeId": 803 + }, + { + "nodeId": "804", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["-1000000573"], + "backendDOMNodeId": 804 + }, + { + "nodeId": "1042", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1040", + "childIds": ["805"], + "backendDOMNodeId": 1042 + }, + { + "nodeId": "789", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["-1000000455"], + "backendDOMNodeId": 789 + }, + { + "nodeId": "806", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "For OT-2 use" + } + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["-1000000576"], + "backendDOMNodeId": 806 + }, + { + "nodeId": "807", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["-1000000577"], + "backendDOMNodeId": 807 + }, + { + "nodeId": "1044", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["808"], + "backendDOMNodeId": 1044 + }, + { + "nodeId": "809", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["-1000000580"], + "backendDOMNodeId": 809 + }, + { + "nodeId": "810", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)" + } + } + ] + }, + "properties": [], + "parentId": "1043", + "childIds": ["-1000000581", "-1000000582"], + "backendDOMNodeId": 810 + }, + { + "nodeId": "790", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1045", + "childIds": ["-1000000463"], + "backendDOMNodeId": 790 + }, + { + "nodeId": "811", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via" + } + } + ] + }, + "properties": [], + "parentId": "1045", + "childIds": ["-1000000583", "-1000000584"], + "backendDOMNodeId": 811 + }, + { + "nodeId": "1074", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1045", + "childIds": [], + "backendDOMNodeId": 1074 + }, + { + "nodeId": "1046", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1045", + "childIds": ["812"], + "backendDOMNodeId": 1046 + }, + { + "nodeId": "791", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1047", + "childIds": ["-1000000468"], + "backendDOMNodeId": 791 + }, + { + "nodeId": "813", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol." + } + } + ] + }, + "properties": [], + "parentId": "1047", + "childIds": ["-1000000587", "-1000000588", "-1000000589", "-1000000590"], + "backendDOMNodeId": 813 + }, + { + "nodeId": "814", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1049", + "childIds": ["-1000000591"], + "backendDOMNodeId": 814 + }, + { + "nodeId": "1051", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1050", + "childIds": ["792", "815", "816", "817", "818", "819", "820"], + "backendDOMNodeId": 1051 + }, + { + "nodeId": "1054", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1050", + "childIds": ["793", "821", "1055"], + "backendDOMNodeId": 1054 + }, + { + "nodeId": "1056", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1050", + "childIds": ["794", "823", "1057", "825"], + "backendDOMNodeId": 1056 + }, + { + "nodeId": "826", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1059", + "childIds": ["-1000000605"], + "backendDOMNodeId": 826 + }, + { + "nodeId": "1061", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1060", + "childIds": ["827"], + "backendDOMNodeId": 1061 + }, + { + "nodeId": "-1000000609", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "830", + "childIds": [] + }, + { + "nodeId": "900", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "899", + "childIds": ["743"], + "backendDOMNodeId": 900 + }, + { + "nodeId": "901", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "899", + "childIds": ["744"], + "backendDOMNodeId": 901 + }, + { + "nodeId": "904", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "903", + "childIds": ["745"], + "backendDOMNodeId": 904 + }, + { + "nodeId": "905", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "903", + "childIds": ["746"], + "backendDOMNodeId": 905 + }, + { + "nodeId": "908", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "907", + "childIds": ["747"], + "backendDOMNodeId": 908 + }, + { + "nodeId": "909", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "907", + "childIds": ["748"], + "backendDOMNodeId": 909 + }, + { + "nodeId": "912", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "911", + "childIds": ["749"], + "backendDOMNodeId": 912 + }, + { + "nodeId": "913", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "911", + "childIds": ["750"], + "backendDOMNodeId": 913 + }, + { + "nodeId": "916", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "915", + "childIds": ["751"], + "backendDOMNodeId": 916 + }, + { + "nodeId": "917", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "915", + "childIds": ["752"], + "backendDOMNodeId": 917 + }, + { + "nodeId": "920", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "919", + "childIds": ["753"], + "backendDOMNodeId": 920 + }, + { + "nodeId": "921", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "919", + "childIds": ["754"], + "backendDOMNodeId": 921 + }, + { + "nodeId": "-1000000532", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action" + }, + "properties": [], + "parentId": "755", + "childIds": [] + }, + { + "nodeId": "-1000000536", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "759", + "childIds": [] + }, + { + "nodeId": "1076", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "935", + "childIds": ["1077"], + "backendDOMNodeId": 1076 + }, + { + "nodeId": "937", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "936", + "childIds": [], + "backendDOMNodeId": 937 + }, + { + "nodeId": "942", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "play", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "play" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "play" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "941", + "childIds": ["943"], + "backendDOMNodeId": 942 + }, + { + "nodeId": "946", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "941", + "childIds": [], + "backendDOMNodeId": 946 + }, + { + "nodeId": "947", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "941", + "childIds": ["948", "949", "956"], + "backendDOMNodeId": 947 + }, + { + "nodeId": "957", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "enter full screen", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "enter full screen" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "enter full screen" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "941", + "childIds": ["958"], + "backendDOMNodeId": 957 + }, + { + "nodeId": "959", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 137 + }, + "name": { + "type": "computedString", + "value": "show more media controls", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "show more media controls" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "show more media controls" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "more options" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "more options" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "more options" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "hasPopup", + "value": { + "type": "token", + "value": "menu" + } + } + ], + "parentId": "941", + "childIds": ["960"], + "backendDOMNodeId": 959 + }, + { + "nodeId": "-1000000540", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + }, + "properties": [], + "parentId": "761", + "childIds": [] + }, + { + "nodeId": "-1000000415", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "763", + "childIds": [] + }, + { + "nodeId": "-1000000542", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "764", + "childIds": [] + }, + { + "nodeId": "-1000000417", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "765", + "childIds": [] + }, + { + "nodeId": "-1000000543", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "766", + "childIds": [] + }, + { + "nodeId": "-1000000544", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "767", + "childIds": [] + }, + { + "nodeId": "768", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1018", + "childIds": ["-1000000545"], + "backendDOMNodeId": 768 + }, + { + "nodeId": "-1000000546", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "769", + "childIds": [] + }, + { + "nodeId": "-1000000547", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "770", + "childIds": [] + }, + { + "nodeId": "-1000000548", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "771", + "childIds": [] + }, + { + "nodeId": "772", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1020", + "childIds": ["-1000000549", "-1000000550"], + "backendDOMNodeId": 772 + }, + { + "nodeId": "-1000000551", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "773", + "childIds": [] + }, + { + "nodeId": "-1000000427", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "774", + "childIds": [] + }, + { + "nodeId": "-1000000552", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + }, + "properties": [], + "parentId": "775", + "childIds": [] + }, + { + "nodeId": "-1000000553", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "776", + "childIds": [] + }, + { + "nodeId": "777", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + } + ] + }, + "properties": [], + "parentId": "1022", + "childIds": ["-1000000554"], + "backendDOMNodeId": 777 + }, + { + "nodeId": "-1000000555", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "778", + "childIds": [] + }, + { + "nodeId": "-1000000432", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "779", + "childIds": [] + }, + { + "nodeId": "-1000000556", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "780", + "childIds": [] + }, + { + "nodeId": "781", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1024", + "childIds": ["-1000000557"], + "backendDOMNodeId": 781 + }, + { + "nodeId": "-1000000558", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + }, + "properties": [], + "parentId": "782", + "childIds": [] + }, + { + "nodeId": "-1000000441", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "787", + "childIds": [] + }, + { + "nodeId": "796", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python 3.8 or later" + } + } + ] + }, + "properties": [], + "parentId": "1038", + "childIds": ["-1000000564"], + "backendDOMNodeId": 796 + }, + { + "nodeId": "-1000000565", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", with " + }, + "properties": [], + "parentId": "797", + "childIds": [] + }, + { + "nodeId": "798", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "python3", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "python3" + } + } + ] + }, + "properties": [], + "parentId": "1039", + "childIds": ["-1000000566"], + "backendDOMNodeId": 798 + }, + { + "nodeId": "-1000000567", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "799", + "childIds": [] + }, + { + "nodeId": "-1000000568", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "800", + "childIds": [] + }, + { + "nodeId": "-1000000447", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "788", + "childIds": [] + }, + { + "nodeId": "-1000000569", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "801", + "childIds": [] + }, + { + "nodeId": "802", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1041", + "childIds": ["-1000000570"], + "backendDOMNodeId": 802 + }, + { + "nodeId": "-1000000571", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " Python " + }, + "properties": [], + "parentId": "803", + "childIds": [] + }, + { + "nodeId": "-1000000572", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "package:" + }, + "properties": [], + "parentId": "803", + "childIds": [] + }, + { + "nodeId": "-1000000573", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "804", + "childIds": [] + }, + { + "nodeId": "805", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1042", + "childIds": ["-1000000574", "-1000000575"], + "backendDOMNodeId": 805 + }, + { + "nodeId": "-1000000455", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "789", + "childIds": [] + }, + { + "nodeId": "-1000000576", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "806", + "childIds": [] + }, + { + "nodeId": "-1000000577", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "807", + "childIds": [] + }, + { + "nodeId": "808", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons==9.0.0", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons==9.0.0" + } + } + ] + }, + "properties": [], + "parentId": "1044", + "childIds": ["-1000000578", "-1000000579"], + "backendDOMNodeId": 808 + }, + { + "nodeId": "-1000000580", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "809", + "childIds": [] + }, + { + "nodeId": "-1000000581", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons " + }, + "properties": [], + "parentId": "810", + "childIds": [] + }, + { + "nodeId": "-1000000582", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "9.1.0+ dropped OT-2 support)" + }, + "properties": [], + "parentId": "810", + "childIds": [] + }, + { + "nodeId": "-1000000463", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "790", + "childIds": [] + }, + { + "nodeId": "-1000000583", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python " + }, + "properties": [], + "parentId": "811", + "childIds": [] + }, + { + "nodeId": "-1000000584", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "interpreter in VSCode via" + }, + "properties": [], + "parentId": "811", + "childIds": [] + }, + { + "nodeId": "812", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python: Select Interpreter", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python: Select Interpreter" + } + } + ] + }, + "properties": [], + "parentId": "1046", + "childIds": ["-1000000585", "-1000000586"], + "backendDOMNodeId": 812 + }, + { + "nodeId": "-1000000468", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "791", + "childIds": [] + }, + { + "nodeId": "-1000000587", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep " + }, + "properties": [], + "parentId": "813", + "childIds": [] + }, + { + "nodeId": "-1000000588", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them in a separate virtual " + }, + "properties": [], + "parentId": "813", + "childIds": [] + }, + { + "nodeId": "-1000000589", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and switch " + }, + "properties": [], + "parentId": "813", + "childIds": [] + }, + { + "nodeId": "-1000000590", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "per protocol." + }, + "properties": [], + "parentId": "813", + "childIds": [] + }, + { + "nodeId": "-1000000591", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "properties": [], + "parentId": "814", + "childIds": [] + }, + { + "nodeId": "792", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000474"], + "backendDOMNodeId": 792 + }, + { + "nodeId": "815", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette (", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Open the Command Palette (" + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000592", "-1000000593"], + "backendDOMNodeId": 815 + }, + { + "nodeId": "816", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Cmd+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000594"], + "backendDOMNodeId": 816 + }, + { + "nodeId": "817", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " /", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " /" + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000595"], + "backendDOMNodeId": 817 + }, + { + "nodeId": "818", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000596"], + "backendDOMNodeId": 818 + }, + { + "nodeId": "819", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Ctrl+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000597"], + "backendDOMNodeId": 819 + }, + { + "nodeId": "820", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1051", + "childIds": ["-1000000598"], + "backendDOMNodeId": 820 + }, + { + "nodeId": "793", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1054", + "childIds": ["-1000000482"], + "backendDOMNodeId": 793 + }, + { + "nodeId": "821", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select " + } + } + ] + }, + "properties": [], + "parentId": "1054", + "childIds": ["-1000000599"], + "backendDOMNodeId": 821 + }, + { + "nodeId": "1055", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1054", + "childIds": ["822"], + "backendDOMNodeId": 1055 + }, + { + "nodeId": "794", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1056", + "childIds": ["-1000000486"], + "backendDOMNodeId": 794 + }, + { + "nodeId": "823", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Choose the downloaded " + } + } + ] + }, + "properties": [], + "parentId": "1056", + "childIds": ["-1000000602"], + "backendDOMNodeId": 823 + }, + { + "nodeId": "1057", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1056", + "childIds": ["824"], + "backendDOMNodeId": 1057 + }, + { + "nodeId": "825", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " file", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " file" + } + } + ] + }, + "properties": [], + "parentId": "1056", + "childIds": ["-1000000604"], + "backendDOMNodeId": 825 + }, + { + "nodeId": "-1000000605", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "826", + "childIds": [] + }, + { + "nodeId": "827", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + } + } + ] + }, + "properties": [], + "parentId": "1061", + "childIds": ["-1000000606"], + "backendDOMNodeId": 827 + }, + { + "nodeId": "743", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + } + ] + }, + "properties": [], + "parentId": "900", + "childIds": ["-1000000507"], + "backendDOMNodeId": 743 + }, + { + "nodeId": "744", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs." + } + } + ] + }, + "properties": [], + "parentId": "901", + "childIds": ["-1000000508", "-1000000509", "-1000000510"], + "backendDOMNodeId": 744 + }, + { + "nodeId": "745", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + } + ] + }, + "properties": [], + "parentId": "904", + "childIds": ["-1000000511"], + "backendDOMNodeId": 745 + }, + { + "nodeId": "746", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file." + } + } + ] + }, + "properties": [], + "parentId": "905", + "childIds": ["-1000000512", "-1000000513", "-1000000514"], + "backendDOMNodeId": 746 + }, + { + "nodeId": "747", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + } + ] + }, + "properties": [], + "parentId": "908", + "childIds": ["-1000000515"], + "backendDOMNodeId": 747 + }, + { + "nodeId": "748", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "909", + "childIds": ["-1000000516", "-1000000517", "-1000000518", "-1000000519"], + "backendDOMNodeId": 748 + }, + { + "nodeId": "749", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + } + ] + }, + "properties": [], + "parentId": "912", + "childIds": ["-1000000520"], + "backendDOMNodeId": 749 + }, + { + "nodeId": "750", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "913", + "childIds": ["-1000000521", "-1000000522", "-1000000523"], + "backendDOMNodeId": 750 + }, + { + "nodeId": "751", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + } + ] + }, + "properties": [], + "parentId": "916", + "childIds": ["-1000000524"], + "backendDOMNodeId": 751 + }, + { + "nodeId": "752", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support." + } + } + ] + }, + "properties": [], + "parentId": "917", + "childIds": ["-1000000525", "-1000000526", "-1000000527"], + "backendDOMNodeId": 752 + }, + { + "nodeId": "753", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + } + ] + }, + "properties": [], + "parentId": "920", + "childIds": ["-1000000528"], + "backendDOMNodeId": 753 + }, + { + "nodeId": "754", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly." + } + } + ] + }, + "properties": [], + "parentId": "921", + "childIds": ["-1000000529", "-1000000530", "-1000000531"], + "backendDOMNodeId": 754 + }, + { + "nodeId": "1077", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1076", + "childIds": ["1078"], + "backendDOMNodeId": 1077 + }, + { + "nodeId": "1078", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1077", + "childIds": ["1079", "1081"], + "backendDOMNodeId": 1078 + }, + { + "nodeId": "943", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "942", + "childIds": [], + "backendDOMNodeId": 943 + }, + { + "nodeId": "948", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "947", + "childIds": [], + "backendDOMNodeId": 948 + }, + { + "nodeId": "949", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "947", + "childIds": [], + "backendDOMNodeId": 949 + }, + { + "nodeId": "956", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "mute", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "mute" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "mute" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "947", + "childIds": [], + "backendDOMNodeId": 956 + }, + { + "nodeId": "958", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "957", + "childIds": [], + "backendDOMNodeId": 958 + }, + { + "nodeId": "960", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "959", + "childIds": [], + "backendDOMNodeId": 960 + }, + { + "nodeId": "-1000000545", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "768", + "childIds": [] + }, + { + "nodeId": "-1000000549", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-" + }, + "properties": [], + "parentId": "772", + "childIds": [] + }, + { + "nodeId": "-1000000550", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop" + }, + "properties": [], + "parentId": "772", + "childIds": [] + }, + { + "nodeId": "-1000000554", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "777", + "childIds": [] + }, + { + "nodeId": "-1000000557", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "781", + "childIds": [] + }, + { + "nodeId": "-1000000564", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "796", + "childIds": [] + }, + { + "nodeId": "-1000000566", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "798", + "childIds": [] + }, + { + "nodeId": "-1000000570", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "802", + "childIds": [] + }, + { + "nodeId": "-1000000574", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "805", + "childIds": [] + }, + { + "nodeId": "-1000000575", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "805", + "childIds": [] + }, + { + "nodeId": "-1000000578", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "808", + "childIds": [] + }, + { + "nodeId": "-1000000579", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "808", + "childIds": [] + }, + { + "nodeId": "-1000000585", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: Select " + }, + "properties": [], + "parentId": "812", + "childIds": [] + }, + { + "nodeId": "-1000000586", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "812", + "childIds": [] + }, + { + "nodeId": "-1000000474", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "792", + "childIds": [] + }, + { + "nodeId": "-1000000592", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette " + }, + "properties": [], + "parentId": "815", + "childIds": [] + }, + { + "nodeId": "-1000000593", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(" + }, + "properties": [], + "parentId": "815", + "childIds": [] + }, + { + "nodeId": "-1000000594", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "816", + "childIds": [] + }, + { + "nodeId": "-1000000595", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " /" + }, + "properties": [], + "parentId": "817", + "childIds": [] + }, + { + "nodeId": "-1000000596", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "818", + "childIds": [] + }, + { + "nodeId": "-1000000597", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "819", + "childIds": [] + }, + { + "nodeId": "-1000000598", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "820", + "childIds": [] + }, + { + "nodeId": "-1000000482", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "793", + "childIds": [] + }, + { + "nodeId": "-1000000599", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "821", + "childIds": [] + }, + { + "nodeId": "822", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install from VSIX...", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Extensions: Install from VSIX..." + } + } + ] + }, + "properties": [], + "parentId": "1055", + "childIds": ["-1000000600", "-1000000601"], + "backendDOMNodeId": 822 + }, + { + "nodeId": "-1000000486", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "794", + "childIds": [] + }, + { + "nodeId": "-1000000602", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded " + }, + "properties": [], + "parentId": "823", + "childIds": [] + }, + { + "nodeId": "824", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ".vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ".vsix" + } + } + ] + }, + "properties": [], + "parentId": "1057", + "childIds": ["-1000000603"], + "backendDOMNodeId": 824 + }, + { + "nodeId": "-1000000604", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "file" + }, + "properties": [], + "parentId": "825", + "childIds": [] + }, + { + "nodeId": "-1000000606", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + }, + "properties": [], + "parentId": "827", + "childIds": [] + }, + { + "nodeId": "-1000000507", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization" + }, + "properties": [], + "parentId": "743", + "childIds": [] + }, + { + "nodeId": "-1000000508", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes " + }, + "properties": [], + "parentId": "744", + "childIds": [] + }, + { + "nodeId": "-1000000509", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "render in real time through an interactive " + }, + "properties": [], + "parentId": "744", + "childIds": [] + }, + { + "nodeId": "-1000000510", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "panel while your protocol runs." + }, + "properties": [], + "parentId": "744", + "childIds": [] + }, + { + "nodeId": "-1000000511", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save" + }, + "properties": [], + "parentId": "745", + "childIds": [] + }, + { + "nodeId": "-1000000512", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns " + }, + "properties": [], + "parentId": "746", + "childIds": [] + }, + { + "nodeId": "-1000000513", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "whenever you save changes (Ctrl+S / " + }, + "properties": [], + "parentId": "746", + "childIds": [] + }, + { + "nodeId": "-1000000514", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+S) to your protocol file." + }, + "properties": [], + "parentId": "746", + "childIds": [] + }, + { + "nodeId": "-1000000515", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "747", + "childIds": [] + }, + { + "nodeId": "-1000000516", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons " + }, + "properties": [], + "parentId": "748", + "childIds": [] + }, + { + "nodeId": "-1000000517", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters; hit Analyze to apply " + }, + "properties": [], + "parentId": "748", + "childIds": [] + }, + { + "nodeId": "-1000000518", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them — your original code is never " + }, + "properties": [], + "parentId": "748", + "childIds": [] + }, + { + "nodeId": "-1000000519", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "modified." + }, + "properties": [], + "parentId": "748", + "childIds": [] + }, + { + "nodeId": "-1000000520", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "749", + "childIds": [] + }, + { + "nodeId": "-1000000521", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) " + }, + "properties": [], + "parentId": "750", + "childIds": [] + }, + { + "nodeId": "-1000000522", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "in the same directory as your protocol file " + }, + "properties": [], + "parentId": "750", + "childIds": [] + }, + { + "nodeId": "-1000000523", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and they just work." + }, + "properties": [], + "parentId": "750", + "childIds": [] + }, + { + "nodeId": "-1000000524", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window" + }, + "properties": [], + "parentId": "751", + "childIds": [] + }, + { + "nodeId": "-1000000525", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or " + }, + "properties": [], + "parentId": "752", + "childIds": [] + }, + { + "nodeId": "-1000000526", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "drag the tab to another monitor via " + }, + "properties": [], + "parentId": "752", + "childIds": [] + }, + { + "nodeId": "-1000000527", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "752", + "childIds": [] + }, + { + "nodeId": "-1000000528", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper" + }, + "properties": [], + "parentId": "753", + "childIds": [] + }, + { + "nodeId": "-1000000529", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps " + }, + "properties": [], + "parentId": "754", + "childIds": [] + }, + { + "nodeId": "-1000000530", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and hit Enter to jump the visualization state " + }, + "properties": [], + "parentId": "754", + "childIds": [] + }, + { + "nodeId": "-1000000531", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "instantly." + }, + "properties": [], + "parentId": "754", + "childIds": [] + }, + { + "nodeId": "1079", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1078", + "childIds": ["1080"], + "backendDOMNodeId": 1079 + }, + { + "nodeId": "1081", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1078", + "childIds": ["1082"], + "backendDOMNodeId": 1081 + }, + { + "nodeId": "-1000000600", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install " + }, + "properties": [], + "parentId": "822", + "childIds": [] + }, + { + "nodeId": "-1000000601", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "from VSIX..." + }, + "properties": [], + "parentId": "822", + "childIds": [] + }, + { + "nodeId": "-1000000603", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "824", + "childIds": [] + }, + { + "nodeId": "1080", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1079", + "childIds": [], + "backendDOMNodeId": 1080 + }, + { + "nodeId": "1082", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1081", + "childIds": [], + "backendDOMNodeId": 1082 + } +] diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/dom.html b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/dom.html new file mode 100644 index 0000000..ad39db5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/dom.html @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + Protocol Visualizer — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Visualizer

+ Preview +
+

+ Simulate your Opentrons Python protocols and inspect deck + layout and liquid volumes in real time — without leaving + VSCode. +

+ +
+ +
+
+
+
+

+ Everything you need to see your protocol run +

+
    +
  • +
    +

    + Real-time Deck Visualization +

    +

    + Deck state and liquid volume changes render in real time + through an interactive panel while your protocol runs. +

    +
    +
  • +
  • +
    +

    Auto-analysis on Save

    +

    + The simulation automatically reruns whenever you save + changes (Ctrl+S / Cmd+S) to your protocol file. +

    +
    +
  • +
  • +
    +

    Runtime Parameters UI

    +

    + Input fields are generated for Opentrons Runtime + Parameters; hit Analyze to apply them — your original code + is never modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place custom labware definition files (.json) in the same + directory as your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out Window

    +

    + Pop the panel out to its own window or drag the tab to + another monitor via VSCode's Auxiliary Window support. +

    +
    +
  • +
  • +
    +

    Step Jumper

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly. +

    +
    +
  • +
+
+
+
+
+
+ Protocol Visualizer visualizing an Opentrons protocol on a simulated deck +
+ Protocol Visualizer in action +
+
+
+
+
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with + protocol-fix-loop. Generate Opentrons protocols with GitHub Copilot or Cursor, + then simulate and fix them in a visual feedback loop. +

+
+ +
+ Generate a protocol from a prompt, then fix it while watching + the simulation +
+
+

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill: + npx skills add koji/protocol-fix-loop + (see + koji/protocol-fix-loop) +
  4. +
  5. + Install the Protocol Visualizer extension (see + Installation guide) +
  6. +
  7. + Use + /protocol-fix-loop + in chat and add your prompt to generate a protocol +
  8. +
+
+
+
+
+

Want to try the extension?

+

+ Request access via our form — requests are handled individually. +

+ Request access +
+
+
+
+

Installation

+
+
+

Prerequisites

+
    +
  • + Python 3.8 or later, with + python3 available in PATH +
  • +
  • + The opentrons Python package: + pip install opentrons +
  • +
  • + For OT-2 use + pip install opentrons==9.0.0 + (opentrons 9.1.0+ dropped OT-2 support) +
  • +
  • + Select the matching Python interpreter in VSCode via + Python: Select Interpreter +
  • +
  • + Using both Flex and OT-2? Keep them in a separate virtual + environment each and switch per protocol. +
  • +
+
+
+

+ Method A: Command Palette +

+
    +
  1. + Open the Command Palette (Cmd+Shift+P / + Ctrl+Shift+P) +
  2. +
  3. + Select Extensions: Install from VSIX... +
  4. +
  5. Choose the downloaded .vsix file
  6. +
+
+
+

Method B: Command line

+
code --install-extension protocol-visualizer.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/result.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/result.json new file mode 100644 index 0000000..5eb66ca --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/result.json @@ -0,0 +1,55 @@ +{ + "feature": "ai-workflow", + "url": "http://127.0.0.1:5181/", + "passed": 7, + "total": 7, + "ok": true, + "checks": [ + { + "id": "ai-region", + "pass": true, + "value": true, + "error": null + }, + { + "id": "ai-heading", + "pass": true, + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "error": null + }, + { + "id": "ai-video", + "pass": true, + "value": { + "src": "https://github.com/user-attachments/assets/812fbcdf-a84a-49fd-b631-ae925b64dddf", + "controls": true + }, + "error": null + }, + { + "id": "ai-skill-command", + "pass": true, + "value": true, + "error": null + }, + { + "id": "ai-slash-command", + "pass": true, + "value": true, + "error": null + }, + { + "id": "ai-skill-links", + "pass": true, + "value": 2, + "error": null + }, + { + "id": "ai-install-link", + "pass": true, + "value": true, + "error": null + } + ], + "finishedAt": "2026-09-16T07:56:13.724Z" +} diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/screenshot.png b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/screenshot.png new file mode 100644 index 0000000..11d7248 Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/axtree.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/axtree.json new file mode 100644 index 0000000..e5a1905 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/axtree.json @@ -0,0 +1,11360 @@ +[ + { + "nodeId": "366", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "aria-label", + "superseded": true + }, + { + "type": "relatedElement", + "value": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode" + }, + "nativeSource": "title" + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/" + } + } + ], + "childIds": ["472"], + "backendDOMNodeId": 366, + "frameId": "8AE6312B5CF350076BE20E6D026DCC9C" + }, + { + "nodeId": "472", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "366", + "childIds": ["497"], + "backendDOMNodeId": 472 + }, + { + "nodeId": "497", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "472", + "childIds": ["498"], + "backendDOMNodeId": 497 + }, + { + "nodeId": "498", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "497", + "childIds": ["499"], + "backendDOMNodeId": 498 + }, + { + "nodeId": "499", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "498", + "childIds": ["500", "518", "702", "708"], + "backendDOMNodeId": 499 + }, + { + "nodeId": "500", + "ignored": false, + "role": { + "type": "role", + "value": "banner" + }, + "chromeRole": { + "type": "internalRole", + "value": 94 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "499", + "childIds": ["501"], + "backendDOMNodeId": 500 + }, + { + "nodeId": "518", + "ignored": false, + "role": { + "type": "role", + "value": "main" + }, + "chromeRole": { + "type": "internalRole", + "value": 118 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "499", + "childIds": ["519", "535", "563", "568", "665", "670"], + "backendDOMNodeId": 518 + }, + { + "nodeId": "702", + "ignored": false, + "role": { + "type": "role", + "value": "complementary" + }, + "chromeRole": { + "type": "internalRole", + "value": 22 + }, + "name": { + "type": "computedString", + "value": "Disclaimer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Disclaimer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Disclaimer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "499", + "childIds": ["703"], + "backendDOMNodeId": 702 + }, + { + "nodeId": "708", + "ignored": false, + "role": { + "type": "role", + "value": "contentinfo" + }, + "chromeRole": { + "type": "internalRole", + "value": 85 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "499", + "childIds": ["709"], + "backendDOMNodeId": 708 + }, + { + "nodeId": "501", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "500", + "childIds": ["502", "509", "512"], + "backendDOMNodeId": 501 + }, + { + "nodeId": "502", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#top" + } + } + ], + "parentId": "501", + "childIds": ["508"], + "backendDOMNodeId": 502 + }, + { + "nodeId": "509", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "Section navigation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Section navigation" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Section navigation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "501", + "childIds": ["510", "511"], + "backendDOMNodeId": 509 + }, + { + "nodeId": "512", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "501", + "childIds": ["513", "514"], + "backendDOMNodeId": 512 + }, + { + "nodeId": "513", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "512", + "childIds": ["377"], + "backendDOMNodeId": 513 + }, + { + "nodeId": "514", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "Switch to light theme", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "Switch to light theme" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "512", + "childIds": [], + "backendDOMNodeId": 514 + }, + { + "nodeId": "519", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 211 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["520"], + "backendDOMNodeId": 519 + }, + { + "nodeId": "535", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Features" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["536"], + "backendDOMNodeId": 535 + }, + { + "nodeId": "563", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Screenshot", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Screenshot" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Screenshot" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["564"], + "backendDOMNodeId": 563 + }, + { + "nodeId": "568", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Generate protocols with AI" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Generate protocols with AI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["569"], + "backendDOMNodeId": 568 + }, + { + "nodeId": "665", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Request access" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["666"], + "backendDOMNodeId": 665 + }, + { + "nodeId": "670", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Installation guide" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "518", + "childIds": ["671"], + "backendDOMNodeId": 670 + }, + { + "nodeId": "703", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "702", + "childIds": ["707"], + "backendDOMNodeId": 703 + }, + { + "nodeId": "707", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "703", + "childIds": ["468"], + "backendDOMNodeId": 707 + }, + { + "nodeId": "709", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "708", + "childIds": ["710", "711"], + "backendDOMNodeId": 709 + }, + { + "nodeId": "710", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "709", + "childIds": ["469"], + "backendDOMNodeId": 710 + }, + { + "nodeId": "711", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "External links", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "External links" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "External links" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "709", + "childIds": ["712"], + "backendDOMNodeId": 711 + }, + { + "nodeId": "508", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "502", + "childIds": ["374"], + "backendDOMNodeId": 508 + }, + { + "nodeId": "374", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "508", + "childIds": ["-1000000255"], + "backendDOMNodeId": 374 + }, + { + "nodeId": "510", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#features" + } + } + ], + "parentId": "509", + "childIds": ["375"], + "backendDOMNodeId": 510 + }, + { + "nodeId": "511", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "509", + "childIds": ["376"], + "backendDOMNodeId": 511 + }, + { + "nodeId": "377", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "513", + "childIds": ["-1000000258"], + "backendDOMNodeId": 377 + }, + { + "nodeId": "520", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "519", + "childIds": ["521"], + "backendDOMNodeId": 520 + }, + { + "nodeId": "521", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "520", + "childIds": ["522", "525", "526"], + "backendDOMNodeId": 521 + }, + { + "nodeId": "522", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "521", + "childIds": ["523", "524"], + "backendDOMNodeId": 522 + }, + { + "nodeId": "523", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "522", + "childIds": ["378"], + "backendDOMNodeId": 523 + }, + { + "nodeId": "524", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "522", + "childIds": ["373"], + "backendDOMNodeId": 524 + }, + { + "nodeId": "373", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "PREVIEW", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "PREVIEW" + } + } + ] + }, + "properties": [], + "parentId": "524", + "childIds": ["-1000000260"], + "backendDOMNodeId": 373 + }, + { + "nodeId": "525", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "521", + "childIds": ["379"], + "backendDOMNodeId": 525 + }, + { + "nodeId": "526", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "521", + "childIds": ["527", "528"], + "backendDOMNodeId": 526 + }, + { + "nodeId": "527", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "526", + "childIds": ["380"], + "backendDOMNodeId": 527 + }, + { + "nodeId": "528", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "526", + "childIds": ["381"], + "backendDOMNodeId": 528 + }, + { + "nodeId": "536", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "535", + "childIds": ["537", "538"], + "backendDOMNodeId": 536 + }, + { + "nodeId": "537", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "536", + "childIds": ["382"], + "backendDOMNodeId": 537 + }, + { + "nodeId": "538", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "536", + "childIds": ["539", "543", "547", "551", "555", "559"], + "backendDOMNodeId": 538 + }, + { + "nodeId": "564", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "563", + "childIds": ["565"], + "backendDOMNodeId": 564 + }, + { + "nodeId": "565", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "564", + "childIds": ["566", "567"], + "backendDOMNodeId": 565 + }, + { + "nodeId": "569", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "568", + "childIds": ["570", "571", "573", "655", "656"], + "backendDOMNodeId": 569 + }, + { + "nodeId": "570", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "569", + "childIds": ["396"], + "backendDOMNodeId": 570 + }, + { + "nodeId": "571", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "569", + "childIds": ["397", "398", "572", "400"], + "backendDOMNodeId": 571 + }, + { + "nodeId": "573", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "569", + "childIds": ["574", "654"], + "backendDOMNodeId": 573 + }, + { + "nodeId": "655", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "569", + "childIds": ["402"], + "backendDOMNodeId": 655 + }, + { + "nodeId": "656", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "569", + "childIds": ["657", "658", "662", "663"], + "backendDOMNodeId": 656 + }, + { + "nodeId": "666", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "665", + "childIds": ["667", "668", "669"], + "backendDOMNodeId": 666 + }, + { + "nodeId": "667", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "666", + "childIds": ["423"], + "backendDOMNodeId": 667 + }, + { + "nodeId": "668", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "666", + "childIds": ["424"], + "backendDOMNodeId": 668 + }, + { + "nodeId": "669", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "666", + "childIds": ["425"], + "backendDOMNodeId": 669 + }, + { + "nodeId": "671", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "670", + "childIds": ["672", "673"], + "backendDOMNodeId": 671 + }, + { + "nodeId": "672", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "671", + "childIds": ["426"], + "backendDOMNodeId": 672 + }, + { + "nodeId": "673", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "671", + "childIds": ["674", "688", "698"], + "backendDOMNodeId": 673 + }, + { + "nodeId": "674", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "673", + "childIds": ["675", "676"], + "backendDOMNodeId": 674 + }, + { + "nodeId": "675", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "674", + "childIds": ["435"], + "backendDOMNodeId": 675 + }, + { + "nodeId": "676", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "674", + "childIds": ["677", "680", "683", "685", "687"], + "backendDOMNodeId": 676 + }, + { + "nodeId": "688", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "673", + "childIds": ["689", "690"], + "backendDOMNodeId": 688 + }, + { + "nodeId": "698", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method B: Command line" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "673", + "childIds": ["699", "700"], + "backendDOMNodeId": 698 + }, + { + "nodeId": "468", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "707", + "childIds": ["-1000000366"], + "backendDOMNodeId": 468 + }, + { + "nodeId": "469", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + } + } + ] + }, + "properties": [], + "parentId": "710", + "childIds": ["-1000000367"], + "backendDOMNodeId": 469 + }, + { + "nodeId": "712", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "711", + "childIds": ["470"], + "backendDOMNodeId": 712 + }, + { + "nodeId": "-1000000255", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "374", + "childIds": [] + }, + { + "nodeId": "375", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + } + ] + }, + "properties": [], + "parentId": "510", + "childIds": ["-1000000256"], + "backendDOMNodeId": 375 + }, + { + "nodeId": "376", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + } + ] + }, + "properties": [], + "parentId": "511", + "childIds": ["-1000000257"], + "backendDOMNodeId": 376 + }, + { + "nodeId": "-1000000258", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "377", + "childIds": [] + }, + { + "nodeId": "378", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "523", + "childIds": ["-1000000259"], + "backendDOMNodeId": 378 + }, + { + "nodeId": "-1000000260", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "373", + "childIds": [] + }, + { + "nodeId": "379", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode." + } + } + ] + }, + "properties": [], + "parentId": "525", + "childIds": ["-1000000261", "-1000000262"], + "backendDOMNodeId": 379 + }, + { + "nodeId": "380", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "527", + "childIds": ["-1000000263"], + "backendDOMNodeId": 380 + }, + { + "nodeId": "381", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + } + ] + }, + "properties": [], + "parentId": "528", + "childIds": ["-1000000264"], + "backendDOMNodeId": 381 + }, + { + "nodeId": "382", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + } + ] + }, + "properties": [], + "parentId": "537", + "childIds": ["-1000000265"], + "backendDOMNodeId": 382 + }, + { + "nodeId": "539", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["540"], + "backendDOMNodeId": 539 + }, + { + "nodeId": "543", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["544"], + "backendDOMNodeId": 543 + }, + { + "nodeId": "547", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["548"], + "backendDOMNodeId": 547 + }, + { + "nodeId": "551", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["552"], + "backendDOMNodeId": 551 + }, + { + "nodeId": "555", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["556"], + "backendDOMNodeId": 555 + }, + { + "nodeId": "559", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "538", + "childIds": ["560"], + "backendDOMNodeId": 559 + }, + { + "nodeId": "566", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/user-attachments/assets/eeb96be5-8334-4370-bd4a-1564cb12d690" + } + } + ], + "parentId": "565", + "childIds": [], + "backendDOMNodeId": 566 + }, + { + "nodeId": "567", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "565", + "childIds": ["395"], + "backendDOMNodeId": 567 + }, + { + "nodeId": "396", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "570", + "childIds": ["-1000000292"], + "backendDOMNodeId": 396 + }, + { + "nodeId": "397", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "571", + "childIds": ["-1000000293"], + "backendDOMNodeId": 397 + }, + { + "nodeId": "398", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "571", + "childIds": ["-1000000294"], + "backendDOMNodeId": 398 + }, + { + "nodeId": "572", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "571", + "childIds": ["399"], + "backendDOMNodeId": 572 + }, + { + "nodeId": "400", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + } + } + ] + }, + "properties": [], + "parentId": "571", + "childIds": ["-1000000296", "-1000000297", "-1000000298"], + "backendDOMNodeId": 400 + }, + { + "nodeId": "574", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Video" + }, + "chromeRole": { + "type": "internalRole", + "value": 182 + }, + "name": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "573", + "childIds": ["575"], + "backendDOMNodeId": 574 + }, + { + "nodeId": "654", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "573", + "childIds": ["401"], + "backendDOMNodeId": 654 + }, + { + "nodeId": "402", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + } + ] + }, + "properties": [], + "parentId": "655", + "childIds": ["-1000000300"], + "backendDOMNodeId": 402 + }, + { + "nodeId": "657", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "656", + "childIds": ["403", "404"], + "backendDOMNodeId": 657 + }, + { + "nodeId": "658", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "656", + "childIds": ["405", "406", "407", "659", "409", "410", "411", "661", "413"], + "backendDOMNodeId": 658 + }, + { + "nodeId": "662", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "656", + "childIds": ["414", "415", "416", "471", "418"], + "backendDOMNodeId": 662 + }, + { + "nodeId": "663", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "656", + "childIds": ["419", "420", "664", "422"], + "backendDOMNodeId": 663 + }, + { + "nodeId": "423", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + } + ] + }, + "properties": [], + "parentId": "667", + "childIds": ["-1000000318"], + "backendDOMNodeId": 423 + }, + { + "nodeId": "424", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + } + } + ] + }, + "properties": [], + "parentId": "668", + "childIds": ["-1000000319"], + "backendDOMNodeId": 424 + }, + { + "nodeId": "425", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "669", + "childIds": ["-1000000320"], + "backendDOMNodeId": 425 + }, + { + "nodeId": "426", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + } + ] + }, + "properties": [], + "parentId": "672", + "childIds": ["-1000000321"], + "backendDOMNodeId": 426 + }, + { + "nodeId": "435", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + } + ] + }, + "properties": [], + "parentId": "675", + "childIds": ["-1000000322"], + "backendDOMNodeId": 435 + }, + { + "nodeId": "677", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "676", + "childIds": ["427", "678", "437", "679", "439", "440"], + "backendDOMNodeId": 677 + }, + { + "nodeId": "680", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "676", + "childIds": ["428", "441", "681", "443", "444", "682"], + "backendDOMNodeId": 680 + }, + { + "nodeId": "683", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "676", + "childIds": ["429", "446", "447", "684", "449", "450"], + "backendDOMNodeId": 683 + }, + { + "nodeId": "685", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "676", + "childIds": ["430", "451", "714", "686"], + "backendDOMNodeId": 685 + }, + { + "nodeId": "687", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "676", + "childIds": ["431", "453"], + "backendDOMNodeId": 687 + }, + { + "nodeId": "689", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "688", + "childIds": ["454"], + "backendDOMNodeId": 689 + }, + { + "nodeId": "690", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "688", + "childIds": ["691", "694", "696"], + "backendDOMNodeId": 690 + }, + { + "nodeId": "699", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "698", + "childIds": ["466"], + "backendDOMNodeId": 699 + }, + { + "nodeId": "700", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "698", + "childIds": ["701"], + "backendDOMNodeId": 700 + }, + { + "nodeId": "-1000000366", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "468", + "childIds": [] + }, + { + "nodeId": "-1000000367", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "469", + "childIds": [] + }, + { + "nodeId": "470", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + } + ] + }, + "properties": [], + "parentId": "712", + "childIds": ["-1000000368"], + "backendDOMNodeId": 470 + }, + { + "nodeId": "-1000000256", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "375", + "childIds": [] + }, + { + "nodeId": "-1000000257", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "376", + "childIds": [] + }, + { + "nodeId": "-1000000259", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "378", + "childIds": [] + }, + { + "nodeId": "-1000000261", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and " + }, + "properties": [], + "parentId": "379", + "childIds": [] + }, + { + "nodeId": "-1000000262", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "liquid volumes in real time — without leaving VSCode." + }, + "properties": [], + "parentId": "379", + "childIds": [] + }, + { + "nodeId": "-1000000263", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "380", + "childIds": [] + }, + { + "nodeId": "-1000000264", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "381", + "childIds": [] + }, + { + "nodeId": "-1000000265", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + }, + "properties": [], + "parentId": "382", + "childIds": [] + }, + { + "nodeId": "540", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "539", + "childIds": ["541", "542"], + "backendDOMNodeId": 540 + }, + { + "nodeId": "544", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "543", + "childIds": ["545", "546"], + "backendDOMNodeId": 544 + }, + { + "nodeId": "548", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "547", + "childIds": ["549", "550"], + "backendDOMNodeId": 548 + }, + { + "nodeId": "552", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "551", + "childIds": ["553", "554"], + "backendDOMNodeId": 552 + }, + { + "nodeId": "556", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "555", + "childIds": ["557", "558"], + "backendDOMNodeId": 556 + }, + { + "nodeId": "560", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "559", + "childIds": ["561", "562"], + "backendDOMNodeId": 560 + }, + { + "nodeId": "395", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer in action" + } + } + ] + }, + "properties": [], + "parentId": "567", + "childIds": ["-1000000291"], + "backendDOMNodeId": 395 + }, + { + "nodeId": "-1000000292", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + }, + "properties": [], + "parentId": "396", + "childIds": [] + }, + { + "nodeId": "-1000000293", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + }, + "properties": [], + "parentId": "397", + "childIds": [] + }, + { + "nodeId": "-1000000294", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "398", + "childIds": [] + }, + { + "nodeId": "399", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "572", + "childIds": ["-1000000295"], + "backendDOMNodeId": 399 + }, + { + "nodeId": "-1000000296", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons " + }, + "properties": [], + "parentId": "400", + "childIds": [] + }, + { + "nodeId": "-1000000297", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback " + }, + "properties": [], + "parentId": "400", + "childIds": [] + }, + { + "nodeId": "-1000000298", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop." + }, + "properties": [], + "parentId": "400", + "childIds": [] + }, + { + "nodeId": "575", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "574", + "childIds": ["576", "577", "579", "609", "610", "611", "612", "613"], + "backendDOMNodeId": 575 + }, + { + "nodeId": "576", + "ignored": false, + "role": { + "type": "role", + "value": "group" + }, + "chromeRole": { + "type": "internalRole", + "value": 93 + }, + "name": { + "type": "computedString", + "value": "buffering", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "buffering" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "buffering" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "live", + "value": { + "type": "token", + "value": "polite" + } + }, + { + "name": "atomic", + "value": { + "type": "boolean", + "value": false + } + }, + { + "name": "relevant", + "value": { + "type": "tokenList", + "value": "additions text" + } + } + ], + "parentId": "575", + "childIds": ["716"], + "backendDOMNodeId": 576 + }, + { + "nodeId": "577", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "575", + "childIds": ["578"], + "backendDOMNodeId": 577 + }, + { + "nodeId": "579", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": ["580"], + "backendDOMNodeId": 579 + }, + { + "nodeId": "580", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "579", + "childIds": ["581", "582", "602"], + "backendDOMNodeId": 580 + }, + { + "nodeId": "581", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "580", + "childIds": [], + "backendDOMNodeId": 581 + }, + { + "nodeId": "582", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "580", + "childIds": ["583", "587", "588", "598", "600"], + "backendDOMNodeId": 582 + }, + { + "nodeId": "602", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "video time scrubber", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "video time scrubber" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "video time scrubber" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "total time: 0:00" + }, + "value": { + "type": "number", + "value": 0 + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "settable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "orientation", + "value": { + "type": "token", + "value": "horizontal" + } + }, + { + "name": "valuemin", + "value": { + "type": "number", + "value": 0 + } + }, + { + "name": "valuemax", + "value": { + "type": "number", + "value": 100 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "elapsed time: 0:00" + } + } + ], + "parentId": "580", + "childIds": [], + "backendDOMNodeId": 602 + }, + { + "nodeId": "609", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": [], + "backendDOMNodeId": 609 + }, + { + "nodeId": "610", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": [], + "backendDOMNodeId": 610 + }, + { + "nodeId": "611", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": [], + "backendDOMNodeId": 611 + }, + { + "nodeId": "612", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": [], + "backendDOMNodeId": 612 + }, + { + "nodeId": "613", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "575", + "childIds": [ + "614", + "618", + "622", + "626", + "630", + "634", + "638", + "642", + "646", + "650" + ], + "backendDOMNodeId": 613 + }, + { + "nodeId": "614", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 614 + }, + { + "nodeId": "618", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 618 + }, + { + "nodeId": "622", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 622 + }, + { + "nodeId": "626", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 626 + }, + { + "nodeId": "630", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 630 + }, + { + "nodeId": "634", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 634 + }, + { + "nodeId": "638", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 638 + }, + { + "nodeId": "642", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 642 + }, + { + "nodeId": "646", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 646 + }, + { + "nodeId": "650", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "613", + "childIds": [], + "backendDOMNodeId": 650 + }, + { + "nodeId": "401", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + } + } + ] + }, + "properties": [], + "parentId": "654", + "childIds": ["-1000000299"], + "backendDOMNodeId": 401 + }, + { + "nodeId": "-1000000300", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "402", + "childIds": [] + }, + { + "nodeId": "403", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "657", + "childIds": ["-1000000174"], + "backendDOMNodeId": 403 + }, + { + "nodeId": "404", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install VSCode or Cursor" + } + } + ] + }, + "properties": [], + "parentId": "657", + "childIds": ["-1000000301"], + "backendDOMNodeId": 404 + }, + { + "nodeId": "405", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000176"], + "backendDOMNodeId": 405 + }, + { + "nodeId": "406", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the skill:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the skill:" + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000302"], + "backendDOMNodeId": 406 + }, + { + "nodeId": "407", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000303"], + "backendDOMNodeId": 407 + }, + { + "nodeId": "659", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["408"], + "backendDOMNodeId": 659 + }, + { + "nodeId": "409", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000305"], + "backendDOMNodeId": 409 + }, + { + "nodeId": "410", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(see" + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000306"], + "backendDOMNodeId": 410 + }, + { + "nodeId": "411", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000307"], + "backendDOMNodeId": 411 + }, + { + "nodeId": "661", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "658", + "childIds": ["412"], + "backendDOMNodeId": 661 + }, + { + "nodeId": "413", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "658", + "childIds": ["-1000000310"], + "backendDOMNodeId": 413 + }, + { + "nodeId": "414", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "662", + "childIds": ["-1000000186"], + "backendDOMNodeId": 414 + }, + { + "nodeId": "415", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + } + } + ] + }, + "properties": [], + "parentId": "662", + "childIds": ["-1000000311"], + "backendDOMNodeId": 415 + }, + { + "nodeId": "416", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "662", + "childIds": ["-1000000312"], + "backendDOMNodeId": 416 + }, + { + "nodeId": "471", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "662", + "childIds": ["417"], + "backendDOMNodeId": 471 + }, + { + "nodeId": "418", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "662", + "childIds": ["-1000000314"], + "backendDOMNodeId": 418 + }, + { + "nodeId": "419", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "4. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "4. " + } + } + ] + }, + "properties": [], + "parentId": "663", + "childIds": ["-1000000191"], + "backendDOMNodeId": 419 + }, + { + "nodeId": "420", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Use ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Use " + } + } + ] + }, + "properties": [], + "parentId": "663", + "childIds": ["-1000000315"], + "backendDOMNodeId": 420 + }, + { + "nodeId": "664", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "663", + "childIds": ["421"], + "backendDOMNodeId": 664 + }, + { + "nodeId": "422", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + } + } + ] + }, + "properties": [], + "parentId": "663", + "childIds": ["-1000000317"], + "backendDOMNodeId": 422 + }, + { + "nodeId": "-1000000318", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "423", + "childIds": [] + }, + { + "nodeId": "-1000000319", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + }, + "properties": [], + "parentId": "424", + "childIds": [] + }, + { + "nodeId": "-1000000320", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "425", + "childIds": [] + }, + { + "nodeId": "-1000000321", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "426", + "childIds": [] + }, + { + "nodeId": "-1000000322", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "435", + "childIds": [] + }, + { + "nodeId": "427", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["-1000000200"], + "backendDOMNodeId": 427 + }, + { + "nodeId": "678", + "ignored": false, + "role": { + "type": "role", + "value": "strong" + }, + "chromeRole": { + "type": "internalRole", + "value": 160 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["436"], + "backendDOMNodeId": 678 + }, + { + "nodeId": "437", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ", with ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ", with " + } + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["-1000000324"], + "backendDOMNodeId": 437 + }, + { + "nodeId": "679", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["438"], + "backendDOMNodeId": 679 + }, + { + "nodeId": "439", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["-1000000326"], + "backendDOMNodeId": 439 + }, + { + "nodeId": "440", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "available in PATH", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "available in PATH" + } + } + ] + }, + "properties": [], + "parentId": "677", + "childIds": ["-1000000327"], + "backendDOMNodeId": 440 + }, + { + "nodeId": "428", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["-1000000206"], + "backendDOMNodeId": 428 + }, + { + "nodeId": "441", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The " + } + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["-1000000328"], + "backendDOMNodeId": 441 + }, + { + "nodeId": "681", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["442"], + "backendDOMNodeId": 681 + }, + { + "nodeId": "443", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " Python package:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " Python package:" + } + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["-1000000330", "-1000000331"], + "backendDOMNodeId": 443 + }, + { + "nodeId": "444", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["-1000000332"], + "backendDOMNodeId": 444 + }, + { + "nodeId": "682", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "680", + "childIds": ["445"], + "backendDOMNodeId": 682 + }, + { + "nodeId": "429", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["-1000000214"], + "backendDOMNodeId": 429 + }, + { + "nodeId": "446", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "For OT-2 use" + } + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["-1000000335"], + "backendDOMNodeId": 446 + }, + { + "nodeId": "447", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["-1000000336"], + "backendDOMNodeId": 447 + }, + { + "nodeId": "684", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["448"], + "backendDOMNodeId": 684 + }, + { + "nodeId": "449", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["-1000000339"], + "backendDOMNodeId": 449 + }, + { + "nodeId": "450", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)" + } + } + ] + }, + "properties": [], + "parentId": "683", + "childIds": ["-1000000340", "-1000000341"], + "backendDOMNodeId": 450 + }, + { + "nodeId": "430", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "685", + "childIds": ["-1000000222"], + "backendDOMNodeId": 430 + }, + { + "nodeId": "451", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via" + } + } + ] + }, + "properties": [], + "parentId": "685", + "childIds": ["-1000000342", "-1000000343"], + "backendDOMNodeId": 451 + }, + { + "nodeId": "714", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "685", + "childIds": [], + "backendDOMNodeId": 714 + }, + { + "nodeId": "686", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "685", + "childIds": ["452"], + "backendDOMNodeId": 686 + }, + { + "nodeId": "431", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "687", + "childIds": ["-1000000227"], + "backendDOMNodeId": 431 + }, + { + "nodeId": "453", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol." + } + } + ] + }, + "properties": [], + "parentId": "687", + "childIds": ["-1000000346", "-1000000347", "-1000000348", "-1000000349"], + "backendDOMNodeId": 453 + }, + { + "nodeId": "454", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "689", + "childIds": ["-1000000350"], + "backendDOMNodeId": 454 + }, + { + "nodeId": "691", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "690", + "childIds": ["432", "455", "456", "457", "458", "459", "460"], + "backendDOMNodeId": 691 + }, + { + "nodeId": "694", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "690", + "childIds": ["433", "461", "695"], + "backendDOMNodeId": 694 + }, + { + "nodeId": "696", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "690", + "childIds": ["434", "463", "697", "465"], + "backendDOMNodeId": 696 + }, + { + "nodeId": "466", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "699", + "childIds": ["-1000000364"], + "backendDOMNodeId": 466 + }, + { + "nodeId": "701", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "700", + "childIds": ["467"], + "backendDOMNodeId": 701 + }, + { + "nodeId": "-1000000368", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "470", + "childIds": [] + }, + { + "nodeId": "541", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "540", + "childIds": ["383"], + "backendDOMNodeId": 541 + }, + { + "nodeId": "542", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "540", + "childIds": ["384"], + "backendDOMNodeId": 542 + }, + { + "nodeId": "545", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "544", + "childIds": ["385"], + "backendDOMNodeId": 545 + }, + { + "nodeId": "546", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "544", + "childIds": ["386"], + "backendDOMNodeId": 546 + }, + { + "nodeId": "549", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "548", + "childIds": ["387"], + "backendDOMNodeId": 549 + }, + { + "nodeId": "550", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "548", + "childIds": ["388"], + "backendDOMNodeId": 550 + }, + { + "nodeId": "553", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "552", + "childIds": ["389"], + "backendDOMNodeId": 553 + }, + { + "nodeId": "554", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "552", + "childIds": ["390"], + "backendDOMNodeId": 554 + }, + { + "nodeId": "557", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "556", + "childIds": ["391"], + "backendDOMNodeId": 557 + }, + { + "nodeId": "558", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "556", + "childIds": ["392"], + "backendDOMNodeId": 558 + }, + { + "nodeId": "561", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "560", + "childIds": ["393"], + "backendDOMNodeId": 561 + }, + { + "nodeId": "562", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "560", + "childIds": ["394"], + "backendDOMNodeId": 562 + }, + { + "nodeId": "-1000000291", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action" + }, + "properties": [], + "parentId": "395", + "childIds": [] + }, + { + "nodeId": "-1000000295", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "399", + "childIds": [] + }, + { + "nodeId": "716", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "576", + "childIds": ["717"], + "backendDOMNodeId": 716 + }, + { + "nodeId": "578", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "577", + "childIds": [], + "backendDOMNodeId": 578 + }, + { + "nodeId": "583", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "play", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "play" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "play" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "582", + "childIds": ["584"], + "backendDOMNodeId": 583 + }, + { + "nodeId": "587", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "582", + "childIds": [], + "backendDOMNodeId": 587 + }, + { + "nodeId": "588", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "582", + "childIds": ["589", "590", "597"], + "backendDOMNodeId": 588 + }, + { + "nodeId": "598", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "enter full screen", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "enter full screen" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "enter full screen" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "582", + "childIds": ["599"], + "backendDOMNodeId": 598 + }, + { + "nodeId": "600", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 137 + }, + "name": { + "type": "computedString", + "value": "show more media controls", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "show more media controls" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "show more media controls" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "more options" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "more options" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "more options" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "hasPopup", + "value": { + "type": "token", + "value": "menu" + } + } + ], + "parentId": "582", + "childIds": ["601"], + "backendDOMNodeId": 600 + }, + { + "nodeId": "-1000000299", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + }, + "properties": [], + "parentId": "401", + "childIds": [] + }, + { + "nodeId": "-1000000174", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "403", + "childIds": [] + }, + { + "nodeId": "-1000000301", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "404", + "childIds": [] + }, + { + "nodeId": "-1000000176", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "405", + "childIds": [] + }, + { + "nodeId": "-1000000302", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "406", + "childIds": [] + }, + { + "nodeId": "-1000000303", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "407", + "childIds": [] + }, + { + "nodeId": "408", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "659", + "childIds": ["-1000000304"], + "backendDOMNodeId": 408 + }, + { + "nodeId": "-1000000305", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "409", + "childIds": [] + }, + { + "nodeId": "-1000000306", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "410", + "childIds": [] + }, + { + "nodeId": "-1000000307", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "411", + "childIds": [] + }, + { + "nodeId": "412", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "661", + "childIds": ["-1000000308", "-1000000309"], + "backendDOMNodeId": 412 + }, + { + "nodeId": "-1000000310", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "413", + "childIds": [] + }, + { + "nodeId": "-1000000186", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "414", + "childIds": [] + }, + { + "nodeId": "-1000000311", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + }, + "properties": [], + "parentId": "415", + "childIds": [] + }, + { + "nodeId": "-1000000312", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "416", + "childIds": [] + }, + { + "nodeId": "417", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + } + ] + }, + "properties": [], + "parentId": "471", + "childIds": ["-1000000313"], + "backendDOMNodeId": 417 + }, + { + "nodeId": "-1000000314", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "418", + "childIds": [] + }, + { + "nodeId": "-1000000191", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "419", + "childIds": [] + }, + { + "nodeId": "-1000000315", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "420", + "childIds": [] + }, + { + "nodeId": "421", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "664", + "childIds": ["-1000000316"], + "backendDOMNodeId": 421 + }, + { + "nodeId": "-1000000317", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + }, + "properties": [], + "parentId": "422", + "childIds": [] + }, + { + "nodeId": "-1000000200", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "427", + "childIds": [] + }, + { + "nodeId": "436", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python 3.8 or later" + } + } + ] + }, + "properties": [], + "parentId": "678", + "childIds": ["-1000000323"], + "backendDOMNodeId": 436 + }, + { + "nodeId": "-1000000324", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", with " + }, + "properties": [], + "parentId": "437", + "childIds": [] + }, + { + "nodeId": "438", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "python3", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "python3" + } + } + ] + }, + "properties": [], + "parentId": "679", + "childIds": ["-1000000325"], + "backendDOMNodeId": 438 + }, + { + "nodeId": "-1000000326", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "439", + "childIds": [] + }, + { + "nodeId": "-1000000327", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "440", + "childIds": [] + }, + { + "nodeId": "-1000000206", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "428", + "childIds": [] + }, + { + "nodeId": "-1000000328", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "441", + "childIds": [] + }, + { + "nodeId": "442", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "opentrons" + } + } + ] + }, + "properties": [], + "parentId": "681", + "childIds": ["-1000000329"], + "backendDOMNodeId": 442 + }, + { + "nodeId": "-1000000330", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " Python " + }, + "properties": [], + "parentId": "443", + "childIds": [] + }, + { + "nodeId": "-1000000331", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "package:" + }, + "properties": [], + "parentId": "443", + "childIds": [] + }, + { + "nodeId": "-1000000332", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "444", + "childIds": [] + }, + { + "nodeId": "445", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons" + } + } + ] + }, + "properties": [], + "parentId": "682", + "childIds": ["-1000000333", "-1000000334"], + "backendDOMNodeId": 445 + }, + { + "nodeId": "-1000000214", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "429", + "childIds": [] + }, + { + "nodeId": "-1000000335", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "446", + "childIds": [] + }, + { + "nodeId": "-1000000336", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "447", + "childIds": [] + }, + { + "nodeId": "448", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons==9.0.0", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons==9.0.0" + } + } + ] + }, + "properties": [], + "parentId": "684", + "childIds": ["-1000000337", "-1000000338"], + "backendDOMNodeId": 448 + }, + { + "nodeId": "-1000000339", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "449", + "childIds": [] + }, + { + "nodeId": "-1000000340", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons " + }, + "properties": [], + "parentId": "450", + "childIds": [] + }, + { + "nodeId": "-1000000341", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "9.1.0+ dropped OT-2 support)" + }, + "properties": [], + "parentId": "450", + "childIds": [] + }, + { + "nodeId": "-1000000222", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "430", + "childIds": [] + }, + { + "nodeId": "-1000000342", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python " + }, + "properties": [], + "parentId": "451", + "childIds": [] + }, + { + "nodeId": "-1000000343", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "interpreter in VSCode via" + }, + "properties": [], + "parentId": "451", + "childIds": [] + }, + { + "nodeId": "452", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python: Select Interpreter", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python: Select Interpreter" + } + } + ] + }, + "properties": [], + "parentId": "686", + "childIds": ["-1000000344", "-1000000345"], + "backendDOMNodeId": 452 + }, + { + "nodeId": "-1000000227", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "431", + "childIds": [] + }, + { + "nodeId": "-1000000346", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep " + }, + "properties": [], + "parentId": "453", + "childIds": [] + }, + { + "nodeId": "-1000000347", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them in a separate virtual " + }, + "properties": [], + "parentId": "453", + "childIds": [] + }, + { + "nodeId": "-1000000348", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and switch " + }, + "properties": [], + "parentId": "453", + "childIds": [] + }, + { + "nodeId": "-1000000349", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "per protocol." + }, + "properties": [], + "parentId": "453", + "childIds": [] + }, + { + "nodeId": "-1000000350", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "properties": [], + "parentId": "454", + "childIds": [] + }, + { + "nodeId": "432", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000233"], + "backendDOMNodeId": 432 + }, + { + "nodeId": "455", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette (", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Open the Command Palette (" + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000351", "-1000000352"], + "backendDOMNodeId": 455 + }, + { + "nodeId": "456", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Cmd+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000353"], + "backendDOMNodeId": 456 + }, + { + "nodeId": "457", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " /", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " /" + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000354"], + "backendDOMNodeId": 457 + }, + { + "nodeId": "458", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000355"], + "backendDOMNodeId": 458 + }, + { + "nodeId": "459", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Ctrl+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000356"], + "backendDOMNodeId": 459 + }, + { + "nodeId": "460", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "691", + "childIds": ["-1000000357"], + "backendDOMNodeId": 460 + }, + { + "nodeId": "433", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "694", + "childIds": ["-1000000241"], + "backendDOMNodeId": 433 + }, + { + "nodeId": "461", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select " + } + } + ] + }, + "properties": [], + "parentId": "694", + "childIds": ["-1000000358"], + "backendDOMNodeId": 461 + }, + { + "nodeId": "695", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "694", + "childIds": ["462"], + "backendDOMNodeId": 695 + }, + { + "nodeId": "434", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "696", + "childIds": ["-1000000245"], + "backendDOMNodeId": 434 + }, + { + "nodeId": "463", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Choose the downloaded " + } + } + ] + }, + "properties": [], + "parentId": "696", + "childIds": ["-1000000361"], + "backendDOMNodeId": 463 + }, + { + "nodeId": "697", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "696", + "childIds": ["464"], + "backendDOMNodeId": 697 + }, + { + "nodeId": "465", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " file", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " file" + } + } + ] + }, + "properties": [], + "parentId": "696", + "childIds": ["-1000000363"], + "backendDOMNodeId": 465 + }, + { + "nodeId": "-1000000364", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "466", + "childIds": [] + }, + { + "nodeId": "467", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + } + } + ] + }, + "properties": [], + "parentId": "701", + "childIds": ["-1000000365"], + "backendDOMNodeId": 467 + }, + { + "nodeId": "383", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + } + ] + }, + "properties": [], + "parentId": "541", + "childIds": ["-1000000266"], + "backendDOMNodeId": 383 + }, + { + "nodeId": "384", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs." + } + } + ] + }, + "properties": [], + "parentId": "542", + "childIds": ["-1000000267", "-1000000268", "-1000000269"], + "backendDOMNodeId": 384 + }, + { + "nodeId": "385", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + } + ] + }, + "properties": [], + "parentId": "545", + "childIds": ["-1000000270"], + "backendDOMNodeId": 385 + }, + { + "nodeId": "386", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file." + } + } + ] + }, + "properties": [], + "parentId": "546", + "childIds": ["-1000000271", "-1000000272", "-1000000273"], + "backendDOMNodeId": 386 + }, + { + "nodeId": "387", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + } + ] + }, + "properties": [], + "parentId": "549", + "childIds": ["-1000000274"], + "backendDOMNodeId": 387 + }, + { + "nodeId": "388", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "550", + "childIds": ["-1000000275", "-1000000276", "-1000000277", "-1000000278"], + "backendDOMNodeId": 388 + }, + { + "nodeId": "389", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + } + ] + }, + "properties": [], + "parentId": "553", + "childIds": ["-1000000279"], + "backendDOMNodeId": 389 + }, + { + "nodeId": "390", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "554", + "childIds": ["-1000000280", "-1000000281", "-1000000282"], + "backendDOMNodeId": 390 + }, + { + "nodeId": "391", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + } + ] + }, + "properties": [], + "parentId": "557", + "childIds": ["-1000000283"], + "backendDOMNodeId": 391 + }, + { + "nodeId": "392", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support." + } + } + ] + }, + "properties": [], + "parentId": "558", + "childIds": ["-1000000284", "-1000000285", "-1000000286"], + "backendDOMNodeId": 392 + }, + { + "nodeId": "393", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + } + ] + }, + "properties": [], + "parentId": "561", + "childIds": ["-1000000287"], + "backendDOMNodeId": 393 + }, + { + "nodeId": "394", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly." + } + } + ] + }, + "properties": [], + "parentId": "562", + "childIds": ["-1000000288", "-1000000289", "-1000000290"], + "backendDOMNodeId": 394 + }, + { + "nodeId": "717", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "716", + "childIds": ["718"], + "backendDOMNodeId": 717 + }, + { + "nodeId": "718", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "717", + "childIds": ["719", "721"], + "backendDOMNodeId": 718 + }, + { + "nodeId": "584", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "583", + "childIds": [], + "backendDOMNodeId": 584 + }, + { + "nodeId": "589", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "588", + "childIds": [], + "backendDOMNodeId": 589 + }, + { + "nodeId": "590", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "588", + "childIds": [], + "backendDOMNodeId": 590 + }, + { + "nodeId": "597", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "mute", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "mute" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "mute" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "588", + "childIds": [], + "backendDOMNodeId": 597 + }, + { + "nodeId": "599", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "598", + "childIds": [], + "backendDOMNodeId": 599 + }, + { + "nodeId": "601", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "600", + "childIds": [], + "backendDOMNodeId": 601 + }, + { + "nodeId": "-1000000304", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "408", + "childIds": [] + }, + { + "nodeId": "-1000000308", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-" + }, + "properties": [], + "parentId": "412", + "childIds": [] + }, + { + "nodeId": "-1000000309", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop" + }, + "properties": [], + "parentId": "412", + "childIds": [] + }, + { + "nodeId": "-1000000313", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "417", + "childIds": [] + }, + { + "nodeId": "-1000000316", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "421", + "childIds": [] + }, + { + "nodeId": "-1000000323", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "436", + "childIds": [] + }, + { + "nodeId": "-1000000325", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "438", + "childIds": [] + }, + { + "nodeId": "-1000000329", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "442", + "childIds": [] + }, + { + "nodeId": "-1000000333", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "445", + "childIds": [] + }, + { + "nodeId": "-1000000334", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "445", + "childIds": [] + }, + { + "nodeId": "-1000000337", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "448", + "childIds": [] + }, + { + "nodeId": "-1000000338", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "448", + "childIds": [] + }, + { + "nodeId": "-1000000344", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: Select " + }, + "properties": [], + "parentId": "452", + "childIds": [] + }, + { + "nodeId": "-1000000345", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "452", + "childIds": [] + }, + { + "nodeId": "-1000000233", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "432", + "childIds": [] + }, + { + "nodeId": "-1000000351", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette " + }, + "properties": [], + "parentId": "455", + "childIds": [] + }, + { + "nodeId": "-1000000352", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(" + }, + "properties": [], + "parentId": "455", + "childIds": [] + }, + { + "nodeId": "-1000000353", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "456", + "childIds": [] + }, + { + "nodeId": "-1000000354", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " /" + }, + "properties": [], + "parentId": "457", + "childIds": [] + }, + { + "nodeId": "-1000000355", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "458", + "childIds": [] + }, + { + "nodeId": "-1000000356", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "459", + "childIds": [] + }, + { + "nodeId": "-1000000357", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "460", + "childIds": [] + }, + { + "nodeId": "-1000000241", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "433", + "childIds": [] + }, + { + "nodeId": "-1000000358", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "461", + "childIds": [] + }, + { + "nodeId": "462", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install from VSIX...", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Extensions: Install from VSIX..." + } + } + ] + }, + "properties": [], + "parentId": "695", + "childIds": ["-1000000359", "-1000000360"], + "backendDOMNodeId": 462 + }, + { + "nodeId": "-1000000245", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "434", + "childIds": [] + }, + { + "nodeId": "-1000000361", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded " + }, + "properties": [], + "parentId": "463", + "childIds": [] + }, + { + "nodeId": "464", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ".vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ".vsix" + } + } + ] + }, + "properties": [], + "parentId": "697", + "childIds": ["-1000000362"], + "backendDOMNodeId": 464 + }, + { + "nodeId": "-1000000363", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "file" + }, + "properties": [], + "parentId": "465", + "childIds": [] + }, + { + "nodeId": "-1000000365", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + }, + "properties": [], + "parentId": "467", + "childIds": [] + }, + { + "nodeId": "-1000000266", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization" + }, + "properties": [], + "parentId": "383", + "childIds": [] + }, + { + "nodeId": "-1000000267", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes " + }, + "properties": [], + "parentId": "384", + "childIds": [] + }, + { + "nodeId": "-1000000268", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "render in real time through an interactive " + }, + "properties": [], + "parentId": "384", + "childIds": [] + }, + { + "nodeId": "-1000000269", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "panel while your protocol runs." + }, + "properties": [], + "parentId": "384", + "childIds": [] + }, + { + "nodeId": "-1000000270", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save" + }, + "properties": [], + "parentId": "385", + "childIds": [] + }, + { + "nodeId": "-1000000271", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns " + }, + "properties": [], + "parentId": "386", + "childIds": [] + }, + { + "nodeId": "-1000000272", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "whenever you save changes (Ctrl+S / " + }, + "properties": [], + "parentId": "386", + "childIds": [] + }, + { + "nodeId": "-1000000273", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+S) to your protocol file." + }, + "properties": [], + "parentId": "386", + "childIds": [] + }, + { + "nodeId": "-1000000274", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "387", + "childIds": [] + }, + { + "nodeId": "-1000000275", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons " + }, + "properties": [], + "parentId": "388", + "childIds": [] + }, + { + "nodeId": "-1000000276", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters; hit Analyze to apply " + }, + "properties": [], + "parentId": "388", + "childIds": [] + }, + { + "nodeId": "-1000000277", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them — your original code is never " + }, + "properties": [], + "parentId": "388", + "childIds": [] + }, + { + "nodeId": "-1000000278", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "modified." + }, + "properties": [], + "parentId": "388", + "childIds": [] + }, + { + "nodeId": "-1000000279", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "389", + "childIds": [] + }, + { + "nodeId": "-1000000280", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) " + }, + "properties": [], + "parentId": "390", + "childIds": [] + }, + { + "nodeId": "-1000000281", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "in the same directory as your protocol file " + }, + "properties": [], + "parentId": "390", + "childIds": [] + }, + { + "nodeId": "-1000000282", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and they just work." + }, + "properties": [], + "parentId": "390", + "childIds": [] + }, + { + "nodeId": "-1000000283", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window" + }, + "properties": [], + "parentId": "391", + "childIds": [] + }, + { + "nodeId": "-1000000284", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or " + }, + "properties": [], + "parentId": "392", + "childIds": [] + }, + { + "nodeId": "-1000000285", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "drag the tab to another monitor via " + }, + "properties": [], + "parentId": "392", + "childIds": [] + }, + { + "nodeId": "-1000000286", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "392", + "childIds": [] + }, + { + "nodeId": "-1000000287", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper" + }, + "properties": [], + "parentId": "393", + "childIds": [] + }, + { + "nodeId": "-1000000288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps " + }, + "properties": [], + "parentId": "394", + "childIds": [] + }, + { + "nodeId": "-1000000289", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and hit Enter to jump the visualization state " + }, + "properties": [], + "parentId": "394", + "childIds": [] + }, + { + "nodeId": "-1000000290", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "instantly." + }, + "properties": [], + "parentId": "394", + "childIds": [] + }, + { + "nodeId": "719", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "718", + "childIds": ["720"], + "backendDOMNodeId": 719 + }, + { + "nodeId": "721", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "718", + "childIds": ["722"], + "backendDOMNodeId": 721 + }, + { + "nodeId": "-1000000359", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install " + }, + "properties": [], + "parentId": "462", + "childIds": [] + }, + { + "nodeId": "-1000000360", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "from VSIX..." + }, + "properties": [], + "parentId": "462", + "childIds": [] + }, + { + "nodeId": "-1000000362", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "464", + "childIds": [] + }, + { + "nodeId": "720", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "719", + "childIds": [], + "backendDOMNodeId": 720 + }, + { + "nodeId": "722", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "721", + "childIds": [], + "backendDOMNodeId": 722 + } +] diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/dom.html b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/dom.html new file mode 100644 index 0000000..ad39db5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/dom.html @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + Protocol Visualizer — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Visualizer

+ Preview +
+

+ Simulate your Opentrons Python protocols and inspect deck + layout and liquid volumes in real time — without leaving + VSCode. +

+ +
+ +
+
+
+
+

+ Everything you need to see your protocol run +

+
    +
  • +
    +

    + Real-time Deck Visualization +

    +

    + Deck state and liquid volume changes render in real time + through an interactive panel while your protocol runs. +

    +
    +
  • +
  • +
    +

    Auto-analysis on Save

    +

    + The simulation automatically reruns whenever you save + changes (Ctrl+S / Cmd+S) to your protocol file. +

    +
    +
  • +
  • +
    +

    Runtime Parameters UI

    +

    + Input fields are generated for Opentrons Runtime + Parameters; hit Analyze to apply them — your original code + is never modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place custom labware definition files (.json) in the same + directory as your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out Window

    +

    + Pop the panel out to its own window or drag the tab to + another monitor via VSCode's Auxiliary Window support. +

    +
    +
  • +
  • +
    +

    Step Jumper

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly. +

    +
    +
  • +
+
+
+
+
+
+ Protocol Visualizer visualizing an Opentrons protocol on a simulated deck +
+ Protocol Visualizer in action +
+
+
+
+
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with + protocol-fix-loop. Generate Opentrons protocols with GitHub Copilot or Cursor, + then simulate and fix them in a visual feedback loop. +

+
+ +
+ Generate a protocol from a prompt, then fix it while watching + the simulation +
+
+

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill: + npx skills add koji/protocol-fix-loop + (see + koji/protocol-fix-loop) +
  4. +
  5. + Install the Protocol Visualizer extension (see + Installation guide) +
  6. +
  7. + Use + /protocol-fix-loop + in chat and add your prompt to generate a protocol +
  8. +
+
+
+
+
+

Want to try the extension?

+

+ Request access via our form — requests are handled individually. +

+ Request access +
+
+
+
+

Installation

+
+
+

Prerequisites

+
    +
  • + Python 3.8 or later, with + python3 available in PATH +
  • +
  • + The opentrons Python package: + pip install opentrons +
  • +
  • + For OT-2 use + pip install opentrons==9.0.0 + (opentrons 9.1.0+ dropped OT-2 support) +
  • +
  • + Select the matching Python interpreter in VSCode via + Python: Select Interpreter +
  • +
  • + Using both Flex and OT-2? Keep them in a separate virtual + environment each and switch per protocol. +
  • +
+
+
+

+ Method A: Command Palette +

+
    +
  1. + Open the Command Palette (Cmd+Shift+P / + Ctrl+Shift+P) +
  2. +
  3. + Select Extensions: Install from VSIX... +
  4. +
  5. Choose the downloaded .vsix file
  6. +
+
+
+

Method B: Command line

+
code --install-extension protocol-visualizer.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/result.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/result.json new file mode 100644 index 0000000..cb9001d --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/result.json @@ -0,0 +1,35 @@ +{ + "feature": "features-grid", + "url": "http://127.0.0.1:5181/", + "passed": 3, + "total": 3, + "ok": true, + "checks": [ + { + "id": "features-region", + "pass": true, + "value": true, + "error": null + }, + { + "id": "features-heading", + "pass": true, + "value": "Everything you need to see your protocol run", + "error": null + }, + { + "id": "features-cards", + "pass": true, + "value": [ + "Real-time Deck Visualization", + "Auto-analysis on Save", + "Runtime Parameters UI", + "Custom Labware Support", + "Pop-out Window", + "Step Jumper" + ], + "error": null + } + ], + "finishedAt": "2026-09-16T07:56:12.143Z" +} diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/screenshot.png b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/screenshot.png new file mode 100644 index 0000000..70d644e Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/axtree.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/axtree.json new file mode 100644 index 0000000..6ce5d9f --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/axtree.json @@ -0,0 +1,11360 @@ +[ + { + "nodeId": "2", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "aria-label", + "superseded": true + }, + { + "type": "relatedElement", + "value": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode" + }, + "nativeSource": "title" + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/" + } + } + ], + "childIds": ["19"], + "backendDOMNodeId": 2, + "frameId": "8AE6312B5CF350076BE20E6D026DCC9C" + }, + { + "nodeId": "19", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "2", + "childIds": ["44"], + "backendDOMNodeId": 19 + }, + { + "nodeId": "44", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "19", + "childIds": ["45"], + "backendDOMNodeId": 44 + }, + { + "nodeId": "45", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "44", + "childIds": ["46"], + "backendDOMNodeId": 45 + }, + { + "nodeId": "46", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "45", + "childIds": ["47", "65", "255", "261"], + "backendDOMNodeId": 46 + }, + { + "nodeId": "47", + "ignored": false, + "role": { + "type": "role", + "value": "banner" + }, + "chromeRole": { + "type": "internalRole", + "value": 94 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "46", + "childIds": ["48"], + "backendDOMNodeId": 47 + }, + { + "nodeId": "65", + "ignored": false, + "role": { + "type": "role", + "value": "main" + }, + "chromeRole": { + "type": "internalRole", + "value": 118 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "46", + "childIds": ["66", "81", "108", "113", "218", "223"], + "backendDOMNodeId": 65 + }, + { + "nodeId": "255", + "ignored": false, + "role": { + "type": "role", + "value": "complementary" + }, + "chromeRole": { + "type": "internalRole", + "value": 22 + }, + "name": { + "type": "computedString", + "value": "Disclaimer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Disclaimer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Disclaimer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "46", + "childIds": ["256"], + "backendDOMNodeId": 255 + }, + { + "nodeId": "261", + "ignored": false, + "role": { + "type": "role", + "value": "contentinfo" + }, + "chromeRole": { + "type": "internalRole", + "value": 85 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "46", + "childIds": ["262"], + "backendDOMNodeId": 261 + }, + { + "nodeId": "48", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "47", + "childIds": ["49", "56", "59"], + "backendDOMNodeId": 48 + }, + { + "nodeId": "49", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#top" + } + } + ], + "parentId": "48", + "childIds": ["55"], + "backendDOMNodeId": 49 + }, + { + "nodeId": "56", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "Section navigation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Section navigation" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Section navigation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "48", + "childIds": ["57", "58"], + "backendDOMNodeId": 56 + }, + { + "nodeId": "59", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "48", + "childIds": ["60", "61"], + "backendDOMNodeId": 59 + }, + { + "nodeId": "60", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "59", + "childIds": ["270"], + "backendDOMNodeId": 60 + }, + { + "nodeId": "61", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "Switch to light theme", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "Switch to light theme" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "59", + "childIds": [], + "backendDOMNodeId": 61 + }, + { + "nodeId": "66", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 211 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["67"], + "backendDOMNodeId": 66 + }, + { + "nodeId": "81", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Features" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["12"], + "backendDOMNodeId": 81 + }, + { + "nodeId": "108", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Screenshot", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Screenshot" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Screenshot" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["109"], + "backendDOMNodeId": 108 + }, + { + "nodeId": "113", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Generate protocols with AI" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Generate protocols with AI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["114"], + "backendDOMNodeId": 113 + }, + { + "nodeId": "218", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Request access" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["219"], + "backendDOMNodeId": 218 + }, + { + "nodeId": "223", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Installation guide" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "65", + "childIds": ["224"], + "backendDOMNodeId": 223 + }, + { + "nodeId": "256", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "255", + "childIds": ["260"], + "backendDOMNodeId": 256 + }, + { + "nodeId": "260", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "256", + "childIds": ["363"], + "backendDOMNodeId": 260 + }, + { + "nodeId": "262", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "261", + "childIds": ["263", "264"], + "backendDOMNodeId": 262 + }, + { + "nodeId": "263", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "262", + "childIds": ["364"], + "backendDOMNodeId": 263 + }, + { + "nodeId": "264", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "External links", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "External links" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "External links" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "262", + "childIds": ["265"], + "backendDOMNodeId": 264 + }, + { + "nodeId": "55", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "49", + "childIds": ["267"], + "backendDOMNodeId": 55 + }, + { + "nodeId": "267", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "55", + "childIds": ["-1000000002"], + "backendDOMNodeId": 267 + }, + { + "nodeId": "57", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#features" + } + } + ], + "parentId": "56", + "childIds": ["268"], + "backendDOMNodeId": 57 + }, + { + "nodeId": "58", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "56", + "childIds": ["269"], + "backendDOMNodeId": 58 + }, + { + "nodeId": "270", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "60", + "childIds": ["-1000000005"], + "backendDOMNodeId": 270 + }, + { + "nodeId": "67", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "66", + "childIds": ["68"], + "backendDOMNodeId": 67 + }, + { + "nodeId": "68", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "67", + "childIds": ["69", "72", "11"], + "backendDOMNodeId": 68 + }, + { + "nodeId": "69", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "68", + "childIds": ["70", "71"], + "backendDOMNodeId": 69 + }, + { + "nodeId": "70", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "69", + "childIds": ["271"], + "backendDOMNodeId": 70 + }, + { + "nodeId": "71", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "69", + "childIds": ["272"], + "backendDOMNodeId": 71 + }, + { + "nodeId": "272", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "PREVIEW", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "PREVIEW" + } + } + ] + }, + "properties": [], + "parentId": "71", + "childIds": ["-1000000007"], + "backendDOMNodeId": 272 + }, + { + "nodeId": "72", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "68", + "childIds": ["273"], + "backendDOMNodeId": 72 + }, + { + "nodeId": "11", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "68", + "childIds": ["73", "74"], + "backendDOMNodeId": 11 + }, + { + "nodeId": "73", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "11", + "childIds": ["274"], + "backendDOMNodeId": 73 + }, + { + "nodeId": "74", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "11", + "childIds": ["275"], + "backendDOMNodeId": 74 + }, + { + "nodeId": "12", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "81", + "childIds": ["82", "83"], + "backendDOMNodeId": 12 + }, + { + "nodeId": "82", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "12", + "childIds": ["276"], + "backendDOMNodeId": 82 + }, + { + "nodeId": "83", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "12", + "childIds": ["84", "88", "92", "96", "100", "104"], + "backendDOMNodeId": 83 + }, + { + "nodeId": "109", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "108", + "childIds": ["110"], + "backendDOMNodeId": 109 + }, + { + "nodeId": "110", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "109", + "childIds": ["111", "112"], + "backendDOMNodeId": 110 + }, + { + "nodeId": "114", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "113", + "childIds": ["115", "116", "118", "207", "208"], + "backendDOMNodeId": 114 + }, + { + "nodeId": "115", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "114", + "childIds": ["290"], + "backendDOMNodeId": 115 + }, + { + "nodeId": "116", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "114", + "childIds": ["291", "292", "117", "294"], + "backendDOMNodeId": 116 + }, + { + "nodeId": "118", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "114", + "childIds": ["4", "206"], + "backendDOMNodeId": 118 + }, + { + "nodeId": "207", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "114", + "childIds": ["296"], + "backendDOMNodeId": 207 + }, + { + "nodeId": "208", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "114", + "childIds": ["209", "210", "214", "216"], + "backendDOMNodeId": 208 + }, + { + "nodeId": "219", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "218", + "childIds": ["220", "221", "222"], + "backendDOMNodeId": 219 + }, + { + "nodeId": "220", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "219", + "childIds": ["317"], + "backendDOMNodeId": 220 + }, + { + "nodeId": "221", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "219", + "childIds": ["318"], + "backendDOMNodeId": 221 + }, + { + "nodeId": "222", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "219", + "childIds": ["319"], + "backendDOMNodeId": 222 + }, + { + "nodeId": "224", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "223", + "childIds": ["225", "226"], + "backendDOMNodeId": 224 + }, + { + "nodeId": "225", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "224", + "childIds": ["320"], + "backendDOMNodeId": 225 + }, + { + "nodeId": "226", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "224", + "childIds": ["227", "241", "251"], + "backendDOMNodeId": 226 + }, + { + "nodeId": "227", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "226", + "childIds": ["228", "229"], + "backendDOMNodeId": 227 + }, + { + "nodeId": "228", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "227", + "childIds": ["321"], + "backendDOMNodeId": 228 + }, + { + "nodeId": "229", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "227", + "childIds": ["230", "233", "236", "238", "240"], + "backendDOMNodeId": 229 + }, + { + "nodeId": "241", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "226", + "childIds": ["242", "243"], + "backendDOMNodeId": 241 + }, + { + "nodeId": "251", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method B: Command line" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "226", + "childIds": ["252", "253"], + "backendDOMNodeId": 251 + }, + { + "nodeId": "363", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "260", + "childIds": ["-1000000125"], + "backendDOMNodeId": 363 + }, + { + "nodeId": "364", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + } + } + ] + }, + "properties": [], + "parentId": "263", + "childIds": ["-1000000126"], + "backendDOMNodeId": 364 + }, + { + "nodeId": "265", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "264", + "childIds": ["365"], + "backendDOMNodeId": 265 + }, + { + "nodeId": "-1000000002", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "267", + "childIds": [] + }, + { + "nodeId": "268", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + } + ] + }, + "properties": [], + "parentId": "57", + "childIds": ["-1000000003"], + "backendDOMNodeId": 268 + }, + { + "nodeId": "269", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + } + ] + }, + "properties": [], + "parentId": "58", + "childIds": ["-1000000004"], + "backendDOMNodeId": 269 + }, + { + "nodeId": "-1000000005", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "270", + "childIds": [] + }, + { + "nodeId": "271", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "70", + "childIds": ["-1000000006"], + "backendDOMNodeId": 271 + }, + { + "nodeId": "-1000000007", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "272", + "childIds": [] + }, + { + "nodeId": "273", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode." + } + } + ] + }, + "properties": [], + "parentId": "72", + "childIds": ["-1000000008", "-1000000009"], + "backendDOMNodeId": 273 + }, + { + "nodeId": "274", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "73", + "childIds": ["-1000000010"], + "backendDOMNodeId": 274 + }, + { + "nodeId": "275", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + } + ] + }, + "properties": [], + "parentId": "74", + "childIds": ["-1000000011"], + "backendDOMNodeId": 275 + }, + { + "nodeId": "276", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + } + ] + }, + "properties": [], + "parentId": "82", + "childIds": ["-1000000012"], + "backendDOMNodeId": 276 + }, + { + "nodeId": "84", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["85"], + "backendDOMNodeId": 84 + }, + { + "nodeId": "88", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["89"], + "backendDOMNodeId": 88 + }, + { + "nodeId": "92", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["93"], + "backendDOMNodeId": 92 + }, + { + "nodeId": "96", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["97"], + "backendDOMNodeId": 96 + }, + { + "nodeId": "100", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["101"], + "backendDOMNodeId": 100 + }, + { + "nodeId": "104", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "83", + "childIds": ["105"], + "backendDOMNodeId": 104 + }, + { + "nodeId": "111", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/user-attachments/assets/eeb96be5-8334-4370-bd4a-1564cb12d690" + } + } + ], + "parentId": "110", + "childIds": [], + "backendDOMNodeId": 111 + }, + { + "nodeId": "112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "110", + "childIds": ["289"], + "backendDOMNodeId": 112 + }, + { + "nodeId": "290", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "115", + "childIds": ["-1000000039"], + "backendDOMNodeId": 290 + }, + { + "nodeId": "291", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "116", + "childIds": ["-1000000040"], + "backendDOMNodeId": 291 + }, + { + "nodeId": "292", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "116", + "childIds": ["-1000000041"], + "backendDOMNodeId": 292 + }, + { + "nodeId": "117", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "116", + "childIds": ["293"], + "backendDOMNodeId": 117 + }, + { + "nodeId": "294", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + } + } + ] + }, + "properties": [], + "parentId": "116", + "childIds": ["-1000000043", "-1000000044", "-1000000045"], + "backendDOMNodeId": 294 + }, + { + "nodeId": "4", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Video" + }, + "chromeRole": { + "type": "internalRole", + "value": 182 + }, + "name": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "118", + "childIds": ["119"], + "backendDOMNodeId": 4 + }, + { + "nodeId": "206", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "118", + "childIds": ["295"], + "backendDOMNodeId": 206 + }, + { + "nodeId": "296", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + } + ] + }, + "properties": [], + "parentId": "207", + "childIds": ["-1000000047"], + "backendDOMNodeId": 296 + }, + { + "nodeId": "209", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "208", + "childIds": ["297", "298"], + "backendDOMNodeId": 209 + }, + { + "nodeId": "210", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "208", + "childIds": ["299", "300", "301", "211", "303", "304", "305", "213", "307"], + "backendDOMNodeId": 210 + }, + { + "nodeId": "214", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "208", + "childIds": ["308", "309", "310", "215", "312"], + "backendDOMNodeId": 214 + }, + { + "nodeId": "216", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "208", + "childIds": ["313", "314", "217", "316"], + "backendDOMNodeId": 216 + }, + { + "nodeId": "317", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + } + ] + }, + "properties": [], + "parentId": "220", + "childIds": ["-1000000069"], + "backendDOMNodeId": 317 + }, + { + "nodeId": "318", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + } + } + ] + }, + "properties": [], + "parentId": "221", + "childIds": ["-1000000070"], + "backendDOMNodeId": 318 + }, + { + "nodeId": "319", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "222", + "childIds": ["-1000000071"], + "backendDOMNodeId": 319 + }, + { + "nodeId": "320", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + } + ] + }, + "properties": [], + "parentId": "225", + "childIds": ["-1000000072"], + "backendDOMNodeId": 320 + }, + { + "nodeId": "321", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + } + ] + }, + "properties": [], + "parentId": "228", + "childIds": ["-1000000073"], + "backendDOMNodeId": 321 + }, + { + "nodeId": "230", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "229", + "childIds": ["322", "231", "324", "232", "326", "327"], + "backendDOMNodeId": 230 + }, + { + "nodeId": "233", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "229", + "childIds": ["328", "329", "234", "331", "332", "235"], + "backendDOMNodeId": 233 + }, + { + "nodeId": "236", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "229", + "childIds": ["334", "335", "336", "237", "338", "339"], + "backendDOMNodeId": 236 + }, + { + "nodeId": "238", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "229", + "childIds": ["340", "341", "342", "239"], + "backendDOMNodeId": 238 + }, + { + "nodeId": "240", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "229", + "childIds": ["344", "345"], + "backendDOMNodeId": 240 + }, + { + "nodeId": "242", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "241", + "childIds": ["346"], + "backendDOMNodeId": 242 + }, + { + "nodeId": "243", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "241", + "childIds": ["244", "247", "249"], + "backendDOMNodeId": 243 + }, + { + "nodeId": "252", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "251", + "childIds": ["361"], + "backendDOMNodeId": 252 + }, + { + "nodeId": "253", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "251", + "childIds": ["254"], + "backendDOMNodeId": 253 + }, + { + "nodeId": "-1000000125", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "363", + "childIds": [] + }, + { + "nodeId": "-1000000126", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "364", + "childIds": [] + }, + { + "nodeId": "365", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + } + ] + }, + "properties": [], + "parentId": "265", + "childIds": ["-1000000127"], + "backendDOMNodeId": 365 + }, + { + "nodeId": "-1000000003", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "268", + "childIds": [] + }, + { + "nodeId": "-1000000004", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "269", + "childIds": [] + }, + { + "nodeId": "-1000000006", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "271", + "childIds": [] + }, + { + "nodeId": "-1000000008", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and " + }, + "properties": [], + "parentId": "273", + "childIds": [] + }, + { + "nodeId": "-1000000009", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "liquid volumes in real time — without leaving VSCode." + }, + "properties": [], + "parentId": "273", + "childIds": [] + }, + { + "nodeId": "-1000000010", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "274", + "childIds": [] + }, + { + "nodeId": "-1000000011", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "275", + "childIds": [] + }, + { + "nodeId": "-1000000012", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + }, + "properties": [], + "parentId": "276", + "childIds": [] + }, + { + "nodeId": "85", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "84", + "childIds": ["86", "87"], + "backendDOMNodeId": 85 + }, + { + "nodeId": "89", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "88", + "childIds": ["90", "91"], + "backendDOMNodeId": 89 + }, + { + "nodeId": "93", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "92", + "childIds": ["94", "95"], + "backendDOMNodeId": 93 + }, + { + "nodeId": "97", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "96", + "childIds": ["98", "99"], + "backendDOMNodeId": 97 + }, + { + "nodeId": "101", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "100", + "childIds": ["102", "103"], + "backendDOMNodeId": 101 + }, + { + "nodeId": "105", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "104", + "childIds": ["106", "107"], + "backendDOMNodeId": 105 + }, + { + "nodeId": "289", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer in action" + } + } + ] + }, + "properties": [], + "parentId": "112", + "childIds": ["-1000000038"], + "backendDOMNodeId": 289 + }, + { + "nodeId": "-1000000039", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + }, + "properties": [], + "parentId": "290", + "childIds": [] + }, + { + "nodeId": "-1000000040", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + }, + "properties": [], + "parentId": "291", + "childIds": [] + }, + { + "nodeId": "-1000000041", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "292", + "childIds": [] + }, + { + "nodeId": "293", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "117", + "childIds": ["-1000000042"], + "backendDOMNodeId": 293 + }, + { + "nodeId": "-1000000043", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons " + }, + "properties": [], + "parentId": "294", + "childIds": [] + }, + { + "nodeId": "-1000000044", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback " + }, + "properties": [], + "parentId": "294", + "childIds": [] + }, + { + "nodeId": "-1000000045", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop." + }, + "properties": [], + "parentId": "294", + "childIds": [] + }, + { + "nodeId": "119", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "4", + "childIds": ["120", "129", "131", "161", "162", "163", "164", "165"], + "backendDOMNodeId": 119 + }, + { + "nodeId": "120", + "ignored": false, + "role": { + "type": "role", + "value": "group" + }, + "chromeRole": { + "type": "internalRole", + "value": 93 + }, + "name": { + "type": "computedString", + "value": "buffering", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "buffering" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "buffering" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "live", + "value": { + "type": "token", + "value": "polite" + } + }, + { + "name": "atomic", + "value": { + "type": "boolean", + "value": false + } + }, + { + "name": "relevant", + "value": { + "type": "tokenList", + "value": "additions text" + } + } + ], + "parentId": "119", + "childIds": ["122"], + "backendDOMNodeId": 120 + }, + { + "nodeId": "129", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "119", + "childIds": ["130"], + "backendDOMNodeId": 129 + }, + { + "nodeId": "131", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": ["132"], + "backendDOMNodeId": 131 + }, + { + "nodeId": "132", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "131", + "childIds": ["133", "134", "154"], + "backendDOMNodeId": 132 + }, + { + "nodeId": "133", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "132", + "childIds": [], + "backendDOMNodeId": 133 + }, + { + "nodeId": "134", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "132", + "childIds": ["135", "139", "140", "150", "152"], + "backendDOMNodeId": 134 + }, + { + "nodeId": "154", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "video time scrubber", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "video time scrubber" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "video time scrubber" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "total time: 0:00" + }, + "value": { + "type": "number", + "value": 0 + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "settable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "orientation", + "value": { + "type": "token", + "value": "horizontal" + } + }, + { + "name": "valuemin", + "value": { + "type": "number", + "value": 0 + } + }, + { + "name": "valuemax", + "value": { + "type": "number", + "value": 100 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "elapsed time: 0:00" + } + } + ], + "parentId": "132", + "childIds": [], + "backendDOMNodeId": 154 + }, + { + "nodeId": "161", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": [], + "backendDOMNodeId": 161 + }, + { + "nodeId": "162", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": [], + "backendDOMNodeId": 162 + }, + { + "nodeId": "163", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": [], + "backendDOMNodeId": 163 + }, + { + "nodeId": "164", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": [], + "backendDOMNodeId": 164 + }, + { + "nodeId": "165", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": [ + "166", + "170", + "174", + "178", + "182", + "186", + "190", + "194", + "198", + "202" + ], + "backendDOMNodeId": 165 + }, + { + "nodeId": "166", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 166 + }, + { + "nodeId": "170", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 170 + }, + { + "nodeId": "174", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 174 + }, + { + "nodeId": "178", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 178 + }, + { + "nodeId": "182", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 182 + }, + { + "nodeId": "186", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 186 + }, + { + "nodeId": "190", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 190 + }, + { + "nodeId": "194", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 194 + }, + { + "nodeId": "198", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 198 + }, + { + "nodeId": "202", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "165", + "childIds": [], + "backendDOMNodeId": 202 + }, + { + "nodeId": "295", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + } + } + ] + }, + "properties": [], + "parentId": "206", + "childIds": ["-1000000046"], + "backendDOMNodeId": 295 + }, + { + "nodeId": "-1000000047", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "296", + "childIds": [] + }, + { + "nodeId": "297", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "209", + "childIds": ["-1000000048"], + "backendDOMNodeId": 297 + }, + { + "nodeId": "298", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install VSCode or Cursor" + } + } + ] + }, + "properties": [], + "parentId": "209", + "childIds": ["-1000000049"], + "backendDOMNodeId": 298 + }, + { + "nodeId": "299", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000050"], + "backendDOMNodeId": 299 + }, + { + "nodeId": "300", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the skill:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the skill:" + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000051"], + "backendDOMNodeId": 300 + }, + { + "nodeId": "301", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000052"], + "backendDOMNodeId": 301 + }, + { + "nodeId": "211", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["302"], + "backendDOMNodeId": 211 + }, + { + "nodeId": "303", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000054"], + "backendDOMNodeId": 303 + }, + { + "nodeId": "304", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(see" + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000055"], + "backendDOMNodeId": 304 + }, + { + "nodeId": "305", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000056"], + "backendDOMNodeId": 305 + }, + { + "nodeId": "213", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "210", + "childIds": ["306"], + "backendDOMNodeId": 213 + }, + { + "nodeId": "307", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "210", + "childIds": ["-1000000059"], + "backendDOMNodeId": 307 + }, + { + "nodeId": "308", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "214", + "childIds": ["-1000000060"], + "backendDOMNodeId": 308 + }, + { + "nodeId": "309", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + } + } + ] + }, + "properties": [], + "parentId": "214", + "childIds": ["-1000000061"], + "backendDOMNodeId": 309 + }, + { + "nodeId": "310", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "214", + "childIds": ["-1000000062"], + "backendDOMNodeId": 310 + }, + { + "nodeId": "215", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "214", + "childIds": ["311"], + "backendDOMNodeId": 215 + }, + { + "nodeId": "312", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "214", + "childIds": ["-1000000064"], + "backendDOMNodeId": 312 + }, + { + "nodeId": "313", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "4. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "4. " + } + } + ] + }, + "properties": [], + "parentId": "216", + "childIds": ["-1000000065"], + "backendDOMNodeId": 313 + }, + { + "nodeId": "314", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Use ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Use " + } + } + ] + }, + "properties": [], + "parentId": "216", + "childIds": ["-1000000066"], + "backendDOMNodeId": 314 + }, + { + "nodeId": "217", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "216", + "childIds": ["315"], + "backendDOMNodeId": 217 + }, + { + "nodeId": "316", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + } + } + ] + }, + "properties": [], + "parentId": "216", + "childIds": ["-1000000068"], + "backendDOMNodeId": 316 + }, + { + "nodeId": "-1000000069", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "317", + "childIds": [] + }, + { + "nodeId": "-1000000070", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + }, + "properties": [], + "parentId": "318", + "childIds": [] + }, + { + "nodeId": "-1000000071", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "319", + "childIds": [] + }, + { + "nodeId": "-1000000072", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "320", + "childIds": [] + }, + { + "nodeId": "-1000000073", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "321", + "childIds": [] + }, + { + "nodeId": "322", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["-1000000074"], + "backendDOMNodeId": 322 + }, + { + "nodeId": "231", + "ignored": false, + "role": { + "type": "role", + "value": "strong" + }, + "chromeRole": { + "type": "internalRole", + "value": 160 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["323"], + "backendDOMNodeId": 231 + }, + { + "nodeId": "324", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ", with ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ", with " + } + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["-1000000076"], + "backendDOMNodeId": 324 + }, + { + "nodeId": "232", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["325"], + "backendDOMNodeId": 232 + }, + { + "nodeId": "326", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["-1000000078"], + "backendDOMNodeId": 326 + }, + { + "nodeId": "327", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "available in PATH", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "available in PATH" + } + } + ] + }, + "properties": [], + "parentId": "230", + "childIds": ["-1000000079"], + "backendDOMNodeId": 327 + }, + { + "nodeId": "328", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["-1000000080"], + "backendDOMNodeId": 328 + }, + { + "nodeId": "329", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The " + } + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["-1000000081"], + "backendDOMNodeId": 329 + }, + { + "nodeId": "234", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["330"], + "backendDOMNodeId": 234 + }, + { + "nodeId": "331", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " Python package:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " Python package:" + } + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["-1000000083", "-1000000084"], + "backendDOMNodeId": 331 + }, + { + "nodeId": "332", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["-1000000085"], + "backendDOMNodeId": 332 + }, + { + "nodeId": "235", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "233", + "childIds": ["333"], + "backendDOMNodeId": 235 + }, + { + "nodeId": "334", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["-1000000088"], + "backendDOMNodeId": 334 + }, + { + "nodeId": "335", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "For OT-2 use" + } + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["-1000000089"], + "backendDOMNodeId": 335 + }, + { + "nodeId": "336", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["-1000000090"], + "backendDOMNodeId": 336 + }, + { + "nodeId": "237", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["337"], + "backendDOMNodeId": 237 + }, + { + "nodeId": "338", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["-1000000093"], + "backendDOMNodeId": 338 + }, + { + "nodeId": "339", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)" + } + } + ] + }, + "properties": [], + "parentId": "236", + "childIds": ["-1000000094", "-1000000095"], + "backendDOMNodeId": 339 + }, + { + "nodeId": "340", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "238", + "childIds": ["-1000000096"], + "backendDOMNodeId": 340 + }, + { + "nodeId": "341", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via" + } + } + ] + }, + "properties": [], + "parentId": "238", + "childIds": ["-1000000097", "-1000000098"], + "backendDOMNodeId": 341 + }, + { + "nodeId": "342", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "238", + "childIds": [], + "backendDOMNodeId": 342 + }, + { + "nodeId": "239", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "238", + "childIds": ["343"], + "backendDOMNodeId": 239 + }, + { + "nodeId": "344", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "240", + "childIds": ["-1000000101"], + "backendDOMNodeId": 344 + }, + { + "nodeId": "345", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol." + } + } + ] + }, + "properties": [], + "parentId": "240", + "childIds": ["-1000000102", "-1000000103", "-1000000104", "-1000000105"], + "backendDOMNodeId": 345 + }, + { + "nodeId": "346", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "242", + "childIds": ["-1000000106"], + "backendDOMNodeId": 346 + }, + { + "nodeId": "244", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "243", + "childIds": ["347", "348", "349", "350", "351", "352", "353"], + "backendDOMNodeId": 244 + }, + { + "nodeId": "247", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "243", + "childIds": ["354", "355", "248"], + "backendDOMNodeId": 247 + }, + { + "nodeId": "249", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "243", + "childIds": ["357", "358", "250", "360"], + "backendDOMNodeId": 249 + }, + { + "nodeId": "361", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "252", + "childIds": ["-1000000123"], + "backendDOMNodeId": 361 + }, + { + "nodeId": "254", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "253", + "childIds": ["362"], + "backendDOMNodeId": 254 + }, + { + "nodeId": "-1000000127", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "365", + "childIds": [] + }, + { + "nodeId": "86", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "85", + "childIds": ["277"], + "backendDOMNodeId": 86 + }, + { + "nodeId": "87", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "85", + "childIds": ["278"], + "backendDOMNodeId": 87 + }, + { + "nodeId": "90", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "89", + "childIds": ["279"], + "backendDOMNodeId": 90 + }, + { + "nodeId": "91", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "89", + "childIds": ["280"], + "backendDOMNodeId": 91 + }, + { + "nodeId": "94", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "93", + "childIds": ["281"], + "backendDOMNodeId": 94 + }, + { + "nodeId": "95", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "93", + "childIds": ["282"], + "backendDOMNodeId": 95 + }, + { + "nodeId": "98", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "97", + "childIds": ["283"], + "backendDOMNodeId": 98 + }, + { + "nodeId": "99", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "97", + "childIds": ["284"], + "backendDOMNodeId": 99 + }, + { + "nodeId": "102", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "101", + "childIds": ["285"], + "backendDOMNodeId": 102 + }, + { + "nodeId": "103", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "101", + "childIds": ["286"], + "backendDOMNodeId": 103 + }, + { + "nodeId": "106", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "105", + "childIds": ["287"], + "backendDOMNodeId": 106 + }, + { + "nodeId": "107", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "105", + "childIds": ["288"], + "backendDOMNodeId": 107 + }, + { + "nodeId": "-1000000038", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action" + }, + "properties": [], + "parentId": "289", + "childIds": [] + }, + { + "nodeId": "-1000000042", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "122", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "120", + "childIds": ["123"], + "backendDOMNodeId": 122 + }, + { + "nodeId": "130", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "129", + "childIds": [], + "backendDOMNodeId": 130 + }, + { + "nodeId": "135", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "play", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "play" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "play" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "134", + "childIds": ["136"], + "backendDOMNodeId": 135 + }, + { + "nodeId": "139", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "134", + "childIds": [], + "backendDOMNodeId": 139 + }, + { + "nodeId": "140", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "134", + "childIds": ["141", "142", "149"], + "backendDOMNodeId": 140 + }, + { + "nodeId": "150", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "enter full screen", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "enter full screen" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "enter full screen" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "134", + "childIds": ["151"], + "backendDOMNodeId": 150 + }, + { + "nodeId": "152", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 137 + }, + "name": { + "type": "computedString", + "value": "show more media controls", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "show more media controls" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "show more media controls" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "more options" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "more options" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "more options" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "hasPopup", + "value": { + "type": "token", + "value": "menu" + } + } + ], + "parentId": "134", + "childIds": ["153"], + "backendDOMNodeId": 152 + }, + { + "nodeId": "-1000000046", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + }, + "properties": [], + "parentId": "295", + "childIds": [] + }, + { + "nodeId": "-1000000048", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "297", + "childIds": [] + }, + { + "nodeId": "-1000000049", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "298", + "childIds": [] + }, + { + "nodeId": "-1000000050", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "299", + "childIds": [] + }, + { + "nodeId": "-1000000051", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "300", + "childIds": [] + }, + { + "nodeId": "-1000000052", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "301", + "childIds": [] + }, + { + "nodeId": "302", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "211", + "childIds": ["-1000000053"], + "backendDOMNodeId": 302 + }, + { + "nodeId": "-1000000054", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "303", + "childIds": [] + }, + { + "nodeId": "-1000000055", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "304", + "childIds": [] + }, + { + "nodeId": "-1000000056", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "305", + "childIds": [] + }, + { + "nodeId": "306", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "213", + "childIds": ["-1000000057", "-1000000058"], + "backendDOMNodeId": 306 + }, + { + "nodeId": "-1000000059", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "307", + "childIds": [] + }, + { + "nodeId": "-1000000060", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "308", + "childIds": [] + }, + { + "nodeId": "-1000000061", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + }, + "properties": [], + "parentId": "309", + "childIds": [] + }, + { + "nodeId": "-1000000062", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "310", + "childIds": [] + }, + { + "nodeId": "311", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + } + ] + }, + "properties": [], + "parentId": "215", + "childIds": ["-1000000063"], + "backendDOMNodeId": 311 + }, + { + "nodeId": "-1000000064", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "312", + "childIds": [] + }, + { + "nodeId": "-1000000065", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "313", + "childIds": [] + }, + { + "nodeId": "-1000000066", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "314", + "childIds": [] + }, + { + "nodeId": "315", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "217", + "childIds": ["-1000000067"], + "backendDOMNodeId": 315 + }, + { + "nodeId": "-1000000068", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + }, + "properties": [], + "parentId": "316", + "childIds": [] + }, + { + "nodeId": "-1000000074", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "322", + "childIds": [] + }, + { + "nodeId": "323", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python 3.8 or later" + } + } + ] + }, + "properties": [], + "parentId": "231", + "childIds": ["-1000000075"], + "backendDOMNodeId": 323 + }, + { + "nodeId": "-1000000076", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", with " + }, + "properties": [], + "parentId": "324", + "childIds": [] + }, + { + "nodeId": "325", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "python3", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "python3" + } + } + ] + }, + "properties": [], + "parentId": "232", + "childIds": ["-1000000077"], + "backendDOMNodeId": 325 + }, + { + "nodeId": "-1000000078", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "326", + "childIds": [] + }, + { + "nodeId": "-1000000079", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "327", + "childIds": [] + }, + { + "nodeId": "-1000000080", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "328", + "childIds": [] + }, + { + "nodeId": "-1000000081", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "329", + "childIds": [] + }, + { + "nodeId": "330", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "opentrons" + } + } + ] + }, + "properties": [], + "parentId": "234", + "childIds": ["-1000000082"], + "backendDOMNodeId": 330 + }, + { + "nodeId": "-1000000083", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " Python " + }, + "properties": [], + "parentId": "331", + "childIds": [] + }, + { + "nodeId": "-1000000084", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "package:" + }, + "properties": [], + "parentId": "331", + "childIds": [] + }, + { + "nodeId": "-1000000085", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "333", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons" + } + } + ] + }, + "properties": [], + "parentId": "235", + "childIds": ["-1000000086", "-1000000087"], + "backendDOMNodeId": 333 + }, + { + "nodeId": "-1000000088", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "334", + "childIds": [] + }, + { + "nodeId": "-1000000089", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "335", + "childIds": [] + }, + { + "nodeId": "-1000000090", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "337", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons==9.0.0", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons==9.0.0" + } + } + ] + }, + "properties": [], + "parentId": "237", + "childIds": ["-1000000091", "-1000000092"], + "backendDOMNodeId": 337 + }, + { + "nodeId": "-1000000093", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000094", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons " + }, + "properties": [], + "parentId": "339", + "childIds": [] + }, + { + "nodeId": "-1000000095", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "9.1.0+ dropped OT-2 support)" + }, + "properties": [], + "parentId": "339", + "childIds": [] + }, + { + "nodeId": "-1000000096", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000097", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python " + }, + "properties": [], + "parentId": "341", + "childIds": [] + }, + { + "nodeId": "-1000000098", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "interpreter in VSCode via" + }, + "properties": [], + "parentId": "341", + "childIds": [] + }, + { + "nodeId": "343", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python: Select Interpreter", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python: Select Interpreter" + } + } + ] + }, + "properties": [], + "parentId": "239", + "childIds": ["-1000000099", "-1000000100"], + "backendDOMNodeId": 343 + }, + { + "nodeId": "-1000000101", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000102", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000103", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them in a separate virtual " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000104", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and switch " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000105", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "per protocol." + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000106", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "properties": [], + "parentId": "346", + "childIds": [] + }, + { + "nodeId": "347", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000107"], + "backendDOMNodeId": 347 + }, + { + "nodeId": "348", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette (", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Open the Command Palette (" + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000108", "-1000000109"], + "backendDOMNodeId": 348 + }, + { + "nodeId": "349", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Cmd+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000110"], + "backendDOMNodeId": 349 + }, + { + "nodeId": "350", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " /", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " /" + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000111"], + "backendDOMNodeId": 350 + }, + { + "nodeId": "351", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000112"], + "backendDOMNodeId": 351 + }, + { + "nodeId": "352", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Ctrl+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000113"], + "backendDOMNodeId": 352 + }, + { + "nodeId": "353", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "244", + "childIds": ["-1000000114"], + "backendDOMNodeId": 353 + }, + { + "nodeId": "354", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "247", + "childIds": ["-1000000115"], + "backendDOMNodeId": 354 + }, + { + "nodeId": "355", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select " + } + } + ] + }, + "properties": [], + "parentId": "247", + "childIds": ["-1000000116"], + "backendDOMNodeId": 355 + }, + { + "nodeId": "248", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "247", + "childIds": ["356"], + "backendDOMNodeId": 248 + }, + { + "nodeId": "357", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "249", + "childIds": ["-1000000119"], + "backendDOMNodeId": 357 + }, + { + "nodeId": "358", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Choose the downloaded " + } + } + ] + }, + "properties": [], + "parentId": "249", + "childIds": ["-1000000120"], + "backendDOMNodeId": 358 + }, + { + "nodeId": "250", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "249", + "childIds": ["359"], + "backendDOMNodeId": 250 + }, + { + "nodeId": "360", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " file", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " file" + } + } + ] + }, + "properties": [], + "parentId": "249", + "childIds": ["-1000000122"], + "backendDOMNodeId": 360 + }, + { + "nodeId": "-1000000123", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "361", + "childIds": [] + }, + { + "nodeId": "362", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + } + } + ] + }, + "properties": [], + "parentId": "254", + "childIds": ["-1000000124"], + "backendDOMNodeId": 362 + }, + { + "nodeId": "277", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + } + ] + }, + "properties": [], + "parentId": "86", + "childIds": ["-1000000013"], + "backendDOMNodeId": 277 + }, + { + "nodeId": "278", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs." + } + } + ] + }, + "properties": [], + "parentId": "87", + "childIds": ["-1000000014", "-1000000015", "-1000000016"], + "backendDOMNodeId": 278 + }, + { + "nodeId": "279", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + } + ] + }, + "properties": [], + "parentId": "90", + "childIds": ["-1000000017"], + "backendDOMNodeId": 279 + }, + { + "nodeId": "280", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file." + } + } + ] + }, + "properties": [], + "parentId": "91", + "childIds": ["-1000000018", "-1000000019", "-1000000020"], + "backendDOMNodeId": 280 + }, + { + "nodeId": "281", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + } + ] + }, + "properties": [], + "parentId": "94", + "childIds": ["-1000000021"], + "backendDOMNodeId": 281 + }, + { + "nodeId": "282", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "95", + "childIds": ["-1000000022", "-1000000023", "-1000000024", "-1000000025"], + "backendDOMNodeId": 282 + }, + { + "nodeId": "283", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + } + ] + }, + "properties": [], + "parentId": "98", + "childIds": ["-1000000026"], + "backendDOMNodeId": 283 + }, + { + "nodeId": "284", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "99", + "childIds": ["-1000000027", "-1000000028", "-1000000029"], + "backendDOMNodeId": 284 + }, + { + "nodeId": "285", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + } + ] + }, + "properties": [], + "parentId": "102", + "childIds": ["-1000000030"], + "backendDOMNodeId": 285 + }, + { + "nodeId": "286", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support." + } + } + ] + }, + "properties": [], + "parentId": "103", + "childIds": ["-1000000031", "-1000000032", "-1000000033"], + "backendDOMNodeId": 286 + }, + { + "nodeId": "287", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + } + ] + }, + "properties": [], + "parentId": "106", + "childIds": ["-1000000034"], + "backendDOMNodeId": 287 + }, + { + "nodeId": "288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly." + } + } + ] + }, + "properties": [], + "parentId": "107", + "childIds": ["-1000000035", "-1000000036", "-1000000037"], + "backendDOMNodeId": 288 + }, + { + "nodeId": "123", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "122", + "childIds": ["124"], + "backendDOMNodeId": 123 + }, + { + "nodeId": "124", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "123", + "childIds": ["125", "127"], + "backendDOMNodeId": 124 + }, + { + "nodeId": "136", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "135", + "childIds": [], + "backendDOMNodeId": 136 + }, + { + "nodeId": "141", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "140", + "childIds": [], + "backendDOMNodeId": 141 + }, + { + "nodeId": "142", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "140", + "childIds": [], + "backendDOMNodeId": 142 + }, + { + "nodeId": "149", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "mute", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "mute" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "mute" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "140", + "childIds": [], + "backendDOMNodeId": 149 + }, + { + "nodeId": "151", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "150", + "childIds": [], + "backendDOMNodeId": 151 + }, + { + "nodeId": "153", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "152", + "childIds": [], + "backendDOMNodeId": 153 + }, + { + "nodeId": "-1000000053", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "302", + "childIds": [] + }, + { + "nodeId": "-1000000057", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-" + }, + "properties": [], + "parentId": "306", + "childIds": [] + }, + { + "nodeId": "-1000000058", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop" + }, + "properties": [], + "parentId": "306", + "childIds": [] + }, + { + "nodeId": "-1000000063", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "311", + "childIds": [] + }, + { + "nodeId": "-1000000067", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "315", + "childIds": [] + }, + { + "nodeId": "-1000000075", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "-1000000077", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "325", + "childIds": [] + }, + { + "nodeId": "-1000000082", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "330", + "childIds": [] + }, + { + "nodeId": "-1000000086", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "333", + "childIds": [] + }, + { + "nodeId": "-1000000087", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "333", + "childIds": [] + }, + { + "nodeId": "-1000000091", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "337", + "childIds": [] + }, + { + "nodeId": "-1000000092", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "337", + "childIds": [] + }, + { + "nodeId": "-1000000099", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: Select " + }, + "properties": [], + "parentId": "343", + "childIds": [] + }, + { + "nodeId": "-1000000100", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "343", + "childIds": [] + }, + { + "nodeId": "-1000000107", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000108", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette " + }, + "properties": [], + "parentId": "348", + "childIds": [] + }, + { + "nodeId": "-1000000109", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(" + }, + "properties": [], + "parentId": "348", + "childIds": [] + }, + { + "nodeId": "-1000000110", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "349", + "childIds": [] + }, + { + "nodeId": "-1000000111", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " /" + }, + "properties": [], + "parentId": "350", + "childIds": [] + }, + { + "nodeId": "-1000000112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "351", + "childIds": [] + }, + { + "nodeId": "-1000000113", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "352", + "childIds": [] + }, + { + "nodeId": "-1000000114", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "353", + "childIds": [] + }, + { + "nodeId": "-1000000115", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "354", + "childIds": [] + }, + { + "nodeId": "-1000000116", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "356", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install from VSIX...", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Extensions: Install from VSIX..." + } + } + ] + }, + "properties": [], + "parentId": "248", + "childIds": ["-1000000117", "-1000000118"], + "backendDOMNodeId": 356 + }, + { + "nodeId": "-1000000119", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "-1000000120", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded " + }, + "properties": [], + "parentId": "358", + "childIds": [] + }, + { + "nodeId": "359", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ".vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ".vsix" + } + } + ] + }, + "properties": [], + "parentId": "250", + "childIds": ["-1000000121"], + "backendDOMNodeId": 359 + }, + { + "nodeId": "-1000000122", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "file" + }, + "properties": [], + "parentId": "360", + "childIds": [] + }, + { + "nodeId": "-1000000124", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + }, + "properties": [], + "parentId": "362", + "childIds": [] + }, + { + "nodeId": "-1000000013", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization" + }, + "properties": [], + "parentId": "277", + "childIds": [] + }, + { + "nodeId": "-1000000014", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes " + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000015", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "render in real time through an interactive " + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000016", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "panel while your protocol runs." + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000017", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save" + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000018", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns " + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000019", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "whenever you save changes (Ctrl+S / " + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000020", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+S) to your protocol file." + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000021", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000022", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons " + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000023", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters; hit Analyze to apply " + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000024", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them — your original code is never " + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000025", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "modified." + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000026", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "283", + "childIds": [] + }, + { + "nodeId": "-1000000027", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) " + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000028", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "in the same directory as your protocol file " + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000029", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and they just work." + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000030", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window" + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000031", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or " + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000032", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "drag the tab to another monitor via " + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000033", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000034", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper" + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000035", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps " + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "-1000000036", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and hit Enter to jump the visualization state " + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "-1000000037", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "instantly." + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "125", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "124", + "childIds": ["126"], + "backendDOMNodeId": 125 + }, + { + "nodeId": "127", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "124", + "childIds": ["128"], + "backendDOMNodeId": 127 + }, + { + "nodeId": "-1000000117", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install " + }, + "properties": [], + "parentId": "356", + "childIds": [] + }, + { + "nodeId": "-1000000118", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "from VSIX..." + }, + "properties": [], + "parentId": "356", + "childIds": [] + }, + { + "nodeId": "-1000000121", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "359", + "childIds": [] + }, + { + "nodeId": "126", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "125", + "childIds": [], + "backendDOMNodeId": 126 + }, + { + "nodeId": "128", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "127", + "childIds": [], + "backendDOMNodeId": 128 + } +] diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/dom.html b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/dom.html new file mode 100644 index 0000000..ad39db5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/dom.html @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + Protocol Visualizer — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Visualizer

+ Preview +
+

+ Simulate your Opentrons Python protocols and inspect deck + layout and liquid volumes in real time — without leaving + VSCode. +

+ +
+ +
+
+
+
+

+ Everything you need to see your protocol run +

+
    +
  • +
    +

    + Real-time Deck Visualization +

    +

    + Deck state and liquid volume changes render in real time + through an interactive panel while your protocol runs. +

    +
    +
  • +
  • +
    +

    Auto-analysis on Save

    +

    + The simulation automatically reruns whenever you save + changes (Ctrl+S / Cmd+S) to your protocol file. +

    +
    +
  • +
  • +
    +

    Runtime Parameters UI

    +

    + Input fields are generated for Opentrons Runtime + Parameters; hit Analyze to apply them — your original code + is never modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place custom labware definition files (.json) in the same + directory as your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out Window

    +

    + Pop the panel out to its own window or drag the tab to + another monitor via VSCode's Auxiliary Window support. +

    +
    +
  • +
  • +
    +

    Step Jumper

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly. +

    +
    +
  • +
+
+
+
+
+
+ Protocol Visualizer visualizing an Opentrons protocol on a simulated deck +
+ Protocol Visualizer in action +
+
+
+
+
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with + protocol-fix-loop. Generate Opentrons protocols with GitHub Copilot or Cursor, + then simulate and fix them in a visual feedback loop. +

+
+ +
+ Generate a protocol from a prompt, then fix it while watching + the simulation +
+
+

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill: + npx skills add koji/protocol-fix-loop + (see + koji/protocol-fix-loop) +
  4. +
  5. + Install the Protocol Visualizer extension (see + Installation guide) +
  6. +
  7. + Use + /protocol-fix-loop + in chat and add your prompt to generate a protocol +
  8. +
+
+
+
+
+

Want to try the extension?

+

+ Request access via our form — requests are handled individually. +

+ Request access +
+
+
+
+

Installation

+
+
+

Prerequisites

+
    +
  • + Python 3.8 or later, with + python3 available in PATH +
  • +
  • + The opentrons Python package: + pip install opentrons +
  • +
  • + For OT-2 use + pip install opentrons==9.0.0 + (opentrons 9.1.0+ dropped OT-2 support) +
  • +
  • + Select the matching Python interpreter in VSCode via + Python: Select Interpreter +
  • +
  • + Using both Flex and OT-2? Keep them in a separate virtual + environment each and switch per protocol. +
  • +
+
+
+

+ Method A: Command Palette +

+
    +
  1. + Open the Command Palette (Cmd+Shift+P / + Ctrl+Shift+P) +
  2. +
  3. + Select Extensions: Install from VSIX... +
  4. +
  5. Choose the downloaded .vsix file
  6. +
+
+
+

Method B: Command line

+
code --install-extension protocol-visualizer.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/result.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/result.json new file mode 100644 index 0000000..2c7f913 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/result.json @@ -0,0 +1,41 @@ +{ + "feature": "hero", + "url": "http://127.0.0.1:5181/", + "passed": 4, + "total": 4, + "ok": true, + "checks": [ + { + "id": "hero-headline", + "pass": true, + "value": "Protocol Visualizer", + "error": null + }, + { + "id": "hero-tagline", + "pass": true, + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "error": null + }, + { + "id": "hero-request-access-links", + "pass": true, + "value": { + "count": 3, + "hrefs": [ + "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor", + "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor", + "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + ] + }, + "error": null + }, + { + "id": "hero-install-link", + "pass": true, + "value": ["Install", "Installation guide ↓", "Installation guide"], + "error": null + } + ], + "finishedAt": "2026-09-16T07:56:10.567Z" +} diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/screenshot.png b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/screenshot.png new file mode 100644 index 0000000..a03ce4f Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/axtree.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/axtree.json new file mode 100644 index 0000000..35a4497 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/axtree.json @@ -0,0 +1,11379 @@ +[ + { + "nodeId": "1577", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "aria-label", + "superseded": true + }, + { + "type": "relatedElement", + "value": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode" + }, + "nativeSource": "title" + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "childIds": ["1682"], + "backendDOMNodeId": 1577, + "frameId": "8AE6312B5CF350076BE20E6D026DCC9C" + }, + { + "nodeId": "1682", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1577", + "childIds": ["1707"], + "backendDOMNodeId": 1682 + }, + { + "nodeId": "1707", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1682", + "childIds": ["1708"], + "backendDOMNodeId": 1707 + }, + { + "nodeId": "1708", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1707", + "childIds": ["1709"], + "backendDOMNodeId": 1708 + }, + { + "nodeId": "1709", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1708", + "childIds": ["1710", "1728", "1913", "1919"], + "backendDOMNodeId": 1709 + }, + { + "nodeId": "1710", + "ignored": false, + "role": { + "type": "role", + "value": "banner" + }, + "chromeRole": { + "type": "internalRole", + "value": 94 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1709", + "childIds": ["1711"], + "backendDOMNodeId": 1710 + }, + { + "nodeId": "1728", + "ignored": false, + "role": { + "type": "role", + "value": "main" + }, + "chromeRole": { + "type": "internalRole", + "value": 118 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1709", + "childIds": ["1729", "1745", "1773", "1778", "1876", "1881"], + "backendDOMNodeId": 1728 + }, + { + "nodeId": "1913", + "ignored": false, + "role": { + "type": "role", + "value": "complementary" + }, + "chromeRole": { + "type": "internalRole", + "value": 22 + }, + "name": { + "type": "computedString", + "value": "Disclaimer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Disclaimer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Disclaimer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1709", + "childIds": ["1914"], + "backendDOMNodeId": 1913 + }, + { + "nodeId": "1919", + "ignored": false, + "role": { + "type": "role", + "value": "contentinfo" + }, + "chromeRole": { + "type": "internalRole", + "value": 85 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1709", + "childIds": ["1920"], + "backendDOMNodeId": 1919 + }, + { + "nodeId": "1711", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1710", + "childIds": ["1712", "1719", "1722"], + "backendDOMNodeId": 1711 + }, + { + "nodeId": "1712", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#top" + } + } + ], + "parentId": "1711", + "childIds": ["1718"], + "backendDOMNodeId": 1712 + }, + { + "nodeId": "1719", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "Section navigation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Section navigation" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Section navigation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1711", + "childIds": ["1720", "1721"], + "backendDOMNodeId": 1719 + }, + { + "nodeId": "1722", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1711", + "childIds": ["1723", "1724"], + "backendDOMNodeId": 1722 + }, + { + "nodeId": "1723", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1722", + "childIds": ["1588"], + "backendDOMNodeId": 1723 + }, + { + "nodeId": "1724", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "Switch to light theme", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "Switch to light theme" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1722", + "childIds": [], + "backendDOMNodeId": 1724 + }, + { + "nodeId": "1729", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 211 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1730"], + "backendDOMNodeId": 1729 + }, + { + "nodeId": "1745", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Features" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1746"], + "backendDOMNodeId": 1745 + }, + { + "nodeId": "1773", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Screenshot", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Screenshot" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Screenshot" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1774"], + "backendDOMNodeId": 1773 + }, + { + "nodeId": "1778", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Generate protocols with AI" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Generate protocols with AI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1779"], + "backendDOMNodeId": 1778 + }, + { + "nodeId": "1876", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Request access" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1877"], + "backendDOMNodeId": 1876 + }, + { + "nodeId": "1881", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Installation guide" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1728", + "childIds": ["1882"], + "backendDOMNodeId": 1881 + }, + { + "nodeId": "1914", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1913", + "childIds": ["1918"], + "backendDOMNodeId": 1914 + }, + { + "nodeId": "1918", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1914", + "childIds": ["1679"], + "backendDOMNodeId": 1918 + }, + { + "nodeId": "1920", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1919", + "childIds": ["1921", "1922"], + "backendDOMNodeId": 1920 + }, + { + "nodeId": "1921", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1920", + "childIds": ["1680"], + "backendDOMNodeId": 1921 + }, + { + "nodeId": "1922", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "External links", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "External links" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "External links" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1920", + "childIds": ["1923"], + "backendDOMNodeId": 1922 + }, + { + "nodeId": "1718", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1712", + "childIds": ["1585"], + "backendDOMNodeId": 1718 + }, + { + "nodeId": "1585", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1718", + "childIds": ["-1000001140"], + "backendDOMNodeId": 1585 + }, + { + "nodeId": "1720", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#features" + } + } + ], + "parentId": "1719", + "childIds": ["1586"], + "backendDOMNodeId": 1720 + }, + { + "nodeId": "1721", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1719", + "childIds": ["1587"], + "backendDOMNodeId": 1721 + }, + { + "nodeId": "1588", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1723", + "childIds": ["-1000001143"], + "backendDOMNodeId": 1588 + }, + { + "nodeId": "1730", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1729", + "childIds": ["1731"], + "backendDOMNodeId": 1730 + }, + { + "nodeId": "1731", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1730", + "childIds": ["1732", "1735", "1736"], + "backendDOMNodeId": 1731 + }, + { + "nodeId": "1732", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1731", + "childIds": ["1733", "1734"], + "backendDOMNodeId": 1732 + }, + { + "nodeId": "1733", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1732", + "childIds": ["1589"], + "backendDOMNodeId": 1733 + }, + { + "nodeId": "1734", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1732", + "childIds": ["1584"], + "backendDOMNodeId": 1734 + }, + { + "nodeId": "1584", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "PREVIEW", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "PREVIEW" + } + } + ] + }, + "properties": [], + "parentId": "1734", + "childIds": ["-1000001145"], + "backendDOMNodeId": 1584 + }, + { + "nodeId": "1735", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1731", + "childIds": ["1590"], + "backendDOMNodeId": 1735 + }, + { + "nodeId": "1736", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1731", + "childIds": ["1737", "1738"], + "backendDOMNodeId": 1736 + }, + { + "nodeId": "1737", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1736", + "childIds": ["1591"], + "backendDOMNodeId": 1737 + }, + { + "nodeId": "1738", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1736", + "childIds": ["1592"], + "backendDOMNodeId": 1738 + }, + { + "nodeId": "1746", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1745", + "childIds": ["1747", "1748"], + "backendDOMNodeId": 1746 + }, + { + "nodeId": "1747", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1746", + "childIds": ["1593"], + "backendDOMNodeId": 1747 + }, + { + "nodeId": "1748", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1746", + "childIds": ["1749", "1753", "1757", "1761", "1765", "1769"], + "backendDOMNodeId": 1748 + }, + { + "nodeId": "1774", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1773", + "childIds": ["1775"], + "backendDOMNodeId": 1774 + }, + { + "nodeId": "1775", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1774", + "childIds": ["1776", "1777"], + "backendDOMNodeId": 1775 + }, + { + "nodeId": "1779", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1778", + "childIds": ["1780", "1781", "1783", "1865", "1866"], + "backendDOMNodeId": 1779 + }, + { + "nodeId": "1780", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1779", + "childIds": ["1607"], + "backendDOMNodeId": 1780 + }, + { + "nodeId": "1781", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1779", + "childIds": ["1608", "1609", "1782", "1611"], + "backendDOMNodeId": 1781 + }, + { + "nodeId": "1783", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1779", + "childIds": ["1784", "1864"], + "backendDOMNodeId": 1783 + }, + { + "nodeId": "1865", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1779", + "childIds": ["1613"], + "backendDOMNodeId": 1865 + }, + { + "nodeId": "1866", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1779", + "childIds": ["1867", "1868", "1872", "1874"], + "backendDOMNodeId": 1866 + }, + { + "nodeId": "1877", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1876", + "childIds": ["1878", "1879", "1880"], + "backendDOMNodeId": 1877 + }, + { + "nodeId": "1878", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1877", + "childIds": ["1634"], + "backendDOMNodeId": 1878 + }, + { + "nodeId": "1879", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1877", + "childIds": ["1635"], + "backendDOMNodeId": 1879 + }, + { + "nodeId": "1880", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1877", + "childIds": ["1636"], + "backendDOMNodeId": 1880 + }, + { + "nodeId": "1882", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1881", + "childIds": ["1883", "1884"], + "backendDOMNodeId": 1882 + }, + { + "nodeId": "1883", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1882", + "childIds": ["1637"], + "backendDOMNodeId": 1883 + }, + { + "nodeId": "1884", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1882", + "childIds": ["1885", "1899", "1909"], + "backendDOMNodeId": 1884 + }, + { + "nodeId": "1885", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1884", + "childIds": ["1886", "1887"], + "backendDOMNodeId": 1885 + }, + { + "nodeId": "1886", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1885", + "childIds": ["1646"], + "backendDOMNodeId": 1886 + }, + { + "nodeId": "1887", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1885", + "childIds": ["1888", "1891", "1894", "1896", "1898"], + "backendDOMNodeId": 1887 + }, + { + "nodeId": "1899", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1884", + "childIds": ["1900", "1901"], + "backendDOMNodeId": 1899 + }, + { + "nodeId": "1909", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method B: Command line" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1884", + "childIds": ["1910", "1911"], + "backendDOMNodeId": 1909 + }, + { + "nodeId": "1679", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "1918", + "childIds": ["-1000001251"], + "backendDOMNodeId": 1679 + }, + { + "nodeId": "1680", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + } + } + ] + }, + "properties": [], + "parentId": "1921", + "childIds": ["-1000001252"], + "backendDOMNodeId": 1680 + }, + { + "nodeId": "1923", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1922", + "childIds": ["1681"], + "backendDOMNodeId": 1923 + }, + { + "nodeId": "-1000001140", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "1585", + "childIds": [] + }, + { + "nodeId": "1586", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + } + ] + }, + "properties": [], + "parentId": "1720", + "childIds": ["-1000001141"], + "backendDOMNodeId": 1586 + }, + { + "nodeId": "1587", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + } + ] + }, + "properties": [], + "parentId": "1721", + "childIds": ["-1000001142"], + "backendDOMNodeId": 1587 + }, + { + "nodeId": "-1000001143", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1588", + "childIds": [] + }, + { + "nodeId": "1589", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1733", + "childIds": ["-1000001144"], + "backendDOMNodeId": 1589 + }, + { + "nodeId": "-1000001145", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "1584", + "childIds": [] + }, + { + "nodeId": "1590", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode." + } + } + ] + }, + "properties": [], + "parentId": "1735", + "childIds": ["-1000001146", "-1000001147"], + "backendDOMNodeId": 1590 + }, + { + "nodeId": "1591", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1737", + "childIds": ["-1000001148"], + "backendDOMNodeId": 1591 + }, + { + "nodeId": "1592", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + } + ] + }, + "properties": [], + "parentId": "1738", + "childIds": ["-1000001149"], + "backendDOMNodeId": 1592 + }, + { + "nodeId": "1593", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + } + ] + }, + "properties": [], + "parentId": "1747", + "childIds": ["-1000001150"], + "backendDOMNodeId": 1593 + }, + { + "nodeId": "1749", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1750"], + "backendDOMNodeId": 1749 + }, + { + "nodeId": "1753", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1754"], + "backendDOMNodeId": 1753 + }, + { + "nodeId": "1757", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1758"], + "backendDOMNodeId": 1757 + }, + { + "nodeId": "1761", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1762"], + "backendDOMNodeId": 1761 + }, + { + "nodeId": "1765", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1766"], + "backendDOMNodeId": 1765 + }, + { + "nodeId": "1769", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1748", + "childIds": ["1770"], + "backendDOMNodeId": 1769 + }, + { + "nodeId": "1776", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/user-attachments/assets/eeb96be5-8334-4370-bd4a-1564cb12d690" + } + } + ], + "parentId": "1775", + "childIds": [], + "backendDOMNodeId": 1776 + }, + { + "nodeId": "1777", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1775", + "childIds": ["1606"], + "backendDOMNodeId": 1777 + }, + { + "nodeId": "1607", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1780", + "childIds": ["-1000001177"], + "backendDOMNodeId": 1607 + }, + { + "nodeId": "1608", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "1781", + "childIds": ["-1000001178"], + "backendDOMNodeId": 1608 + }, + { + "nodeId": "1609", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1781", + "childIds": ["-1000001179"], + "backendDOMNodeId": 1609 + }, + { + "nodeId": "1782", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "1781", + "childIds": ["1610"], + "backendDOMNodeId": 1782 + }, + { + "nodeId": "1611", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + } + } + ] + }, + "properties": [], + "parentId": "1781", + "childIds": ["-1000001181", "-1000001182", "-1000001183"], + "backendDOMNodeId": 1611 + }, + { + "nodeId": "1784", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Video" + }, + "chromeRole": { + "type": "internalRole", + "value": 182 + }, + "name": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1783", + "childIds": ["1785"], + "backendDOMNodeId": 1784 + }, + { + "nodeId": "1864", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1783", + "childIds": ["1612"], + "backendDOMNodeId": 1864 + }, + { + "nodeId": "1613", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + } + ] + }, + "properties": [], + "parentId": "1865", + "childIds": ["-1000001185"], + "backendDOMNodeId": 1613 + }, + { + "nodeId": "1867", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1866", + "childIds": ["1614", "1615"], + "backendDOMNodeId": 1867 + }, + { + "nodeId": "1868", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1866", + "childIds": [ + "1616", + "1617", + "1618", + "1869", + "1620", + "1621", + "1622", + "1871", + "1624" + ], + "backendDOMNodeId": 1868 + }, + { + "nodeId": "1872", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1866", + "childIds": ["1625", "1626", "1627", "1873", "1629"], + "backendDOMNodeId": 1872 + }, + { + "nodeId": "1874", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1866", + "childIds": ["1630", "1631", "1875", "1633"], + "backendDOMNodeId": 1874 + }, + { + "nodeId": "1634", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + } + ] + }, + "properties": [], + "parentId": "1878", + "childIds": ["-1000001203"], + "backendDOMNodeId": 1634 + }, + { + "nodeId": "1635", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + } + } + ] + }, + "properties": [], + "parentId": "1879", + "childIds": ["-1000001204"], + "backendDOMNodeId": 1635 + }, + { + "nodeId": "1636", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1880", + "childIds": ["-1000001205"], + "backendDOMNodeId": 1636 + }, + { + "nodeId": "1637", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + } + ] + }, + "properties": [], + "parentId": "1883", + "childIds": ["-1000001206"], + "backendDOMNodeId": 1637 + }, + { + "nodeId": "1646", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + } + ] + }, + "properties": [], + "parentId": "1886", + "childIds": ["-1000001207"], + "backendDOMNodeId": 1646 + }, + { + "nodeId": "1888", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1887", + "childIds": ["1638", "1889", "1648", "1890", "1650", "1651"], + "backendDOMNodeId": 1888 + }, + { + "nodeId": "1891", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1887", + "childIds": ["1639", "1652", "1892", "1654", "1655", "1893"], + "backendDOMNodeId": 1891 + }, + { + "nodeId": "1894", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1887", + "childIds": ["1640", "1657", "1658", "1895", "1660", "1661"], + "backendDOMNodeId": 1894 + }, + { + "nodeId": "1896", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1887", + "childIds": ["1641", "1662", "1925", "1897"], + "backendDOMNodeId": 1896 + }, + { + "nodeId": "1898", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1887", + "childIds": ["1642", "1664"], + "backendDOMNodeId": 1898 + }, + { + "nodeId": "1900", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1899", + "childIds": ["1665"], + "backendDOMNodeId": 1900 + }, + { + "nodeId": "1901", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1899", + "childIds": ["1902", "1905", "1907"], + "backendDOMNodeId": 1901 + }, + { + "nodeId": "1910", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1909", + "childIds": ["1677"], + "backendDOMNodeId": 1910 + }, + { + "nodeId": "1911", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1909", + "childIds": ["1912"], + "backendDOMNodeId": 1911 + }, + { + "nodeId": "-1000001251", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "1679", + "childIds": [] + }, + { + "nodeId": "-1000001252", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "1680", + "childIds": [] + }, + { + "nodeId": "1681", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + } + ] + }, + "properties": [], + "parentId": "1923", + "childIds": ["-1000001253"], + "backendDOMNodeId": 1681 + }, + { + "nodeId": "-1000001141", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "1586", + "childIds": [] + }, + { + "nodeId": "-1000001142", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "1587", + "childIds": [] + }, + { + "nodeId": "-1000001144", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "1589", + "childIds": [] + }, + { + "nodeId": "-1000001146", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and " + }, + "properties": [], + "parentId": "1590", + "childIds": [] + }, + { + "nodeId": "-1000001147", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "liquid volumes in real time — without leaving VSCode." + }, + "properties": [], + "parentId": "1590", + "childIds": [] + }, + { + "nodeId": "-1000001148", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1591", + "childIds": [] + }, + { + "nodeId": "-1000001149", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "1592", + "childIds": [] + }, + { + "nodeId": "-1000001150", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + }, + "properties": [], + "parentId": "1593", + "childIds": [] + }, + { + "nodeId": "1750", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1749", + "childIds": ["1751", "1752"], + "backendDOMNodeId": 1750 + }, + { + "nodeId": "1754", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1753", + "childIds": ["1755", "1756"], + "backendDOMNodeId": 1754 + }, + { + "nodeId": "1758", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1757", + "childIds": ["1759", "1760"], + "backendDOMNodeId": 1758 + }, + { + "nodeId": "1762", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1761", + "childIds": ["1763", "1764"], + "backendDOMNodeId": 1762 + }, + { + "nodeId": "1766", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1765", + "childIds": ["1767", "1768"], + "backendDOMNodeId": 1766 + }, + { + "nodeId": "1770", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1769", + "childIds": ["1771", "1772"], + "backendDOMNodeId": 1770 + }, + { + "nodeId": "1606", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer in action" + } + } + ] + }, + "properties": [], + "parentId": "1777", + "childIds": ["-1000001176"], + "backendDOMNodeId": 1606 + }, + { + "nodeId": "-1000001177", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + }, + "properties": [], + "parentId": "1607", + "childIds": [] + }, + { + "nodeId": "-1000001178", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + }, + "properties": [], + "parentId": "1608", + "childIds": [] + }, + { + "nodeId": "-1000001179", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1609", + "childIds": [] + }, + { + "nodeId": "1610", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1782", + "childIds": ["-1000001180"], + "backendDOMNodeId": 1610 + }, + { + "nodeId": "-1000001181", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons " + }, + "properties": [], + "parentId": "1611", + "childIds": [] + }, + { + "nodeId": "-1000001182", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback " + }, + "properties": [], + "parentId": "1611", + "childIds": [] + }, + { + "nodeId": "-1000001183", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop." + }, + "properties": [], + "parentId": "1611", + "childIds": [] + }, + { + "nodeId": "1785", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1784", + "childIds": [ + "1786", + "1787", + "1789", + "1819", + "1820", + "1821", + "1822", + "1823" + ], + "backendDOMNodeId": 1785 + }, + { + "nodeId": "1786", + "ignored": false, + "role": { + "type": "role", + "value": "group" + }, + "chromeRole": { + "type": "internalRole", + "value": 93 + }, + "name": { + "type": "computedString", + "value": "buffering", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "buffering" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "buffering" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "live", + "value": { + "type": "token", + "value": "polite" + } + }, + { + "name": "atomic", + "value": { + "type": "boolean", + "value": false + } + }, + { + "name": "relevant", + "value": { + "type": "tokenList", + "value": "additions text" + } + } + ], + "parentId": "1785", + "childIds": ["1927"], + "backendDOMNodeId": 1786 + }, + { + "nodeId": "1787", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1785", + "childIds": ["1788"], + "backendDOMNodeId": 1787 + }, + { + "nodeId": "1789", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": ["1790"], + "backendDOMNodeId": 1789 + }, + { + "nodeId": "1790", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1789", + "childIds": ["1791", "1792", "1812"], + "backendDOMNodeId": 1790 + }, + { + "nodeId": "1791", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1790", + "childIds": [], + "backendDOMNodeId": 1791 + }, + { + "nodeId": "1792", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1790", + "childIds": ["1793", "1797", "1798", "1808", "1810"], + "backendDOMNodeId": 1792 + }, + { + "nodeId": "1812", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "video time scrubber", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "video time scrubber" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "video time scrubber" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "total time: 0:00" + }, + "value": { + "type": "number", + "value": 0 + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "settable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "orientation", + "value": { + "type": "token", + "value": "horizontal" + } + }, + { + "name": "valuemin", + "value": { + "type": "number", + "value": 0 + } + }, + { + "name": "valuemax", + "value": { + "type": "number", + "value": 100 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "elapsed time: 0:00" + } + } + ], + "parentId": "1790", + "childIds": [], + "backendDOMNodeId": 1812 + }, + { + "nodeId": "1819", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": [], + "backendDOMNodeId": 1819 + }, + { + "nodeId": "1820", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": [], + "backendDOMNodeId": 1820 + }, + { + "nodeId": "1821", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": [], + "backendDOMNodeId": 1821 + }, + { + "nodeId": "1822", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": [], + "backendDOMNodeId": 1822 + }, + { + "nodeId": "1823", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1785", + "childIds": [ + "1824", + "1828", + "1832", + "1836", + "1840", + "1844", + "1848", + "1852", + "1856", + "1860" + ], + "backendDOMNodeId": 1823 + }, + { + "nodeId": "1824", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1824 + }, + { + "nodeId": "1828", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1828 + }, + { + "nodeId": "1832", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1832 + }, + { + "nodeId": "1836", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1836 + }, + { + "nodeId": "1840", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1840 + }, + { + "nodeId": "1844", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1844 + }, + { + "nodeId": "1848", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1848 + }, + { + "nodeId": "1852", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1852 + }, + { + "nodeId": "1856", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1856 + }, + { + "nodeId": "1860", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1823", + "childIds": [], + "backendDOMNodeId": 1860 + }, + { + "nodeId": "1612", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + } + } + ] + }, + "properties": [], + "parentId": "1864", + "childIds": ["-1000001184"], + "backendDOMNodeId": 1612 + }, + { + "nodeId": "-1000001185", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "1613", + "childIds": [] + }, + { + "nodeId": "1614", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1867", + "childIds": ["-1000001059"], + "backendDOMNodeId": 1614 + }, + { + "nodeId": "1615", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install VSCode or Cursor" + } + } + ] + }, + "properties": [], + "parentId": "1867", + "childIds": ["-1000001186"], + "backendDOMNodeId": 1615 + }, + { + "nodeId": "1616", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001061"], + "backendDOMNodeId": 1616 + }, + { + "nodeId": "1617", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the skill:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the skill:" + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001187"], + "backendDOMNodeId": 1617 + }, + { + "nodeId": "1618", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001188"], + "backendDOMNodeId": 1618 + }, + { + "nodeId": "1869", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["1619"], + "backendDOMNodeId": 1869 + }, + { + "nodeId": "1620", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001190"], + "backendDOMNodeId": 1620 + }, + { + "nodeId": "1621", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(see" + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001191"], + "backendDOMNodeId": 1621 + }, + { + "nodeId": "1622", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001192"], + "backendDOMNodeId": 1622 + }, + { + "nodeId": "1871", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "1868", + "childIds": ["1623"], + "backendDOMNodeId": 1871 + }, + { + "nodeId": "1624", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1868", + "childIds": ["-1000001195"], + "backendDOMNodeId": 1624 + }, + { + "nodeId": "1625", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1872", + "childIds": ["-1000001071"], + "backendDOMNodeId": 1625 + }, + { + "nodeId": "1626", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + } + } + ] + }, + "properties": [], + "parentId": "1872", + "childIds": ["-1000001196"], + "backendDOMNodeId": 1626 + }, + { + "nodeId": "1627", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1872", + "childIds": ["-1000001197"], + "backendDOMNodeId": 1627 + }, + { + "nodeId": "1873", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1872", + "childIds": ["1628"], + "backendDOMNodeId": 1873 + }, + { + "nodeId": "1629", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1872", + "childIds": ["-1000001199"], + "backendDOMNodeId": 1629 + }, + { + "nodeId": "1630", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "4. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "4. " + } + } + ] + }, + "properties": [], + "parentId": "1874", + "childIds": ["-1000001076"], + "backendDOMNodeId": 1630 + }, + { + "nodeId": "1631", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Use ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Use " + } + } + ] + }, + "properties": [], + "parentId": "1874", + "childIds": ["-1000001200"], + "backendDOMNodeId": 1631 + }, + { + "nodeId": "1875", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1874", + "childIds": ["1632"], + "backendDOMNodeId": 1875 + }, + { + "nodeId": "1633", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + } + } + ] + }, + "properties": [], + "parentId": "1874", + "childIds": ["-1000001202"], + "backendDOMNodeId": 1633 + }, + { + "nodeId": "-1000001203", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "1634", + "childIds": [] + }, + { + "nodeId": "-1000001204", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + }, + "properties": [], + "parentId": "1635", + "childIds": [] + }, + { + "nodeId": "-1000001205", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1636", + "childIds": [] + }, + { + "nodeId": "-1000001206", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "1637", + "childIds": [] + }, + { + "nodeId": "-1000001207", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "1646", + "childIds": [] + }, + { + "nodeId": "1638", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["-1000001085"], + "backendDOMNodeId": 1638 + }, + { + "nodeId": "1889", + "ignored": false, + "role": { + "type": "role", + "value": "strong" + }, + "chromeRole": { + "type": "internalRole", + "value": 160 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["1647"], + "backendDOMNodeId": 1889 + }, + { + "nodeId": "1648", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ", with ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ", with " + } + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["-1000001209"], + "backendDOMNodeId": 1648 + }, + { + "nodeId": "1890", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["1649"], + "backendDOMNodeId": 1890 + }, + { + "nodeId": "1650", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["-1000001211"], + "backendDOMNodeId": 1650 + }, + { + "nodeId": "1651", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "available in PATH", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "available in PATH" + } + } + ] + }, + "properties": [], + "parentId": "1888", + "childIds": ["-1000001212"], + "backendDOMNodeId": 1651 + }, + { + "nodeId": "1639", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["-1000001091"], + "backendDOMNodeId": 1639 + }, + { + "nodeId": "1652", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The " + } + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["-1000001213"], + "backendDOMNodeId": 1652 + }, + { + "nodeId": "1892", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["1653"], + "backendDOMNodeId": 1892 + }, + { + "nodeId": "1654", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " Python package:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " Python package:" + } + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["-1000001215", "-1000001216"], + "backendDOMNodeId": 1654 + }, + { + "nodeId": "1655", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["-1000001217"], + "backendDOMNodeId": 1655 + }, + { + "nodeId": "1893", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1891", + "childIds": ["1656"], + "backendDOMNodeId": 1893 + }, + { + "nodeId": "1640", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["-1000001099"], + "backendDOMNodeId": 1640 + }, + { + "nodeId": "1657", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "For OT-2 use" + } + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["-1000001220"], + "backendDOMNodeId": 1657 + }, + { + "nodeId": "1658", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["-1000001221"], + "backendDOMNodeId": 1658 + }, + { + "nodeId": "1895", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["1659"], + "backendDOMNodeId": 1895 + }, + { + "nodeId": "1660", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["-1000001224"], + "backendDOMNodeId": 1660 + }, + { + "nodeId": "1661", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)" + } + } + ] + }, + "properties": [], + "parentId": "1894", + "childIds": ["-1000001225", "-1000001226"], + "backendDOMNodeId": 1661 + }, + { + "nodeId": "1641", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1896", + "childIds": ["-1000001107"], + "backendDOMNodeId": 1641 + }, + { + "nodeId": "1662", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via" + } + } + ] + }, + "properties": [], + "parentId": "1896", + "childIds": ["-1000001227", "-1000001228"], + "backendDOMNodeId": 1662 + }, + { + "nodeId": "1925", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1896", + "childIds": [], + "backendDOMNodeId": 1925 + }, + { + "nodeId": "1897", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1896", + "childIds": ["1663"], + "backendDOMNodeId": 1897 + }, + { + "nodeId": "1642", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1898", + "childIds": ["-1000001112"], + "backendDOMNodeId": 1642 + }, + { + "nodeId": "1664", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol." + } + } + ] + }, + "properties": [], + "parentId": "1898", + "childIds": ["-1000001231", "-1000001232", "-1000001233", "-1000001234"], + "backendDOMNodeId": 1664 + }, + { + "nodeId": "1665", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1900", + "childIds": ["-1000001235"], + "backendDOMNodeId": 1665 + }, + { + "nodeId": "1902", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1901", + "childIds": ["1643", "1666", "1667", "1668", "1669", "1670", "1671"], + "backendDOMNodeId": 1902 + }, + { + "nodeId": "1905", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1901", + "childIds": ["1644", "1672", "1906"], + "backendDOMNodeId": 1905 + }, + { + "nodeId": "1907", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1901", + "childIds": ["1645", "1674", "1908", "1676"], + "backendDOMNodeId": 1907 + }, + { + "nodeId": "1677", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1910", + "childIds": ["-1000001249"], + "backendDOMNodeId": 1677 + }, + { + "nodeId": "1912", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1911", + "childIds": ["1678"], + "backendDOMNodeId": 1912 + }, + { + "nodeId": "-1000001253", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "1681", + "childIds": [] + }, + { + "nodeId": "1751", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1750", + "childIds": ["1594"], + "backendDOMNodeId": 1751 + }, + { + "nodeId": "1752", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1750", + "childIds": ["1595"], + "backendDOMNodeId": 1752 + }, + { + "nodeId": "1755", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1754", + "childIds": ["1596"], + "backendDOMNodeId": 1755 + }, + { + "nodeId": "1756", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1754", + "childIds": ["1597"], + "backendDOMNodeId": 1756 + }, + { + "nodeId": "1759", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1758", + "childIds": ["1598"], + "backendDOMNodeId": 1759 + }, + { + "nodeId": "1760", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1758", + "childIds": ["1599"], + "backendDOMNodeId": 1760 + }, + { + "nodeId": "1763", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1762", + "childIds": ["1600"], + "backendDOMNodeId": 1763 + }, + { + "nodeId": "1764", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1762", + "childIds": ["1601"], + "backendDOMNodeId": 1764 + }, + { + "nodeId": "1767", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1766", + "childIds": ["1602"], + "backendDOMNodeId": 1767 + }, + { + "nodeId": "1768", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1766", + "childIds": ["1603"], + "backendDOMNodeId": 1768 + }, + { + "nodeId": "1771", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1770", + "childIds": ["1604"], + "backendDOMNodeId": 1771 + }, + { + "nodeId": "1772", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1770", + "childIds": ["1605"], + "backendDOMNodeId": 1772 + }, + { + "nodeId": "-1000001176", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action" + }, + "properties": [], + "parentId": "1606", + "childIds": [] + }, + { + "nodeId": "-1000001180", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "1610", + "childIds": [] + }, + { + "nodeId": "1927", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1786", + "childIds": ["1928"], + "backendDOMNodeId": 1927 + }, + { + "nodeId": "1788", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1787", + "childIds": [], + "backendDOMNodeId": 1788 + }, + { + "nodeId": "1793", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "play", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "play" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "play" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1792", + "childIds": ["1794"], + "backendDOMNodeId": 1793 + }, + { + "nodeId": "1797", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1792", + "childIds": [], + "backendDOMNodeId": 1797 + }, + { + "nodeId": "1798", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1792", + "childIds": ["1799", "1800", "1807"], + "backendDOMNodeId": 1798 + }, + { + "nodeId": "1808", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "enter full screen", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "enter full screen" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "enter full screen" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "1792", + "childIds": ["1809"], + "backendDOMNodeId": 1808 + }, + { + "nodeId": "1810", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 137 + }, + "name": { + "type": "computedString", + "value": "show more media controls", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "show more media controls" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "show more media controls" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "more options" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "more options" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "more options" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "hasPopup", + "value": { + "type": "token", + "value": "menu" + } + } + ], + "parentId": "1792", + "childIds": ["1811"], + "backendDOMNodeId": 1810 + }, + { + "nodeId": "-1000001184", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + }, + "properties": [], + "parentId": "1612", + "childIds": [] + }, + { + "nodeId": "-1000001059", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1614", + "childIds": [] + }, + { + "nodeId": "-1000001186", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "1615", + "childIds": [] + }, + { + "nodeId": "-1000001061", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1616", + "childIds": [] + }, + { + "nodeId": "-1000001187", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "1617", + "childIds": [] + }, + { + "nodeId": "-1000001188", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1618", + "childIds": [] + }, + { + "nodeId": "1619", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1869", + "childIds": ["-1000001189"], + "backendDOMNodeId": 1619 + }, + { + "nodeId": "-1000001190", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1620", + "childIds": [] + }, + { + "nodeId": "-1000001191", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "1621", + "childIds": [] + }, + { + "nodeId": "-1000001192", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1622", + "childIds": [] + }, + { + "nodeId": "1623", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1871", + "childIds": ["-1000001193", "-1000001194"], + "backendDOMNodeId": 1623 + }, + { + "nodeId": "-1000001195", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1624", + "childIds": [] + }, + { + "nodeId": "-1000001071", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1625", + "childIds": [] + }, + { + "nodeId": "-1000001196", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + }, + "properties": [], + "parentId": "1626", + "childIds": [] + }, + { + "nodeId": "-1000001197", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1627", + "childIds": [] + }, + { + "nodeId": "1628", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + } + ] + }, + "properties": [], + "parentId": "1873", + "childIds": ["-1000001198"], + "backendDOMNodeId": 1628 + }, + { + "nodeId": "-1000001199", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1629", + "childIds": [] + }, + { + "nodeId": "-1000001076", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1630", + "childIds": [] + }, + { + "nodeId": "-1000001200", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "1631", + "childIds": [] + }, + { + "nodeId": "1632", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1875", + "childIds": ["-1000001201"], + "backendDOMNodeId": 1632 + }, + { + "nodeId": "-1000001202", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + }, + "properties": [], + "parentId": "1633", + "childIds": [] + }, + { + "nodeId": "-1000001085", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1638", + "childIds": [] + }, + { + "nodeId": "1647", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python 3.8 or later" + } + } + ] + }, + "properties": [], + "parentId": "1889", + "childIds": ["-1000001208"], + "backendDOMNodeId": 1647 + }, + { + "nodeId": "-1000001209", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", with " + }, + "properties": [], + "parentId": "1648", + "childIds": [] + }, + { + "nodeId": "1649", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "python3", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "python3" + } + } + ] + }, + "properties": [], + "parentId": "1890", + "childIds": ["-1000001210"], + "backendDOMNodeId": 1649 + }, + { + "nodeId": "-1000001211", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1650", + "childIds": [] + }, + { + "nodeId": "-1000001212", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "1651", + "childIds": [] + }, + { + "nodeId": "-1000001091", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1639", + "childIds": [] + }, + { + "nodeId": "-1000001213", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "1652", + "childIds": [] + }, + { + "nodeId": "1653", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1892", + "childIds": ["-1000001214"], + "backendDOMNodeId": 1653 + }, + { + "nodeId": "-1000001215", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " Python " + }, + "properties": [], + "parentId": "1654", + "childIds": [] + }, + { + "nodeId": "-1000001216", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "package:" + }, + "properties": [], + "parentId": "1654", + "childIds": [] + }, + { + "nodeId": "-1000001217", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1655", + "childIds": [] + }, + { + "nodeId": "1656", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1893", + "childIds": ["-1000001218", "-1000001219"], + "backendDOMNodeId": 1656 + }, + { + "nodeId": "-1000001099", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1640", + "childIds": [] + }, + { + "nodeId": "-1000001220", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "1657", + "childIds": [] + }, + { + "nodeId": "-1000001221", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1658", + "childIds": [] + }, + { + "nodeId": "1659", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons==9.0.0", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons==9.0.0" + } + } + ] + }, + "properties": [], + "parentId": "1895", + "childIds": ["-1000001222", "-1000001223"], + "backendDOMNodeId": 1659 + }, + { + "nodeId": "-1000001224", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1660", + "childIds": [] + }, + { + "nodeId": "-1000001225", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons " + }, + "properties": [], + "parentId": "1661", + "childIds": [] + }, + { + "nodeId": "-1000001226", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "9.1.0+ dropped OT-2 support)" + }, + "properties": [], + "parentId": "1661", + "childIds": [] + }, + { + "nodeId": "-1000001107", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1641", + "childIds": [] + }, + { + "nodeId": "-1000001227", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python " + }, + "properties": [], + "parentId": "1662", + "childIds": [] + }, + { + "nodeId": "-1000001228", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "interpreter in VSCode via" + }, + "properties": [], + "parentId": "1662", + "childIds": [] + }, + { + "nodeId": "1663", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python: Select Interpreter", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python: Select Interpreter" + } + } + ] + }, + "properties": [], + "parentId": "1897", + "childIds": ["-1000001229", "-1000001230"], + "backendDOMNodeId": 1663 + }, + { + "nodeId": "-1000001112", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1642", + "childIds": [] + }, + { + "nodeId": "-1000001231", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep " + }, + "properties": [], + "parentId": "1664", + "childIds": [] + }, + { + "nodeId": "-1000001232", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them in a separate virtual " + }, + "properties": [], + "parentId": "1664", + "childIds": [] + }, + { + "nodeId": "-1000001233", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and switch " + }, + "properties": [], + "parentId": "1664", + "childIds": [] + }, + { + "nodeId": "-1000001234", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "per protocol." + }, + "properties": [], + "parentId": "1664", + "childIds": [] + }, + { + "nodeId": "-1000001235", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "properties": [], + "parentId": "1665", + "childIds": [] + }, + { + "nodeId": "1643", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001118"], + "backendDOMNodeId": 1643 + }, + { + "nodeId": "1666", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette (", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Open the Command Palette (" + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001236", "-1000001237"], + "backendDOMNodeId": 1666 + }, + { + "nodeId": "1667", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Cmd+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001238"], + "backendDOMNodeId": 1667 + }, + { + "nodeId": "1668", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " /", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " /" + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001239"], + "backendDOMNodeId": 1668 + }, + { + "nodeId": "1669", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001240"], + "backendDOMNodeId": 1669 + }, + { + "nodeId": "1670", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Ctrl+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001241"], + "backendDOMNodeId": 1670 + }, + { + "nodeId": "1671", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1902", + "childIds": ["-1000001242"], + "backendDOMNodeId": 1671 + }, + { + "nodeId": "1644", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1905", + "childIds": ["-1000001126"], + "backendDOMNodeId": 1644 + }, + { + "nodeId": "1672", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select " + } + } + ] + }, + "properties": [], + "parentId": "1905", + "childIds": ["-1000001243"], + "backendDOMNodeId": 1672 + }, + { + "nodeId": "1906", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1905", + "childIds": ["1673"], + "backendDOMNodeId": 1906 + }, + { + "nodeId": "1645", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1907", + "childIds": ["-1000001130"], + "backendDOMNodeId": 1645 + }, + { + "nodeId": "1674", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Choose the downloaded " + } + } + ] + }, + "properties": [], + "parentId": "1907", + "childIds": ["-1000001246"], + "backendDOMNodeId": 1674 + }, + { + "nodeId": "1908", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1907", + "childIds": ["1675"], + "backendDOMNodeId": 1908 + }, + { + "nodeId": "1676", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " file", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " file" + } + } + ] + }, + "properties": [], + "parentId": "1907", + "childIds": ["-1000001248"], + "backendDOMNodeId": 1676 + }, + { + "nodeId": "-1000001249", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "1677", + "childIds": [] + }, + { + "nodeId": "1678", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + } + } + ] + }, + "properties": [], + "parentId": "1912", + "childIds": ["-1000001250"], + "backendDOMNodeId": 1678 + }, + { + "nodeId": "1594", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + } + ] + }, + "properties": [], + "parentId": "1751", + "childIds": ["-1000001151"], + "backendDOMNodeId": 1594 + }, + { + "nodeId": "1595", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs." + } + } + ] + }, + "properties": [], + "parentId": "1752", + "childIds": ["-1000001152", "-1000001153", "-1000001154"], + "backendDOMNodeId": 1595 + }, + { + "nodeId": "1596", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + } + ] + }, + "properties": [], + "parentId": "1755", + "childIds": ["-1000001155"], + "backendDOMNodeId": 1596 + }, + { + "nodeId": "1597", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file." + } + } + ] + }, + "properties": [], + "parentId": "1756", + "childIds": ["-1000001156", "-1000001157", "-1000001158"], + "backendDOMNodeId": 1597 + }, + { + "nodeId": "1598", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + } + ] + }, + "properties": [], + "parentId": "1759", + "childIds": ["-1000001159"], + "backendDOMNodeId": 1598 + }, + { + "nodeId": "1599", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "1760", + "childIds": ["-1000001160", "-1000001161", "-1000001162", "-1000001163"], + "backendDOMNodeId": 1599 + }, + { + "nodeId": "1600", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + } + ] + }, + "properties": [], + "parentId": "1763", + "childIds": ["-1000001164"], + "backendDOMNodeId": 1600 + }, + { + "nodeId": "1601", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "1764", + "childIds": ["-1000001165", "-1000001166", "-1000001167"], + "backendDOMNodeId": 1601 + }, + { + "nodeId": "1602", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + } + ] + }, + "properties": [], + "parentId": "1767", + "childIds": ["-1000001168"], + "backendDOMNodeId": 1602 + }, + { + "nodeId": "1603", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support." + } + } + ] + }, + "properties": [], + "parentId": "1768", + "childIds": ["-1000001169", "-1000001170", "-1000001171"], + "backendDOMNodeId": 1603 + }, + { + "nodeId": "1604", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + } + ] + }, + "properties": [], + "parentId": "1771", + "childIds": ["-1000001172"], + "backendDOMNodeId": 1604 + }, + { + "nodeId": "1605", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly." + } + } + ] + }, + "properties": [], + "parentId": "1772", + "childIds": ["-1000001173", "-1000001174", "-1000001175"], + "backendDOMNodeId": 1605 + }, + { + "nodeId": "1928", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1927", + "childIds": ["1929"], + "backendDOMNodeId": 1928 + }, + { + "nodeId": "1929", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1928", + "childIds": ["1930", "1932"], + "backendDOMNodeId": 1929 + }, + { + "nodeId": "1794", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1793", + "childIds": [], + "backendDOMNodeId": 1794 + }, + { + "nodeId": "1799", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1798", + "childIds": [], + "backendDOMNodeId": 1799 + }, + { + "nodeId": "1800", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1798", + "childIds": [], + "backendDOMNodeId": 1800 + }, + { + "nodeId": "1807", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "mute", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "mute" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "mute" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "1798", + "childIds": [], + "backendDOMNodeId": 1807 + }, + { + "nodeId": "1809", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1808", + "childIds": [], + "backendDOMNodeId": 1809 + }, + { + "nodeId": "1811", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1810", + "childIds": [], + "backendDOMNodeId": 1811 + }, + { + "nodeId": "-1000001189", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "1619", + "childIds": [] + }, + { + "nodeId": "-1000001193", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-" + }, + "properties": [], + "parentId": "1623", + "childIds": [] + }, + { + "nodeId": "-1000001194", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop" + }, + "properties": [], + "parentId": "1623", + "childIds": [] + }, + { + "nodeId": "-1000001198", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "1628", + "childIds": [] + }, + { + "nodeId": "-1000001201", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "1632", + "childIds": [] + }, + { + "nodeId": "-1000001208", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "1647", + "childIds": [] + }, + { + "nodeId": "-1000001210", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "1649", + "childIds": [] + }, + { + "nodeId": "-1000001214", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "1653", + "childIds": [] + }, + { + "nodeId": "-1000001218", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "1656", + "childIds": [] + }, + { + "nodeId": "-1000001219", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "1656", + "childIds": [] + }, + { + "nodeId": "-1000001222", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "1659", + "childIds": [] + }, + { + "nodeId": "-1000001223", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "1659", + "childIds": [] + }, + { + "nodeId": "-1000001229", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: Select " + }, + "properties": [], + "parentId": "1663", + "childIds": [] + }, + { + "nodeId": "-1000001230", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "1663", + "childIds": [] + }, + { + "nodeId": "-1000001118", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1643", + "childIds": [] + }, + { + "nodeId": "-1000001236", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette " + }, + "properties": [], + "parentId": "1666", + "childIds": [] + }, + { + "nodeId": "-1000001237", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(" + }, + "properties": [], + "parentId": "1666", + "childIds": [] + }, + { + "nodeId": "-1000001238", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "1667", + "childIds": [] + }, + { + "nodeId": "-1000001239", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " /" + }, + "properties": [], + "parentId": "1668", + "childIds": [] + }, + { + "nodeId": "-1000001240", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1669", + "childIds": [] + }, + { + "nodeId": "-1000001241", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "1670", + "childIds": [] + }, + { + "nodeId": "-1000001242", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1671", + "childIds": [] + }, + { + "nodeId": "-1000001126", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1644", + "childIds": [] + }, + { + "nodeId": "-1000001243", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "1672", + "childIds": [] + }, + { + "nodeId": "1673", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install from VSIX...", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Extensions: Install from VSIX..." + } + } + ] + }, + "properties": [], + "parentId": "1906", + "childIds": ["-1000001244", "-1000001245"], + "backendDOMNodeId": 1673 + }, + { + "nodeId": "-1000001130", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1645", + "childIds": [] + }, + { + "nodeId": "-1000001246", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded " + }, + "properties": [], + "parentId": "1674", + "childIds": [] + }, + { + "nodeId": "1675", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ".vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ".vsix" + } + } + ] + }, + "properties": [], + "parentId": "1908", + "childIds": ["-1000001247"], + "backendDOMNodeId": 1675 + }, + { + "nodeId": "-1000001248", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "file" + }, + "properties": [], + "parentId": "1676", + "childIds": [] + }, + { + "nodeId": "-1000001250", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + }, + "properties": [], + "parentId": "1678", + "childIds": [] + }, + { + "nodeId": "-1000001151", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization" + }, + "properties": [], + "parentId": "1594", + "childIds": [] + }, + { + "nodeId": "-1000001152", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes " + }, + "properties": [], + "parentId": "1595", + "childIds": [] + }, + { + "nodeId": "-1000001153", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "render in real time through an interactive " + }, + "properties": [], + "parentId": "1595", + "childIds": [] + }, + { + "nodeId": "-1000001154", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "panel while your protocol runs." + }, + "properties": [], + "parentId": "1595", + "childIds": [] + }, + { + "nodeId": "-1000001155", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save" + }, + "properties": [], + "parentId": "1596", + "childIds": [] + }, + { + "nodeId": "-1000001156", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns " + }, + "properties": [], + "parentId": "1597", + "childIds": [] + }, + { + "nodeId": "-1000001157", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "whenever you save changes (Ctrl+S / " + }, + "properties": [], + "parentId": "1597", + "childIds": [] + }, + { + "nodeId": "-1000001158", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+S) to your protocol file." + }, + "properties": [], + "parentId": "1597", + "childIds": [] + }, + { + "nodeId": "-1000001159", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "1598", + "childIds": [] + }, + { + "nodeId": "-1000001160", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons " + }, + "properties": [], + "parentId": "1599", + "childIds": [] + }, + { + "nodeId": "-1000001161", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters; hit Analyze to apply " + }, + "properties": [], + "parentId": "1599", + "childIds": [] + }, + { + "nodeId": "-1000001162", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them — your original code is never " + }, + "properties": [], + "parentId": "1599", + "childIds": [] + }, + { + "nodeId": "-1000001163", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "modified." + }, + "properties": [], + "parentId": "1599", + "childIds": [] + }, + { + "nodeId": "-1000001164", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "1600", + "childIds": [] + }, + { + "nodeId": "-1000001165", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) " + }, + "properties": [], + "parentId": "1601", + "childIds": [] + }, + { + "nodeId": "-1000001166", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "in the same directory as your protocol file " + }, + "properties": [], + "parentId": "1601", + "childIds": [] + }, + { + "nodeId": "-1000001167", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and they just work." + }, + "properties": [], + "parentId": "1601", + "childIds": [] + }, + { + "nodeId": "-1000001168", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window" + }, + "properties": [], + "parentId": "1602", + "childIds": [] + }, + { + "nodeId": "-1000001169", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or " + }, + "properties": [], + "parentId": "1603", + "childIds": [] + }, + { + "nodeId": "-1000001170", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "drag the tab to another monitor via " + }, + "properties": [], + "parentId": "1603", + "childIds": [] + }, + { + "nodeId": "-1000001171", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "1603", + "childIds": [] + }, + { + "nodeId": "-1000001172", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper" + }, + "properties": [], + "parentId": "1604", + "childIds": [] + }, + { + "nodeId": "-1000001173", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps " + }, + "properties": [], + "parentId": "1605", + "childIds": [] + }, + { + "nodeId": "-1000001174", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and hit Enter to jump the visualization state " + }, + "properties": [], + "parentId": "1605", + "childIds": [] + }, + { + "nodeId": "-1000001175", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "instantly." + }, + "properties": [], + "parentId": "1605", + "childIds": [] + }, + { + "nodeId": "1930", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1929", + "childIds": ["1931"], + "backendDOMNodeId": 1930 + }, + { + "nodeId": "1932", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1929", + "childIds": ["1933"], + "backendDOMNodeId": 1932 + }, + { + "nodeId": "-1000001244", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install " + }, + "properties": [], + "parentId": "1673", + "childIds": [] + }, + { + "nodeId": "-1000001245", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "from VSIX..." + }, + "properties": [], + "parentId": "1673", + "childIds": [] + }, + { + "nodeId": "-1000001247", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "1675", + "childIds": [] + }, + { + "nodeId": "1931", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1930", + "childIds": [], + "backendDOMNodeId": 1931 + }, + { + "nodeId": "1933", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1932", + "childIds": [], + "backendDOMNodeId": 1933 + } +] diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/dom.html b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/dom.html new file mode 100644 index 0000000..ad39db5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/dom.html @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + Protocol Visualizer — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Visualizer

+ Preview +
+

+ Simulate your Opentrons Python protocols and inspect deck + layout and liquid volumes in real time — without leaving + VSCode. +

+ +
+ +
+
+
+
+

+ Everything you need to see your protocol run +

+
    +
  • +
    +

    + Real-time Deck Visualization +

    +

    + Deck state and liquid volume changes render in real time + through an interactive panel while your protocol runs. +

    +
    +
  • +
  • +
    +

    Auto-analysis on Save

    +

    + The simulation automatically reruns whenever you save + changes (Ctrl+S / Cmd+S) to your protocol file. +

    +
    +
  • +
  • +
    +

    Runtime Parameters UI

    +

    + Input fields are generated for Opentrons Runtime + Parameters; hit Analyze to apply them — your original code + is never modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place custom labware definition files (.json) in the same + directory as your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out Window

    +

    + Pop the panel out to its own window or drag the tab to + another monitor via VSCode's Auxiliary Window support. +

    +
    +
  • +
  • +
    +

    Step Jumper

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly. +

    +
    +
  • +
+
+
+
+
+
+ Protocol Visualizer visualizing an Opentrons protocol on a simulated deck +
+ Protocol Visualizer in action +
+
+
+
+
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with + protocol-fix-loop. Generate Opentrons protocols with GitHub Copilot or Cursor, + then simulate and fix them in a visual feedback loop. +

+
+ +
+ Generate a protocol from a prompt, then fix it while watching + the simulation +
+
+

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill: + npx skills add koji/protocol-fix-loop + (see + koji/protocol-fix-loop) +
  4. +
  5. + Install the Protocol Visualizer extension (see + Installation guide) +
  6. +
  7. + Use + /protocol-fix-loop + in chat and add your prompt to generate a protocol +
  8. +
+
+
+
+
+

Want to try the extension?

+

+ Request access via our form — requests are handled individually. +

+ Request access +
+
+
+
+

Installation

+
+
+

Prerequisites

+
    +
  • + Python 3.8 or later, with + python3 available in PATH +
  • +
  • + The opentrons Python package: + pip install opentrons +
  • +
  • + For OT-2 use + pip install opentrons==9.0.0 + (opentrons 9.1.0+ dropped OT-2 support) +
  • +
  • + Select the matching Python interpreter in VSCode via + Python: Select Interpreter +
  • +
  • + Using both Flex and OT-2? Keep them in a separate virtual + environment each and switch per protocol. +
  • +
+
+
+

+ Method A: Command Palette +

+
    +
  1. + Open the Command Palette (Cmd+Shift+P / + Ctrl+Shift+P) +
  2. +
  3. + Select Extensions: Install from VSIX... +
  4. +
  5. Choose the downloaded .vsix file
  6. +
+
+
+

Method B: Command line

+
code --install-extension protocol-visualizer.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/result.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/result.json new file mode 100644 index 0000000..773f3b3 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/result.json @@ -0,0 +1,47 @@ +{ + "feature": "install-guide", + "url": "http://127.0.0.1:5181/", + "passed": 5, + "total": 5, + "ok": true, + "checks": [ + { + "id": "install-region", + "pass": true, + "value": true, + "error": null + }, + { + "id": "install-prereqs", + "pass": true, + "value": "InstallationPrerequisitesPython 3.8 or later, with python3 available in PATHThe opentrons Python package: pip install opentronsFor OT-2 use pip install opentrons==9.0.0 (opentrons 9.1.0+ dropped OT-2 support)Select the matching Python interpreter in VSCode via Python: Select InterpreterUsing both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.Method A: Command PaletteOpen the Command Palette (Cmd+Shift+P / Ctrl+Shift+P)Select Extensions: Install from VSIX...Choose the downloaded .vsix fileMethod B: Command linecode --install-extension protocol-visualizer.vsix", + "error": null + }, + { + "id": "install-cli-method", + "pass": true, + "value": true, + "error": null + }, + { + "id": "header-nav", + "pass": true, + "value": [ + ["Features", "#features"], + ["Install", "#install"] + ], + "error": null + }, + { + "id": "anchor-navigation", + "pass": true, + "value": { + "hash": "#install", + "top": 0, + "vh": 749 + }, + "error": null + } + ], + "finishedAt": "2026-09-16T07:56:17.778Z" +} diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/screenshot.png b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/screenshot.png new file mode 100644 index 0000000..f91c499 Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/axtree.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/axtree.json new file mode 100644 index 0000000..3990a35 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/axtree.json @@ -0,0 +1,11379 @@ +[ + { + "nodeId": "1086", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "aria-label", + "superseded": true + }, + { + "type": "relatedElement", + "value": { + "type": "computedString", + "value": "Protocol Visualizer — Simulate Opentrons protocols in VSCode" + }, + "nativeSource": "title" + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/" + } + } + ], + "childIds": ["1194"], + "backendDOMNodeId": 1086, + "frameId": "8AE6312B5CF350076BE20E6D026DCC9C" + }, + { + "nodeId": "1194", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1086", + "childIds": ["1219"], + "backendDOMNodeId": 1194 + }, + { + "nodeId": "1219", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1194", + "childIds": ["1220"], + "backendDOMNodeId": 1219 + }, + { + "nodeId": "1220", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1219", + "childIds": ["1221"], + "backendDOMNodeId": 1220 + }, + { + "nodeId": "1221", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1220", + "childIds": ["1222", "1240", "1431", "1437"], + "backendDOMNodeId": 1221 + }, + { + "nodeId": "1222", + "ignored": false, + "role": { + "type": "role", + "value": "banner" + }, + "chromeRole": { + "type": "internalRole", + "value": 94 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1221", + "childIds": ["1223"], + "backendDOMNodeId": 1222 + }, + { + "nodeId": "1240", + "ignored": false, + "role": { + "type": "role", + "value": "main" + }, + "chromeRole": { + "type": "internalRole", + "value": 118 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1221", + "childIds": ["1241", "1256", "1284", "1289", "1394", "1399"], + "backendDOMNodeId": 1240 + }, + { + "nodeId": "1431", + "ignored": false, + "role": { + "type": "role", + "value": "complementary" + }, + "chromeRole": { + "type": "internalRole", + "value": 22 + }, + "name": { + "type": "computedString", + "value": "Disclaimer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Disclaimer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Disclaimer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1221", + "childIds": ["1432"], + "backendDOMNodeId": 1431 + }, + { + "nodeId": "1437", + "ignored": false, + "role": { + "type": "role", + "value": "contentinfo" + }, + "chromeRole": { + "type": "internalRole", + "value": 85 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1221", + "childIds": ["1438"], + "backendDOMNodeId": 1437 + }, + { + "nodeId": "1223", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1222", + "childIds": ["1224", "1231", "1234"], + "backendDOMNodeId": 1223 + }, + { + "nodeId": "1224", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#top" + } + } + ], + "parentId": "1223", + "childIds": ["1230"], + "backendDOMNodeId": 1224 + }, + { + "nodeId": "1231", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "Section navigation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Section navigation" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Section navigation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1223", + "childIds": ["1232", "1233"], + "backendDOMNodeId": 1231 + }, + { + "nodeId": "1234", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1223", + "childIds": ["1235", "1236"], + "backendDOMNodeId": 1234 + }, + { + "nodeId": "1235", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1234", + "childIds": ["1097"], + "backendDOMNodeId": 1235 + }, + { + "nodeId": "1236", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "Switch to light theme", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Switch to light theme" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "Switch to light theme" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "Switch to light theme" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1234", + "childIds": [], + "backendDOMNodeId": 1236 + }, + { + "nodeId": "1241", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 211 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1242"], + "backendDOMNodeId": 1241 + }, + { + "nodeId": "1256", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Features" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1257"], + "backendDOMNodeId": 1256 + }, + { + "nodeId": "1284", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Screenshot", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Screenshot" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Screenshot" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1285"], + "backendDOMNodeId": 1284 + }, + { + "nodeId": "1289", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Generate protocols with AI" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Generate protocols with AI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1290"], + "backendDOMNodeId": 1289 + }, + { + "nodeId": "1394", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Request access" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1395"], + "backendDOMNodeId": 1394 + }, + { + "nodeId": "1399", + "ignored": false, + "role": { + "type": "role", + "value": "region" + }, + "chromeRole": { + "type": "internalRole", + "value": 143 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Installation guide" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1240", + "childIds": ["1400"], + "backendDOMNodeId": 1399 + }, + { + "nodeId": "1432", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1431", + "childIds": ["1436"], + "backendDOMNodeId": 1432 + }, + { + "nodeId": "1436", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1432", + "childIds": ["1188"], + "backendDOMNodeId": 1436 + }, + { + "nodeId": "1438", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1437", + "childIds": ["1439", "1440"], + "backendDOMNodeId": 1438 + }, + { + "nodeId": "1439", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1438", + "childIds": ["1189"], + "backendDOMNodeId": 1439 + }, + { + "nodeId": "1440", + "ignored": false, + "role": { + "type": "role", + "value": "navigation" + }, + "chromeRole": { + "type": "internalRole", + "value": 130 + }, + "name": { + "type": "computedString", + "value": "External links", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "External links" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "External links" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [], + "parentId": "1438", + "childIds": ["1193"], + "backendDOMNodeId": 1440 + }, + { + "nodeId": "1230", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1224", + "childIds": ["1094"], + "backendDOMNodeId": 1230 + }, + { + "nodeId": "1094", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1230", + "childIds": ["-1000000737"], + "backendDOMNodeId": 1094 + }, + { + "nodeId": "1232", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#features" + } + } + ], + "parentId": "1231", + "childIds": ["1095"], + "backendDOMNodeId": 1232 + }, + { + "nodeId": "1233", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1231", + "childIds": ["1096"], + "backendDOMNodeId": 1233 + }, + { + "nodeId": "1097", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1235", + "childIds": ["-1000000740"], + "backendDOMNodeId": 1097 + }, + { + "nodeId": "1242", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1241", + "childIds": ["1243"], + "backendDOMNodeId": 1242 + }, + { + "nodeId": "1243", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1242", + "childIds": ["1244", "1247", "1248"], + "backendDOMNodeId": 1243 + }, + { + "nodeId": "1244", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1243", + "childIds": ["1245", "1246"], + "backendDOMNodeId": 1244 + }, + { + "nodeId": "1245", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1244", + "childIds": ["1098"], + "backendDOMNodeId": 1245 + }, + { + "nodeId": "1246", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1244", + "childIds": ["1093"], + "backendDOMNodeId": 1246 + }, + { + "nodeId": "1093", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "PREVIEW", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "PREVIEW" + } + } + ] + }, + "properties": [], + "parentId": "1246", + "childIds": ["-1000000742"], + "backendDOMNodeId": 1093 + }, + { + "nodeId": "1247", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1243", + "childIds": ["1099"], + "backendDOMNodeId": 1247 + }, + { + "nodeId": "1248", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1243", + "childIds": ["1192", "1249"], + "backendDOMNodeId": 1248 + }, + { + "nodeId": "1192", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1248", + "childIds": ["1100"], + "backendDOMNodeId": 1192 + }, + { + "nodeId": "1249", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1248", + "childIds": ["1101"], + "backendDOMNodeId": 1249 + }, + { + "nodeId": "1257", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1256", + "childIds": ["1258", "1259"], + "backendDOMNodeId": 1257 + }, + { + "nodeId": "1258", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1257", + "childIds": ["1102"], + "backendDOMNodeId": 1258 + }, + { + "nodeId": "1259", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1257", + "childIds": ["1260", "1264", "1268", "1272", "1276", "1280"], + "backendDOMNodeId": 1259 + }, + { + "nodeId": "1285", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1284", + "childIds": ["1286"], + "backendDOMNodeId": 1285 + }, + { + "nodeId": "1286", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1285", + "childIds": ["1287", "1288"], + "backendDOMNodeId": 1286 + }, + { + "nodeId": "1290", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1289", + "childIds": ["1291", "1292", "1294", "1383", "1384"], + "backendDOMNodeId": 1290 + }, + { + "nodeId": "1291", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1290", + "childIds": ["1116"], + "backendDOMNodeId": 1291 + }, + { + "nodeId": "1292", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1290", + "childIds": ["1117", "1118", "1293", "1120"], + "backendDOMNodeId": 1292 + }, + { + "nodeId": "1294", + "ignored": false, + "role": { + "type": "role", + "value": "figure" + }, + "chromeRole": { + "type": "internalRole", + "value": 84 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1290", + "childIds": ["1191", "1382"], + "backendDOMNodeId": 1294 + }, + { + "nodeId": "1383", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1290", + "childIds": ["1122"], + "backendDOMNodeId": 1383 + }, + { + "nodeId": "1384", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1290", + "childIds": ["1385", "1386", "1390", "1392"], + "backendDOMNodeId": 1384 + }, + { + "nodeId": "1395", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1394", + "childIds": ["1396", "1397", "1398"], + "backendDOMNodeId": 1395 + }, + { + "nodeId": "1396", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1395", + "childIds": ["1143"], + "backendDOMNodeId": 1396 + }, + { + "nodeId": "1397", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1395", + "childIds": ["1144"], + "backendDOMNodeId": 1397 + }, + { + "nodeId": "1398", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1395", + "childIds": ["1145"], + "backendDOMNodeId": 1398 + }, + { + "nodeId": "1400", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1399", + "childIds": ["1401", "1402"], + "backendDOMNodeId": 1400 + }, + { + "nodeId": "1401", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "1400", + "childIds": ["1146"], + "backendDOMNodeId": 1401 + }, + { + "nodeId": "1402", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1400", + "childIds": ["1403", "1417", "1427"], + "backendDOMNodeId": 1402 + }, + { + "nodeId": "1403", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1402", + "childIds": ["1404", "1405"], + "backendDOMNodeId": 1403 + }, + { + "nodeId": "1404", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1403", + "childIds": ["1155"], + "backendDOMNodeId": 1404 + }, + { + "nodeId": "1405", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1403", + "childIds": ["1406", "1409", "1412", "1414", "1416"], + "backendDOMNodeId": 1405 + }, + { + "nodeId": "1417", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1402", + "childIds": ["1418", "1419"], + "backendDOMNodeId": 1417 + }, + { + "nodeId": "1427", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Method B: Command line" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1402", + "childIds": ["1428", "1429"], + "backendDOMNodeId": 1427 + }, + { + "nodeId": "1188", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "1436", + "childIds": ["-1000000848"], + "backendDOMNodeId": 1188 + }, + { + "nodeId": "1189", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + } + } + ] + }, + "properties": [], + "parentId": "1439", + "childIds": ["-1000000849"], + "backendDOMNodeId": 1189 + }, + { + "nodeId": "1193", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://docs.google.com/forms/d/e/1FAIpQLSee8RapmgEfDE2QQtonDNmai44tuyidFQx5A4CiPfXO7_lFgQ/viewform?usp=publish-editor" + } + } + ], + "parentId": "1440", + "childIds": ["1190"], + "backendDOMNodeId": 1193 + }, + { + "nodeId": "-1000000737", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "1094", + "childIds": [] + }, + { + "nodeId": "1095", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Features", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Features" + } + } + ] + }, + "properties": [], + "parentId": "1232", + "childIds": ["-1000000738"], + "backendDOMNodeId": 1095 + }, + { + "nodeId": "1096", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install" + } + } + ] + }, + "properties": [], + "parentId": "1233", + "childIds": ["-1000000739"], + "backendDOMNodeId": 1096 + }, + { + "nodeId": "-1000000740", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1097", + "childIds": [] + }, + { + "nodeId": "1098", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1245", + "childIds": ["-1000000741"], + "backendDOMNodeId": 1098 + }, + { + "nodeId": "-1000000742", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "1093", + "childIds": [] + }, + { + "nodeId": "1099", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode." + } + } + ] + }, + "properties": [], + "parentId": "1247", + "childIds": ["-1000000743", "-1000000744"], + "backendDOMNodeId": 1099 + }, + { + "nodeId": "1100", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1192", + "childIds": ["-1000000745"], + "backendDOMNodeId": 1100 + }, + { + "nodeId": "1101", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide ↓" + } + } + ] + }, + "properties": [], + "parentId": "1249", + "childIds": ["-1000000746"], + "backendDOMNodeId": 1101 + }, + { + "nodeId": "1102", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + } + } + ] + }, + "properties": [], + "parentId": "1258", + "childIds": ["-1000000747"], + "backendDOMNodeId": 1102 + }, + { + "nodeId": "1260", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1261"], + "backendDOMNodeId": 1260 + }, + { + "nodeId": "1264", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1265"], + "backendDOMNodeId": 1264 + }, + { + "nodeId": "1268", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1269"], + "backendDOMNodeId": 1268 + }, + { + "nodeId": "1272", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1273"], + "backendDOMNodeId": 1272 + }, + { + "nodeId": "1276", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1277"], + "backendDOMNodeId": 1276 + }, + { + "nodeId": "1280", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1259", + "childIds": ["1281"], + "backendDOMNodeId": 1280 + }, + { + "nodeId": "1287", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Visualizer visualizing an Opentrons protocol on a simulated deck" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/user-attachments/assets/eeb96be5-8334-4370-bd4a-1564cb12d690" + } + } + ], + "parentId": "1286", + "childIds": [], + "backendDOMNodeId": 1287 + }, + { + "nodeId": "1288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1286", + "childIds": ["1115"], + "backendDOMNodeId": 1288 + }, + { + "nodeId": "1116", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + } + } + ] + }, + "properties": [], + "parentId": "1291", + "childIds": ["-1000000774"], + "backendDOMNodeId": 1116 + }, + { + "nodeId": "1117", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "1292", + "childIds": ["-1000000775"], + "backendDOMNodeId": 1117 + }, + { + "nodeId": "1118", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1292", + "childIds": ["-1000000776"], + "backendDOMNodeId": 1118 + }, + { + "nodeId": "1293", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "1292", + "childIds": ["1119"], + "backendDOMNodeId": 1293 + }, + { + "nodeId": "1120", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ". Generate Opentrons protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + } + } + ] + }, + "properties": [], + "parentId": "1292", + "childIds": ["-1000000778", "-1000000779", "-1000000780"], + "backendDOMNodeId": 1120 + }, + { + "nodeId": "1191", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Video" + }, + "chromeRole": { + "type": "internalRole", + "value": 182 + }, + "name": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Visualizer" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1294", + "childIds": ["1295"], + "backendDOMNodeId": 1191 + }, + { + "nodeId": "1382", + "ignored": false, + "role": { + "type": "internalRole", + "value": "Figcaption" + }, + "chromeRole": { + "type": "internalRole", + "value": 83 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1294", + "childIds": ["1121"], + "backendDOMNodeId": 1382 + }, + { + "nodeId": "1122", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "How to use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "How to use" + } + } + ] + }, + "properties": [], + "parentId": "1383", + "childIds": ["-1000000782"], + "backendDOMNodeId": 1122 + }, + { + "nodeId": "1385", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1384", + "childIds": ["1123", "1124"], + "backendDOMNodeId": 1385 + }, + { + "nodeId": "1386", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1384", + "childIds": [ + "1125", + "1126", + "1127", + "1387", + "1129", + "1130", + "1131", + "1389", + "1133" + ], + "backendDOMNodeId": 1386 + }, + { + "nodeId": "1390", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1384", + "childIds": ["1134", "1135", "1136", "1391", "1138"], + "backendDOMNodeId": 1390 + }, + { + "nodeId": "1392", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1384", + "childIds": ["1139", "1140", "1393", "1142"], + "backendDOMNodeId": 1392 + }, + { + "nodeId": "1143", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Want to try the extension?" + } + } + ] + }, + "properties": [], + "parentId": "1396", + "childIds": ["-1000000800"], + "backendDOMNodeId": 1143 + }, + { + "nodeId": "1144", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + } + } + ] + }, + "properties": [], + "parentId": "1397", + "childIds": ["-1000000801"], + "backendDOMNodeId": 1144 + }, + { + "nodeId": "1145", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Request access", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Request access" + } + } + ] + }, + "properties": [], + "parentId": "1398", + "childIds": ["-1000000802"], + "backendDOMNodeId": 1145 + }, + { + "nodeId": "1146", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation" + } + } + ] + }, + "properties": [], + "parentId": "1401", + "childIds": ["-1000000803"], + "backendDOMNodeId": 1146 + }, + { + "nodeId": "1155", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Prerequisites", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Prerequisites" + } + } + ] + }, + "properties": [], + "parentId": "1404", + "childIds": ["-1000000804"], + "backendDOMNodeId": 1155 + }, + { + "nodeId": "1406", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1405", + "childIds": ["1147", "1407", "1157", "1408", "1159", "1160"], + "backendDOMNodeId": 1406 + }, + { + "nodeId": "1409", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1405", + "childIds": ["1148", "1161", "1410", "1163", "1164", "1411"], + "backendDOMNodeId": 1409 + }, + { + "nodeId": "1412", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1405", + "childIds": ["1149", "1166", "1167", "1413", "1169", "1170"], + "backendDOMNodeId": 1412 + }, + { + "nodeId": "1414", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1405", + "childIds": ["1150", "1171", "1442", "1415"], + "backendDOMNodeId": 1414 + }, + { + "nodeId": "1416", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1405", + "childIds": ["1151", "1173"], + "backendDOMNodeId": 1416 + }, + { + "nodeId": "1418", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1417", + "childIds": ["1174"], + "backendDOMNodeId": 1418 + }, + { + "nodeId": "1419", + "ignored": false, + "role": { + "type": "role", + "value": "list" + }, + "chromeRole": { + "type": "internalRole", + "value": 111 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1417", + "childIds": ["1420", "1423", "1425"], + "backendDOMNodeId": 1419 + }, + { + "nodeId": "1428", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1427", + "childIds": ["1186"], + "backendDOMNodeId": 1428 + }, + { + "nodeId": "1429", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1427", + "childIds": ["1430"], + "backendDOMNodeId": 1429 + }, + { + "nodeId": "-1000000848", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "1188", + "childIds": [] + }, + { + "nodeId": "-1000000849", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "1189", + "childIds": [] + }, + { + "nodeId": "1190", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Feedback", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Feedback" + } + } + ] + }, + "properties": [], + "parentId": "1193", + "childIds": ["-1000000850"], + "backendDOMNodeId": 1190 + }, + { + "nodeId": "-1000000738", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "1095", + "childIds": [] + }, + { + "nodeId": "-1000000739", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "1096", + "childIds": [] + }, + { + "nodeId": "-1000000741", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer" + }, + "properties": [], + "parentId": "1098", + "childIds": [] + }, + { + "nodeId": "-1000000743", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Simulate your Opentrons Python protocols and inspect deck layout and " + }, + "properties": [], + "parentId": "1099", + "childIds": [] + }, + { + "nodeId": "-1000000744", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "liquid volumes in real time — without leaving VSCode." + }, + "properties": [], + "parentId": "1099", + "childIds": [] + }, + { + "nodeId": "-1000000745", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1100", + "childIds": [] + }, + { + "nodeId": "-1000000746", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "1101", + "childIds": [] + }, + { + "nodeId": "-1000000747", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Everything you need to see your protocol run" + }, + "properties": [], + "parentId": "1102", + "childIds": [] + }, + { + "nodeId": "1261", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1260", + "childIds": ["1262", "1263"], + "backendDOMNodeId": 1261 + }, + { + "nodeId": "1265", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1264", + "childIds": ["1266", "1267"], + "backendDOMNodeId": 1265 + }, + { + "nodeId": "1269", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1268", + "childIds": ["1270", "1271"], + "backendDOMNodeId": 1269 + }, + { + "nodeId": "1273", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1272", + "childIds": ["1274", "1275"], + "backendDOMNodeId": 1273 + }, + { + "nodeId": "1277", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1276", + "childIds": ["1278", "1279"], + "backendDOMNodeId": 1277 + }, + { + "nodeId": "1281", + "ignored": false, + "role": { + "type": "role", + "value": "article" + }, + "chromeRole": { + "type": "internalRole", + "value": 5 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [], + "parentId": "1280", + "childIds": ["1282", "1283"], + "backendDOMNodeId": 1281 + }, + { + "nodeId": "1115", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Visualizer in action" + } + } + ] + }, + "properties": [], + "parentId": "1288", + "childIds": ["-1000000773"], + "backendDOMNodeId": 1115 + }, + { + "nodeId": "-1000000774", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Visualizer" + }, + "properties": [], + "parentId": "1116", + "childIds": [] + }, + { + "nodeId": "-1000000775", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Visualizer to your LLM with" + }, + "properties": [], + "parentId": "1117", + "childIds": [] + }, + { + "nodeId": "-1000000776", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1118", + "childIds": [] + }, + { + "nodeId": "1119", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1293", + "childIds": ["-1000000777"], + "backendDOMNodeId": 1119 + }, + { + "nodeId": "-1000000778", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons " + }, + "properties": [], + "parentId": "1120", + "childIds": [] + }, + { + "nodeId": "-1000000779", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocols with GitHub Copilot or Cursor, then simulate and fix them in a visual feedback " + }, + "properties": [], + "parentId": "1120", + "childIds": [] + }, + { + "nodeId": "-1000000780", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop." + }, + "properties": [], + "parentId": "1120", + "childIds": [] + }, + { + "nodeId": "1295", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1191", + "childIds": [ + "1296", + "1305", + "1307", + "1337", + "1338", + "1339", + "1340", + "1341" + ], + "backendDOMNodeId": 1295 + }, + { + "nodeId": "1296", + "ignored": false, + "role": { + "type": "role", + "value": "group" + }, + "chromeRole": { + "type": "internalRole", + "value": 93 + }, + "name": { + "type": "computedString", + "value": "buffering", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "buffering" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "buffering" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "live", + "value": { + "type": "token", + "value": "polite" + } + }, + { + "name": "atomic", + "value": { + "type": "boolean", + "value": false + } + }, + { + "name": "relevant", + "value": { + "type": "tokenList", + "value": "additions text" + } + } + ], + "parentId": "1295", + "childIds": ["1298"], + "backendDOMNodeId": 1296 + }, + { + "nodeId": "1305", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1295", + "childIds": ["1306"], + "backendDOMNodeId": 1305 + }, + { + "nodeId": "1307", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": ["1308"], + "backendDOMNodeId": 1307 + }, + { + "nodeId": "1308", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1307", + "childIds": ["1309", "1310", "1330"], + "backendDOMNodeId": 1308 + }, + { + "nodeId": "1309", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1308", + "childIds": [], + "backendDOMNodeId": 1309 + }, + { + "nodeId": "1310", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1308", + "childIds": ["1311", "1315", "1316", "1326", "1328"], + "backendDOMNodeId": 1310 + }, + { + "nodeId": "1330", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "video time scrubber", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "video time scrubber" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "video time scrubber" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "total time: 0:00" + }, + "value": { + "type": "number", + "value": 0 + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "settable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "orientation", + "value": { + "type": "token", + "value": "horizontal" + } + }, + { + "name": "valuemin", + "value": { + "type": "number", + "value": 0 + } + }, + { + "name": "valuemax", + "value": { + "type": "number", + "value": 100 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "elapsed time: 0:00" + } + } + ], + "parentId": "1308", + "childIds": [], + "backendDOMNodeId": 1330 + }, + { + "nodeId": "1337", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": [], + "backendDOMNodeId": 1337 + }, + { + "nodeId": "1338", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": [], + "backendDOMNodeId": 1338 + }, + { + "nodeId": "1339", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": [], + "backendDOMNodeId": 1339 + }, + { + "nodeId": "1340", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": [], + "backendDOMNodeId": 1340 + }, + { + "nodeId": "1341", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1295", + "childIds": [ + "1342", + "1346", + "1350", + "1354", + "1358", + "1362", + "1366", + "1370", + "1374", + "1378" + ], + "backendDOMNodeId": 1341 + }, + { + "nodeId": "1342", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1342 + }, + { + "nodeId": "1346", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1346 + }, + { + "nodeId": "1350", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1350 + }, + { + "nodeId": "1354", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1354 + }, + { + "nodeId": "1358", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1358 + }, + { + "nodeId": "1362", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1362 + }, + { + "nodeId": "1366", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1366 + }, + { + "nodeId": "1370", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1370 + }, + { + "nodeId": "1374", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1374 + }, + { + "nodeId": "1378", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1341", + "childIds": [], + "backendDOMNodeId": 1378 + }, + { + "nodeId": "1121", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + } + } + ] + }, + "properties": [], + "parentId": "1382", + "childIds": ["-1000000781"], + "backendDOMNodeId": 1121 + }, + { + "nodeId": "-1000000782", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "1122", + "childIds": [] + }, + { + "nodeId": "1123", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1385", + "childIds": ["-1000000934"], + "backendDOMNodeId": 1123 + }, + { + "nodeId": "1124", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install VSCode or Cursor" + } + } + ] + }, + "properties": [], + "parentId": "1385", + "childIds": ["-1000000933"], + "backendDOMNodeId": 1124 + }, + { + "nodeId": "1125", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000945"], + "backendDOMNodeId": 1125 + }, + { + "nodeId": "1126", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the skill:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the skill:" + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000936"], + "backendDOMNodeId": 1126 + }, + { + "nodeId": "1127", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000937"], + "backendDOMNodeId": 1127 + }, + { + "nodeId": "1387", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["1128"], + "backendDOMNodeId": 1387 + }, + { + "nodeId": "1129", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000939"], + "backendDOMNodeId": 1129 + }, + { + "nodeId": "1130", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(see" + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000940"], + "backendDOMNodeId": 1130 + }, + { + "nodeId": "1131", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000941"], + "backendDOMNodeId": 1131 + }, + { + "nodeId": "1389", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "https://github.com/koji/protocol-fix-loop" + } + } + ], + "parentId": "1386", + "childIds": ["1132"], + "backendDOMNodeId": 1389 + }, + { + "nodeId": "1133", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1386", + "childIds": ["-1000000944"], + "backendDOMNodeId": 1133 + }, + { + "nodeId": "1134", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1390", + "childIds": ["-1000000951"], + "backendDOMNodeId": 1134 + }, + { + "nodeId": "1135", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + } + } + ] + }, + "properties": [], + "parentId": "1390", + "childIds": ["-1000000947"], + "backendDOMNodeId": 1135 + }, + { + "nodeId": "1136", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1390", + "childIds": ["-1000000948"], + "backendDOMNodeId": 1136 + }, + { + "nodeId": "1391", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "url", + "value": { + "type": "string", + "value": "http://127.0.0.1:5181/#install" + } + } + ], + "parentId": "1390", + "childIds": ["1137"], + "backendDOMNodeId": 1391 + }, + { + "nodeId": "1138", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1390", + "childIds": ["-1000000950"], + "backendDOMNodeId": 1138 + }, + { + "nodeId": "1139", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "4. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "4. " + } + } + ] + }, + "properties": [], + "parentId": "1392", + "childIds": ["-1000000956"], + "backendDOMNodeId": 1139 + }, + { + "nodeId": "1140", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Use ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Use " + } + } + ] + }, + "properties": [], + "parentId": "1392", + "childIds": ["-1000000953"], + "backendDOMNodeId": 1140 + }, + { + "nodeId": "1393", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1392", + "childIds": ["1141"], + "backendDOMNodeId": 1393 + }, + { + "nodeId": "1142", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + } + } + ] + }, + "properties": [], + "parentId": "1392", + "childIds": ["-1000000955"], + "backendDOMNodeId": 1142 + }, + { + "nodeId": "-1000000800", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "1143", + "childIds": [] + }, + { + "nodeId": "-1000000801", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access via our form — requests are handled individually." + }, + "properties": [], + "parentId": "1144", + "childIds": [] + }, + { + "nodeId": "-1000000802", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "1145", + "childIds": [] + }, + { + "nodeId": "-1000000803", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "1146", + "childIds": [] + }, + { + "nodeId": "-1000000804", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "1155", + "childIds": [] + }, + { + "nodeId": "1147", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["-1000000963"], + "backendDOMNodeId": 1147 + }, + { + "nodeId": "1407", + "ignored": false, + "role": { + "type": "role", + "value": "strong" + }, + "chromeRole": { + "type": "internalRole", + "value": 160 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["1156"], + "backendDOMNodeId": 1407 + }, + { + "nodeId": "1157", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ", with ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ", with " + } + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["-1000000959"], + "backendDOMNodeId": 1157 + }, + { + "nodeId": "1408", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["1158"], + "backendDOMNodeId": 1408 + }, + { + "nodeId": "1159", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["-1000000961"], + "backendDOMNodeId": 1159 + }, + { + "nodeId": "1160", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "available in PATH", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "available in PATH" + } + } + ] + }, + "properties": [], + "parentId": "1406", + "childIds": ["-1000000962"], + "backendDOMNodeId": 1160 + }, + { + "nodeId": "1148", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["-1000000972"], + "backendDOMNodeId": 1148 + }, + { + "nodeId": "1161", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The " + } + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["-1000000965"], + "backendDOMNodeId": 1161 + }, + { + "nodeId": "1410", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["1162"], + "backendDOMNodeId": 1410 + }, + { + "nodeId": "1163", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " Python package:", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " Python package:" + } + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["-1000000967", "-1000000968"], + "backendDOMNodeId": 1163 + }, + { + "nodeId": "1164", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["-1000000969"], + "backendDOMNodeId": 1164 + }, + { + "nodeId": "1411", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1409", + "childIds": ["1165"], + "backendDOMNodeId": 1411 + }, + { + "nodeId": "1149", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["-1000000981"], + "backendDOMNodeId": 1149 + }, + { + "nodeId": "1166", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "For OT-2 use" + } + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["-1000000974"], + "backendDOMNodeId": 1166 + }, + { + "nodeId": "1167", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["-1000000975"], + "backendDOMNodeId": 1167 + }, + { + "nodeId": "1413", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["1168"], + "backendDOMNodeId": 1413 + }, + { + "nodeId": "1169", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["-1000000978"], + "backendDOMNodeId": 1169 + }, + { + "nodeId": "1170", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "(opentrons 9.1.0+ dropped OT-2 support)" + } + } + ] + }, + "properties": [], + "parentId": "1412", + "childIds": ["-1000000979", "-1000000980"], + "backendDOMNodeId": 1170 + }, + { + "nodeId": "1150", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1414", + "childIds": ["-1000000987"], + "backendDOMNodeId": 1150 + }, + { + "nodeId": "1171", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select the matching Python interpreter in VSCode via" + } + } + ] + }, + "properties": [], + "parentId": "1414", + "childIds": ["-1000000983", "-1000000984"], + "backendDOMNodeId": 1171 + }, + { + "nodeId": "1442", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1414", + "childIds": [], + "backendDOMNodeId": 1442 + }, + { + "nodeId": "1415", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1414", + "childIds": ["1172"], + "backendDOMNodeId": 1415 + }, + { + "nodeId": "1151", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "• ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "• " + } + } + ] + }, + "properties": [], + "parentId": "1416", + "childIds": ["-1000000993"], + "backendDOMNodeId": 1151 + }, + { + "nodeId": "1173", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep them in a separate virtual environment each and switch per protocol." + } + } + ] + }, + "properties": [], + "parentId": "1416", + "childIds": ["-1000000989", "-1000000990", "-1000000991", "-1000000992"], + "backendDOMNodeId": 1173 + }, + { + "nodeId": "1174", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method A: Command Palette" + } + } + ] + }, + "properties": [], + "parentId": "1418", + "childIds": ["-1000000832"], + "backendDOMNodeId": 1174 + }, + { + "nodeId": "1420", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1419", + "childIds": ["1152", "1175", "1176", "1177", "1178", "1179", "1180"], + "backendDOMNodeId": 1420 + }, + { + "nodeId": "1423", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1419", + "childIds": ["1153", "1181", "1424"], + "backendDOMNodeId": 1423 + }, + { + "nodeId": "1425", + "ignored": false, + "role": { + "type": "role", + "value": "listitem" + }, + "chromeRole": { + "type": "internalRole", + "value": 115 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "attribute", + "attribute": "title" + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "1419", + "childIds": ["1154", "1183", "1426", "1185"], + "backendDOMNodeId": 1425 + }, + { + "nodeId": "1186", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Method B: Command line" + } + } + ] + }, + "properties": [], + "parentId": "1428", + "childIds": ["-1000000846"], + "backendDOMNodeId": 1186 + }, + { + "nodeId": "1430", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1429", + "childIds": ["1187"], + "backendDOMNodeId": 1430 + }, + { + "nodeId": "-1000000850", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "1190", + "childIds": [] + }, + { + "nodeId": "1262", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1261", + "childIds": ["1103"], + "backendDOMNodeId": 1262 + }, + { + "nodeId": "1263", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1261", + "childIds": ["1104"], + "backendDOMNodeId": 1263 + }, + { + "nodeId": "1266", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1265", + "childIds": ["1105"], + "backendDOMNodeId": 1266 + }, + { + "nodeId": "1267", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1265", + "childIds": ["1106"], + "backendDOMNodeId": 1267 + }, + { + "nodeId": "1270", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1269", + "childIds": ["1107"], + "backendDOMNodeId": 1270 + }, + { + "nodeId": "1271", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1269", + "childIds": ["1108"], + "backendDOMNodeId": 1271 + }, + { + "nodeId": "1274", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1273", + "childIds": ["1109"], + "backendDOMNodeId": 1274 + }, + { + "nodeId": "1275", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1273", + "childIds": ["1110"], + "backendDOMNodeId": 1275 + }, + { + "nodeId": "1278", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1277", + "childIds": ["1111"], + "backendDOMNodeId": 1278 + }, + { + "nodeId": "1279", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1277", + "childIds": ["1112"], + "backendDOMNodeId": 1279 + }, + { + "nodeId": "1282", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "1281", + "childIds": ["1113"], + "backendDOMNodeId": 1282 + }, + { + "nodeId": "1283", + "ignored": false, + "role": { + "type": "role", + "value": "paragraph" + }, + "chromeRole": { + "type": "internalRole", + "value": 133 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1281", + "childIds": ["1114"], + "backendDOMNodeId": 1283 + }, + { + "nodeId": "-1000000773", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Visualizer in action" + }, + "properties": [], + "parentId": "1115", + "childIds": [] + }, + { + "nodeId": "-1000000777", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "1119", + "childIds": [] + }, + { + "nodeId": "1298", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1296", + "childIds": ["1299"], + "backendDOMNodeId": 1298 + }, + { + "nodeId": "1306", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1305", + "childIds": [], + "backendDOMNodeId": 1306 + }, + { + "nodeId": "1311", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "play", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "play" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "play" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "1310", + "childIds": ["1312"], + "backendDOMNodeId": 1311 + }, + { + "nodeId": "1315", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1310", + "childIds": [], + "backendDOMNodeId": 1315 + }, + { + "nodeId": "1316", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1310", + "childIds": ["1317", "1318", "1325"], + "backendDOMNodeId": 1316 + }, + { + "nodeId": "1326", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "enter full screen", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "enter full screen" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "enter full screen" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "1310", + "childIds": ["1327"], + "backendDOMNodeId": 1326 + }, + { + "nodeId": "1328", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 137 + }, + "name": { + "type": "computedString", + "value": "show more media controls", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "show more media controls" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "show more media controls" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "more options" + }, + "attribute": "title", + "attributeValue": { + "type": "string", + "value": "more options" + }, + "superseded": true + } + ] + }, + "description": { + "type": "computedString", + "value": "more options" + }, + "properties": [ + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + }, + { + "name": "hasPopup", + "value": { + "type": "token", + "value": "menu" + } + } + ], + "parentId": "1310", + "childIds": ["1329"], + "backendDOMNodeId": 1328 + }, + { + "nodeId": "-1000000781", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate a protocol from a prompt, then fix it while watching the simulation" + }, + "properties": [], + "parentId": "1121", + "childIds": [] + }, + { + "nodeId": "-1000000934", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1123", + "childIds": [] + }, + { + "nodeId": "-1000000933", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "1124", + "childIds": [] + }, + { + "nodeId": "-1000000945", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1125", + "childIds": [] + }, + { + "nodeId": "-1000000936", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "1126", + "childIds": [] + }, + { + "nodeId": "-1000000937", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1127", + "childIds": [] + }, + { + "nodeId": "1128", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1387", + "childIds": ["-1000000938"], + "backendDOMNodeId": 1128 + }, + { + "nodeId": "-1000000939", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1129", + "childIds": [] + }, + { + "nodeId": "-1000000940", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "1130", + "childIds": [] + }, + { + "nodeId": "-1000000941", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1131", + "childIds": [] + }, + { + "nodeId": "1132", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1389", + "childIds": ["-1000000942", "-1000000943"], + "backendDOMNodeId": 1132 + }, + { + "nodeId": "-1000000944", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1133", + "childIds": [] + }, + { + "nodeId": "-1000000951", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1134", + "childIds": [] + }, + { + "nodeId": "-1000000947", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Visualizer extension (see" + }, + "properties": [], + "parentId": "1135", + "childIds": [] + }, + { + "nodeId": "-1000000948", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1136", + "childIds": [] + }, + { + "nodeId": "1137", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Installation guide", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Installation guide" + } + } + ] + }, + "properties": [], + "parentId": "1391", + "childIds": ["-1000000949"], + "backendDOMNodeId": 1137 + }, + { + "nodeId": "-1000000950", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1138", + "childIds": [] + }, + { + "nodeId": "-1000000956", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1139", + "childIds": [] + }, + { + "nodeId": "-1000000953", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "1140", + "childIds": [] + }, + { + "nodeId": "1141", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "/protocol-fix-loop" + } + } + ] + }, + "properties": [], + "parentId": "1393", + "childIds": ["-1000000954"], + "backendDOMNodeId": 1141 + }, + { + "nodeId": "-1000000955", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " in chat and add your prompt to generate a protocol" + }, + "properties": [], + "parentId": "1142", + "childIds": [] + }, + { + "nodeId": "-1000000963", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1147", + "childIds": [] + }, + { + "nodeId": "1156", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python 3.8 or later" + } + } + ] + }, + "properties": [], + "parentId": "1407", + "childIds": ["-1000000958"], + "backendDOMNodeId": 1156 + }, + { + "nodeId": "-1000000959", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", with " + }, + "properties": [], + "parentId": "1157", + "childIds": [] + }, + { + "nodeId": "1158", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "python3", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "python3" + } + } + ] + }, + "properties": [], + "parentId": "1408", + "childIds": ["-1000000960"], + "backendDOMNodeId": 1158 + }, + { + "nodeId": "-1000000961", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1159", + "childIds": [] + }, + { + "nodeId": "-1000000962", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "1160", + "childIds": [] + }, + { + "nodeId": "-1000000972", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1148", + "childIds": [] + }, + { + "nodeId": "-1000000965", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "1161", + "childIds": [] + }, + { + "nodeId": "1162", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1410", + "childIds": ["-1000000966"], + "backendDOMNodeId": 1162 + }, + { + "nodeId": "-1000000967", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " Python " + }, + "properties": [], + "parentId": "1163", + "childIds": [] + }, + { + "nodeId": "-1000000968", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "package:" + }, + "properties": [], + "parentId": "1163", + "childIds": [] + }, + { + "nodeId": "-1000000969", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1164", + "childIds": [] + }, + { + "nodeId": "1165", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons" + } + } + ] + }, + "properties": [], + "parentId": "1411", + "childIds": ["-1000000970", "-1000000971"], + "backendDOMNodeId": 1165 + }, + { + "nodeId": "-1000000981", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1149", + "childIds": [] + }, + { + "nodeId": "-1000000974", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "1166", + "childIds": [] + }, + { + "nodeId": "-1000000975", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1167", + "childIds": [] + }, + { + "nodeId": "1168", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "pip install opentrons==9.0.0", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "pip install opentrons==9.0.0" + } + } + ] + }, + "properties": [], + "parentId": "1413", + "childIds": ["-1000000976", "-1000000977"], + "backendDOMNodeId": 1168 + }, + { + "nodeId": "-1000000978", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1169", + "childIds": [] + }, + { + "nodeId": "-1000000979", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons " + }, + "properties": [], + "parentId": "1170", + "childIds": [] + }, + { + "nodeId": "-1000000980", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "9.1.0+ dropped OT-2 support)" + }, + "properties": [], + "parentId": "1170", + "childIds": [] + }, + { + "nodeId": "-1000000987", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1150", + "childIds": [] + }, + { + "nodeId": "-1000000983", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching Python " + }, + "properties": [], + "parentId": "1171", + "childIds": [] + }, + { + "nodeId": "-1000000984", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "interpreter in VSCode via" + }, + "properties": [], + "parentId": "1171", + "childIds": [] + }, + { + "nodeId": "1172", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Python: Select Interpreter", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Python: Select Interpreter" + } + } + ] + }, + "properties": [], + "parentId": "1415", + "childIds": ["-1000000985", "-1000000986"], + "backendDOMNodeId": 1172 + }, + { + "nodeId": "-1000000993", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1151", + "childIds": [] + }, + { + "nodeId": "-1000000989", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and OT-2? Keep " + }, + "properties": [], + "parentId": "1173", + "childIds": [] + }, + { + "nodeId": "-1000000990", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them in a separate virtual " + }, + "properties": [], + "parentId": "1173", + "childIds": [] + }, + { + "nodeId": "-1000000991", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and switch " + }, + "properties": [], + "parentId": "1173", + "childIds": [] + }, + { + "nodeId": "-1000000992", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "per protocol." + }, + "properties": [], + "parentId": "1173", + "childIds": [] + }, + { + "nodeId": "-1000000832", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command Palette" + }, + "properties": [], + "parentId": "1174", + "childIds": [] + }, + { + "nodeId": "1152", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "1. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "1. " + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000001002"], + "backendDOMNodeId": 1152 + }, + { + "nodeId": "1175", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette (", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Open the Command Palette (" + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000000995", "-1000000996"], + "backendDOMNodeId": 1175 + }, + { + "nodeId": "1176", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Cmd+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000000997"], + "backendDOMNodeId": 1176 + }, + { + "nodeId": "1177", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " /", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " /" + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000000998"], + "backendDOMNodeId": 1177 + }, + { + "nodeId": "1178", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " " + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000000999"], + "backendDOMNodeId": 1178 + }, + { + "nodeId": "1179", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Ctrl+Shift+P" + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000001000"], + "backendDOMNodeId": 1179 + }, + { + "nodeId": "1180", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ")", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ")" + } + } + ] + }, + "properties": [], + "parentId": "1420", + "childIds": ["-1000001001"], + "backendDOMNodeId": 1180 + }, + { + "nodeId": "1153", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "2. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "2. " + } + } + ] + }, + "properties": [], + "parentId": "1423", + "childIds": ["-1000001007"], + "backendDOMNodeId": 1153 + }, + { + "nodeId": "1181", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Select ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Select " + } + } + ] + }, + "properties": [], + "parentId": "1423", + "childIds": ["-1000001004"], + "backendDOMNodeId": 1181 + }, + { + "nodeId": "1424", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1423", + "childIds": ["1182"], + "backendDOMNodeId": 1424 + }, + { + "nodeId": "1154", + "ignored": false, + "role": { + "type": "internalRole", + "value": "ListMarker" + }, + "chromeRole": { + "type": "internalRole", + "value": 116 + }, + "name": { + "type": "computedString", + "value": "3. ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "3. " + } + } + ] + }, + "properties": [], + "parentId": "1425", + "childIds": ["-1000001012"], + "backendDOMNodeId": 1154 + }, + { + "nodeId": "1183", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded ", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Choose the downloaded " + } + } + ] + }, + "properties": [], + "parentId": "1425", + "childIds": ["-1000001009"], + "backendDOMNodeId": 1183 + }, + { + "nodeId": "1426", + "ignored": false, + "role": { + "type": "role", + "value": "code" + }, + "chromeRole": { + "type": "internalRole", + "value": 16 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1425", + "childIds": ["1184"], + "backendDOMNodeId": 1426 + }, + { + "nodeId": "1185", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": " file", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": " file" + } + } + ] + }, + "properties": [], + "parentId": "1425", + "childIds": ["-1000001011"], + "backendDOMNodeId": 1185 + }, + { + "nodeId": "-1000000846", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "1186", + "childIds": [] + }, + { + "nodeId": "1187", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + } + } + ] + }, + "properties": [], + "parentId": "1430", + "childIds": ["-1000000847"], + "backendDOMNodeId": 1187 + }, + { + "nodeId": "1103", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Real-time Deck Visualization" + } + } + ] + }, + "properties": [], + "parentId": "1262", + "childIds": ["-1000000748"], + "backendDOMNodeId": 1103 + }, + { + "nodeId": "1104", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Deck state and liquid volume changes render in real time through an interactive panel while your protocol runs." + } + } + ] + }, + "properties": [], + "parentId": "1263", + "childIds": ["-1000000749", "-1000000750", "-1000000751"], + "backendDOMNodeId": 1104 + }, + { + "nodeId": "1105", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Auto-analysis on Save" + } + } + ] + }, + "properties": [], + "parentId": "1266", + "childIds": ["-1000000752"], + "backendDOMNodeId": 1105 + }, + { + "nodeId": "1106", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "The simulation automatically reruns whenever you save changes (Ctrl+S / Cmd+S) to your protocol file." + } + } + ] + }, + "properties": [], + "parentId": "1267", + "childIds": ["-1000000753", "-1000000754", "-1000000755"], + "backendDOMNodeId": 1106 + }, + { + "nodeId": "1107", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Runtime Parameters UI" + } + } + ] + }, + "properties": [], + "parentId": "1270", + "childIds": ["-1000000756"], + "backendDOMNodeId": 1107 + }, + { + "nodeId": "1108", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Opentrons Runtime Parameters; hit Analyze to apply them — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "1271", + "childIds": ["-1000000757", "-1000000758", "-1000000759", "-1000000760"], + "backendDOMNodeId": 1108 + }, + { + "nodeId": "1109", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Custom Labware Support" + } + } + ] + }, + "properties": [], + "parentId": "1274", + "childIds": ["-1000000761"], + "backendDOMNodeId": 1109 + }, + { + "nodeId": "1110", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place custom labware definition files (.json) in the same directory as your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "1275", + "childIds": ["-1000000762", "-1000000763", "-1000000764"], + "backendDOMNodeId": 1110 + }, + { + "nodeId": "1111", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out Window" + } + } + ] + }, + "properties": [], + "parentId": "1278", + "childIds": ["-1000000765"], + "backendDOMNodeId": 1111 + }, + { + "nodeId": "1112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop the panel out to its own window or drag the tab to another monitor via VSCode's Auxiliary Window support." + } + } + ] + }, + "properties": [], + "parentId": "1279", + "childIds": ["-1000000766", "-1000000767", "-1000000768"], + "backendDOMNodeId": 1112 + }, + { + "nodeId": "1113", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper" + } + } + ] + }, + "properties": [], + "parentId": "1282", + "childIds": ["-1000000769"], + "backendDOMNodeId": 1113 + }, + { + "nodeId": "1114", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly." + } + } + ] + }, + "properties": [], + "parentId": "1283", + "childIds": ["-1000000770", "-1000000771", "-1000000772"], + "backendDOMNodeId": 1114 + }, + { + "nodeId": "1299", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1298", + "childIds": ["1300"], + "backendDOMNodeId": 1299 + }, + { + "nodeId": "1300", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1299", + "childIds": ["1301", "1303"], + "backendDOMNodeId": 1300 + }, + { + "nodeId": "1312", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1311", + "childIds": [], + "backendDOMNodeId": 1312 + }, + { + "nodeId": "1317", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1316", + "childIds": [], + "backendDOMNodeId": 1317 + }, + { + "nodeId": "1318", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1316", + "childIds": [], + "backendDOMNodeId": 1318 + }, + { + "nodeId": "1325", + "ignored": false, + "role": { + "type": "role", + "value": "button" + }, + "chromeRole": { + "type": "internalRole", + "value": 9 + }, + "name": { + "type": "computedString", + "value": "mute", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "mute" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "mute" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "value", + "superseded": true + }, + { + "type": "contents", + "superseded": true + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "disabled", + "value": { + "type": "boolean", + "value": true + } + }, + { + "name": "invalid", + "value": { + "type": "token", + "value": "false" + } + } + ], + "parentId": "1316", + "childIds": [], + "backendDOMNodeId": 1325 + }, + { + "nodeId": "1327", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1326", + "childIds": [], + "backendDOMNodeId": 1327 + }, + { + "nodeId": "1329", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1328", + "childIds": [], + "backendDOMNodeId": 1329 + }, + { + "nodeId": "-1000000938", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "npx skills add koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "1128", + "childIds": [] + }, + { + "nodeId": "-1000000942", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-" + }, + "properties": [], + "parentId": "1132", + "childIds": [] + }, + { + "nodeId": "-1000000943", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "loop" + }, + "properties": [], + "parentId": "1132", + "childIds": [] + }, + { + "nodeId": "-1000000949", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "1137", + "childIds": [] + }, + { + "nodeId": "-1000000954", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "1141", + "childIds": [] + }, + { + "nodeId": "-1000000958", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "1156", + "childIds": [] + }, + { + "nodeId": "-1000000960", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "1158", + "childIds": [] + }, + { + "nodeId": "-1000000966", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "1162", + "childIds": [] + }, + { + "nodeId": "-1000000970", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "1165", + "childIds": [] + }, + { + "nodeId": "-1000000971", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "1165", + "childIds": [] + }, + { + "nodeId": "-1000000976", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip install " + }, + "properties": [], + "parentId": "1168", + "childIds": [] + }, + { + "nodeId": "-1000000977", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "1168", + "childIds": [] + }, + { + "nodeId": "-1000000985", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: Select " + }, + "properties": [], + "parentId": "1172", + "childIds": [] + }, + { + "nodeId": "-1000000986", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "1172", + "childIds": [] + }, + { + "nodeId": "-1000001002", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1152", + "childIds": [] + }, + { + "nodeId": "-1000000995", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command Palette " + }, + "properties": [], + "parentId": "1175", + "childIds": [] + }, + { + "nodeId": "-1000000996", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(" + }, + "properties": [], + "parentId": "1175", + "childIds": [] + }, + { + "nodeId": "-1000000997", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "1176", + "childIds": [] + }, + { + "nodeId": "-1000000998", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " /" + }, + "properties": [], + "parentId": "1177", + "childIds": [] + }, + { + "nodeId": "-1000000999", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "1178", + "childIds": [] + }, + { + "nodeId": "-1000001000", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "1179", + "childIds": [] + }, + { + "nodeId": "-1000001001", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "1180", + "childIds": [] + }, + { + "nodeId": "-1000001007", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1153", + "childIds": [] + }, + { + "nodeId": "-1000001004", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "1181", + "childIds": [] + }, + { + "nodeId": "1182", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install from VSIX...", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Extensions: Install from VSIX..." + } + } + ] + }, + "properties": [], + "parentId": "1424", + "childIds": ["-1000001005", "-1000001006"], + "backendDOMNodeId": 1182 + }, + { + "nodeId": "-1000001012", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "1154", + "childIds": [] + }, + { + "nodeId": "-1000001009", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the downloaded " + }, + "properties": [], + "parentId": "1183", + "childIds": [] + }, + { + "nodeId": "1184", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": ".vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": ".vsix" + } + } + ] + }, + "properties": [], + "parentId": "1426", + "childIds": ["-1000001010"], + "backendDOMNodeId": 1184 + }, + { + "nodeId": "-1000001011", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "file" + }, + "properties": [], + "parentId": "1185", + "childIds": [] + }, + { + "nodeId": "-1000000847", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-visualizer.vsix" + }, + "properties": [], + "parentId": "1187", + "childIds": [] + }, + { + "nodeId": "-1000000748", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Real-time Deck Visualization" + }, + "properties": [], + "parentId": "1103", + "childIds": [] + }, + { + "nodeId": "-1000000749", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Deck state and liquid volume changes " + }, + "properties": [], + "parentId": "1104", + "childIds": [] + }, + { + "nodeId": "-1000000750", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "render in real time through an interactive " + }, + "properties": [], + "parentId": "1104", + "childIds": [] + }, + { + "nodeId": "-1000000751", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "panel while your protocol runs." + }, + "properties": [], + "parentId": "1104", + "childIds": [] + }, + { + "nodeId": "-1000000752", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Auto-analysis on Save" + }, + "properties": [], + "parentId": "1105", + "childIds": [] + }, + { + "nodeId": "-1000000753", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The simulation automatically reruns " + }, + "properties": [], + "parentId": "1106", + "childIds": [] + }, + { + "nodeId": "-1000000754", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "whenever you save changes (Ctrl+S / " + }, + "properties": [], + "parentId": "1106", + "childIds": [] + }, + { + "nodeId": "-1000000755", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+S) to your protocol file." + }, + "properties": [], + "parentId": "1106", + "childIds": [] + }, + { + "nodeId": "-1000000756", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "1107", + "childIds": [] + }, + { + "nodeId": "-1000000757", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Opentrons " + }, + "properties": [], + "parentId": "1108", + "childIds": [] + }, + { + "nodeId": "-1000000758", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters; hit Analyze to apply " + }, + "properties": [], + "parentId": "1108", + "childIds": [] + }, + { + "nodeId": "-1000000759", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "them — your original code is never " + }, + "properties": [], + "parentId": "1108", + "childIds": [] + }, + { + "nodeId": "-1000000760", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "modified." + }, + "properties": [], + "parentId": "1108", + "childIds": [] + }, + { + "nodeId": "-1000000761", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "1109", + "childIds": [] + }, + { + "nodeId": "-1000000762", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place custom labware definition files (.json) " + }, + "properties": [], + "parentId": "1110", + "childIds": [] + }, + { + "nodeId": "-1000000763", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "in the same directory as your protocol file " + }, + "properties": [], + "parentId": "1110", + "childIds": [] + }, + { + "nodeId": "-1000000764", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and they just work." + }, + "properties": [], + "parentId": "1110", + "childIds": [] + }, + { + "nodeId": "-1000000765", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out Window" + }, + "properties": [], + "parentId": "1111", + "childIds": [] + }, + { + "nodeId": "-1000000766", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop the panel out to its own window or " + }, + "properties": [], + "parentId": "1112", + "childIds": [] + }, + { + "nodeId": "-1000000767", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "drag the tab to another monitor via " + }, + "properties": [], + "parentId": "1112", + "childIds": [] + }, + { + "nodeId": "-1000000768", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "1112", + "childIds": [] + }, + { + "nodeId": "-1000000769", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper" + }, + "properties": [], + "parentId": "1113", + "childIds": [] + }, + { + "nodeId": "-1000000770", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps " + }, + "properties": [], + "parentId": "1114", + "childIds": [] + }, + { + "nodeId": "-1000000771", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "and hit Enter to jump the visualization state " + }, + "properties": [], + "parentId": "1114", + "childIds": [] + }, + { + "nodeId": "-1000000772", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "instantly." + }, + "properties": [], + "parentId": "1114", + "childIds": [] + }, + { + "nodeId": "1301", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1300", + "childIds": ["1302"], + "backendDOMNodeId": 1301 + }, + { + "nodeId": "1303", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1300", + "childIds": ["1304"], + "backendDOMNodeId": 1303 + }, + { + "nodeId": "-1000001005", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: Install " + }, + "properties": [], + "parentId": "1182", + "childIds": [] + }, + { + "nodeId": "-1000001006", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "from VSIX..." + }, + "properties": [], + "parentId": "1182", + "childIds": [] + }, + { + "nodeId": "-1000001010", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "1184", + "childIds": [] + }, + { + "nodeId": "1302", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1301", + "childIds": [], + "backendDOMNodeId": 1302 + }, + { + "nodeId": "1304", + "ignored": false, + "role": { + "type": "role", + "value": "generic" + }, + "chromeRole": { + "type": "internalRole", + "value": 88 + }, + "name": { + "type": "computedString", + "value": "", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + } + ] + }, + "properties": [], + "parentId": "1303", + "childIds": [], + "backendDOMNodeId": 1304 + } +] diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/dom.html b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/dom.html new file mode 100644 index 0000000..ad39db5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/dom.html @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + Protocol Visualizer — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Visualizer

+ Preview +
+

+ Simulate your Opentrons Python protocols and inspect deck + layout and liquid volumes in real time — without leaving + VSCode. +

+ +
+ +
+
+
+
+

+ Everything you need to see your protocol run +

+
    +
  • +
    +

    + Real-time Deck Visualization +

    +

    + Deck state and liquid volume changes render in real time + through an interactive panel while your protocol runs. +

    +
    +
  • +
  • +
    +

    Auto-analysis on Save

    +

    + The simulation automatically reruns whenever you save + changes (Ctrl+S / Cmd+S) to your protocol file. +

    +
    +
  • +
  • +
    +

    Runtime Parameters UI

    +

    + Input fields are generated for Opentrons Runtime + Parameters; hit Analyze to apply them — your original code + is never modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place custom labware definition files (.json) in the same + directory as your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out Window

    +

    + Pop the panel out to its own window or drag the tab to + another monitor via VSCode's Auxiliary Window support. +

    +
    +
  • +
  • +
    +

    Step Jumper

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly. +

    +
    +
  • +
+
+
+
+
+
+ Protocol Visualizer visualizing an Opentrons protocol on a simulated deck +
+ Protocol Visualizer in action +
+
+
+
+
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with + protocol-fix-loop. Generate Opentrons protocols with GitHub Copilot or Cursor, + then simulate and fix them in a visual feedback loop. +

+
+ +
+ Generate a protocol from a prompt, then fix it while watching + the simulation +
+
+

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill: + npx skills add koji/protocol-fix-loop + (see + koji/protocol-fix-loop) +
  4. +
  5. + Install the Protocol Visualizer extension (see + Installation guide) +
  6. +
  7. + Use + /protocol-fix-loop + in chat and add your prompt to generate a protocol +
  8. +
+
+
+
+
+

Want to try the extension?

+

+ Request access via our form — requests are handled individually. +

+ Request access +
+
+
+
+

Installation

+
+
+

Prerequisites

+
    +
  • + Python 3.8 or later, with + python3 available in PATH +
  • +
  • + The opentrons Python package: + pip install opentrons +
  • +
  • + For OT-2 use + pip install opentrons==9.0.0 + (opentrons 9.1.0+ dropped OT-2 support) +
  • +
  • + Select the matching Python interpreter in VSCode via + Python: Select Interpreter +
  • +
  • + Using both Flex and OT-2? Keep them in a separate virtual + environment each and switch per protocol. +
  • +
+
+
+

+ Method A: Command Palette +

+
    +
  1. + Open the Command Palette (Cmd+Shift+P / + Ctrl+Shift+P) +
  2. +
  3. + Select Extensions: Install from VSIX... +
  4. +
  5. Choose the downloaded .vsix file
  6. +
+
+
+

Method B: Command line

+
code --install-extension protocol-visualizer.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/result.json b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/result.json new file mode 100644 index 0000000..ab1f1c5 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/result.json @@ -0,0 +1,37 @@ +{ + "feature": "theme-toggle", + "url": "http://127.0.0.1:5181/", + "passed": 3, + "total": 3, + "ok": true, + "checks": [ + { + "id": "toggle-present", + "pass": true, + "value": "Switch to light theme", + "error": null + }, + { + "id": "toggle-flips-theme", + "pass": true, + "value": { + "before": "dark", + "after": "light", + "stored": "light" + }, + "error": null + }, + { + "id": "toggle-restores", + "pass": true, + "value": { + "theme": "dark", + "stored": "dark", + "label": "Switch to light theme", + "flipped": "light" + }, + "error": null + } + ], + "finishedAt": "2026-09-16T07:56:16.174Z" +} diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/screenshot.png b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/screenshot.png new file mode 100644 index 0000000..3fb5fd2 Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/vite-server.log b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/vite-server.log new file mode 100644 index 0000000..c7dbace --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/vite-server.log @@ -0,0 +1,13 @@ + + VITE v8.2.2 ready in 192 ms + + ➜ Local: http://127.0.0.1:5181/ +3:56:10 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/dom.html +3:56:10 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/hero/dom.html +3:56:12 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/dom.html +3:56:12 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/features-grid/dom.html +3:56:13 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/dom.html +3:56:13 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/ai-workflow/dom.html +3:56:16 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/theme-toggle/dom.html +3:56:17 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/dom.html +3:56:17 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/2026-09-16T07-56-03-875Z/install-guide/dom.html diff --git a/.opencode/skills/verify-web/features/README.md b/.opencode/skills/verify-web/features/README.md new file mode 100644 index 0000000..32dbd84 --- /dev/null +++ b/.opencode/skills/verify-web/features/README.md @@ -0,0 +1,47 @@ +# protocol-visualizer-web verification map + +This directory is the maintained source for verifying the user-facing behavior of the Protocol Visualizer landing page. Read this index before driving the app, then use the matching feature file as the recipe. + +## Baseline preconditions + +- Serve the app at `http://127.0.0.1:5173` (or `$VERIFY_PORT`) via `scripts/verify.mjs`, which owns the server for the run. +- Run `scripts/doctor.mjs` against the URL and require `"ok": true` before driving. +- Each drive uses a fresh Chromium profile; `localStorage` starts empty and the color theme starts from the browser default. +- Never drive an instance that was not started by this verification run. + +## Driving conventions + +- Start every recipe from a fresh page load unless its preconditions say otherwise. +- Prefer ARIA roles and accessible names over CSS selectors or DOM position. +- Treat every command as literal. Keep quoted names, URLs, and flags unchanged. +- Run browser actions through `scripts/drive.mjs --feature `. +- The theme-toggle recipe restores the original theme. Do not remove proof artifacts during cleanup. + +## Proof and skip reporting + +- Capture the user action and the resulting state, not only the final screen. +- UI proof includes the rendered DOM, the accessibility tree, and a screenshot with the app identity visible. +- State-change proof (theme toggle) includes the before/after values plus the persisted value (`localStorage`). +- Mutation proof restores the prior state in-page (theme is clicked back). +- Record the feature ID and entry point used with every artifact. +- Report an unreachable path with the attempted command and the unmet precondition. +- Do not report a skipped entry point as verified through a different path. + +## Feature entry contract + +Each feature file starts with an H1 title and one paragraph describing the user-visible behavior. It then uses exactly four H2 sections in this order. + +1. `Sub-features` lists short IDs with one line for each behavior. +2. `How to get to it (user POV)` lists every user entry point. +3. `Driving it with drive.mjs` starts with `Preconditions:` and uses labeled bullets that pair each user action with an exact command and observable result. +4. `Gotchas` lists traps that can waste or invalidate a verification run. + +Keep implementation details out of the map. Name only user paths, stable handles, required state, commands, and observable proof. + +## Features + +- [Hero](./hero.md) covers headline, tagline, request-access CTAs, and the install-guide link. +- [Features grid](./features-grid.md) covers the six feature cards under "Everything you need to see your protocol run". +- [AI workflow](./ai-workflow.md) covers the protocol-fix-loop video, skill command, and repo links. +- [Theme toggle](./theme-toggle.md) covers dark/light switching and persistence. +- [Install guide](./install-guide.md) covers prerequisites, install methods, and header anchor navigation. diff --git a/.opencode/skills/verify-web/features/ai-workflow.md b/.opencode/skills/verify-web/features/ai-workflow.md new file mode 100644 index 0000000..1e3a2c8 --- /dev/null +++ b/.opencode/skills/verify-web/features/ai-workflow.md @@ -0,0 +1,36 @@ +# AI workflow + +AI workflow shows how `protocol-fix-loop` connects Protocol Visualizer to an LLM: an intro paragraph naming GitHub Copilot and Cursor, a demo video, and a four-step `How to use` list with the skill install command and the `/protocol-fix-loop` chat command. + +## Sub-features + +- `ai-intro` links `protocol-fix-loop` to the skill repo and names Copilot/Cursor. +- `ai-video` embeds the demo video with controls. +- `ai-howto` lists install-editor, install-skill, install-extension, run-command steps. +- `ai-links` cross-links the skill repo and the page's installation guide. + +## How to get to it (user POV) + +- Scroll to `Generate protocols with AI, verify with Protocol Visualizer` on `/` (between the features grid and the screenshot). +- Choose the `protocol-fix-loop` link to open `https://github.com/koji/protocol-fix-loop` in a new tab. +- Choose the `Installation guide` link in step 3 to jump to `#install`. + +## Driving it with drive.mjs + +Preconditions: + +- Doctor reports `"ok": true` at the run URL. +- Fresh page load; no prior interaction. + +- **Region.** Find the section. Run `bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature ai-workflow --out `. A `section#ai-workflow` with accessible name `Generate protocols with AI` exists. +- **Heading.** Read the section heading. The run asserts it contains `Generate protocols with AI`. +- **Video.** Inspect the player. The run asserts a `video` whose `src` is exactly `https://github.com/user-attachments/assets/812fbcdf-a84a-49fd-b631-ae925b64dddf` with `controls`. +- **Commands.** Read the steps. The run asserts the text contains `npx skills add koji/protocol-fix-loop` and `/protocol-fix-loop`. +- **Links.** Follow the references. The run asserts at least one link to `https://github.com/koji/protocol-fix-loop` and one link to `#install`. +- **Proof.** Inspect the artifacts. `/screenshot.png` shows the video and steps, `/dom.html` contains both commands, `/result.json` records all seven checks passing. + +## Gotchas + +- The video is remote media; the file asserts the `src` attribute and `controls`, it does not play the stream. A missing network still passes as long as the markup is correct. +- `/protocol-fix-loop` is a substring of the install command context too. The steps list must contain both the `npx skills add ...` line and the standalone chat command. +- External repo links open in a new tab (`target="_blank"`). The drive does not follow them; it asserts `href` values only. diff --git a/.opencode/skills/verify-web/features/features-grid.md b/.opencode/skills/verify-web/features/features-grid.md new file mode 100644 index 0000000..c786f18 --- /dev/null +++ b/.opencode/skills/verify-web/features/features-grid.md @@ -0,0 +1,31 @@ +# Features grid + +Features grid lists the six capability cards under the heading `Everything you need to see your protocol run`, each with a title and a one-paragraph description. + +## Sub-features + +- `features-heading` names the section's promise. +- `features-cards` renders all six cards with titles and descriptions. + +## How to get to it (user POV) + +- Scroll to `Everything you need to see your protocol run` on `/`. +- Choose `Features` in the header section navigation (jumps to `#features`). + +## Driving it with drive.mjs + +Preconditions: + +- Doctor reports `"ok": true` at the run URL. +- Fresh page load; no prior interaction. + +- **Region.** Find the section. Run `bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature features-grid --out `. A `section#features` with accessible name `Features` exists. +- **Heading.** Read the section heading. The run asserts it equals `Everything you need to see your protocol run`. +- **Cards.** Count and name the cards. The run asserts exactly 6 `article` elements whose `h3` titles are `Real-time Deck Visualization`, `Auto-analysis on Save`, `Runtime Parameters UI`, `Custom Labware Support`, `Pop-out Window`, and `Step Jumper`. +- **Proof.** Inspect the artifacts. `/screenshot.png` shows the grid, `/axtree.json` exposes the six headings, `/result.json` records all three checks passing. + +## Gotchas + +- The grid collapses to 2 columns under 1024px and 1 column under 768px. Card count stays 6; assert count, not layout. +- Card hover lifts the card (`translateY`). Screenshots may differ on hover; capture without hovering. +- Titles are exact strings. `Runtime Parameters UI` and `Step Jumper` are easy to mistype — copy them verbatim. diff --git a/.opencode/skills/verify-web/features/hero.md b/.opencode/skills/verify-web/features/hero.md new file mode 100644 index 0000000..185b250 --- /dev/null +++ b/.opencode/skills/verify-web/features/hero.md @@ -0,0 +1,35 @@ +# Hero + +Hero is the first screen: the `Protocol Visualizer` headline with `Preview` badge, the Opentrons tagline, `Request access` buttons, and a link down to the installation guide. + +## Sub-features + +- `hero-headline` shows the product name and status badge. +- `hero-tagline` states the Opentrons simulation value proposition. +- `hero-request-access` offers the access form link in hero, header, and try-CTA band. +- `hero-install-link` jumps to the installation guide. + +## How to get to it (user POV) + +- Load `/` and look at the top of the page. +- Choose the `Request access` link in the hero copy, the header, or the `Want to try the extension?` band. +- Choose the `Installation guide ↓` link under the tagline. + +## Driving it with drive.mjs + +Preconditions: + +- Doctor reports `"ok": true` at the run URL. +- Fresh page load; no prior interaction. + +- **Headline.** Load the page. Run `bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature hero --out `. The `h1` reads `Protocol Visualizer`. +- **Tagline.** Read the hero paragraph. The same run asserts it contains `Simulate your Opentrons`. +- **Request access.** Count the access links. The run asserts at least 3 links named `Request access` and every one targets `docs.google.com/forms`. +- **Install jump.** Follow `Installation guide ↓`. The run asserts one of the `#install` links (header nav also uses that href) reads `Installation guide`. +- **Proof.** Inspect the artifacts. `/screenshot.png` shows the headline and CTAs, `/dom.html` contains the tagline, `/result.json` records all four checks passing. + +## Gotchas + +- `Request access` appears 3+ times (header compact, hero, try-CTA). Asserting exactly one will fail; assert at least 3 with identical form hrefs. +- The install link text includes a `↓` arrow. Match by `href="#install"`, not exact text. +- The hero beaker visual is `aria-hidden`. Do not assert on it; it is decorative. diff --git a/.opencode/skills/verify-web/features/install-guide.md b/.opencode/skills/verify-web/features/install-guide.md new file mode 100644 index 0000000..7b540c0 --- /dev/null +++ b/.opencode/skills/verify-web/features/install-guide.md @@ -0,0 +1,36 @@ +# Install guide + +Install guide documents prerequisites (Python, `opentrons` package, OT-2 pin, interpreter selection) and the two extension install methods (Command Palette, `code --install-extension`). The header section navigation jumps to it and to the features grid. + +## Sub-features + +- `install-prereqs` lists the Python/opentrons prerequisites. +- `install-cli-method` shows the `code --install-extension` command. +- `header-nav` links `Features` and `Install` to their anchors. +- `anchor-navigation` scrolls to the install section on nav click. + +## How to get to it (user POV) + +- Scroll to `Installation` on `/`. +- Choose `Install` in the header section navigation (jumps to `#install`). +- Choose `Installation guide ↓` in the hero or `Installation guide` in the AI workflow steps. + +## Driving it with drive.mjs + +Preconditions: + +- Doctor reports `"ok": true` at the run URL. +- Fresh page load; no prior interaction. + +- **Region.** Find the section. Run `bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature install-guide --out `. A `section#install` with accessible name `Installation guide` exists. +- **Prerequisites.** Read the block. The run asserts the text contains `Python 3.8 or later`, `pip install opentrons`, and `Python: Select Interpreter`. +- **CLI method.** Read the second method. The run asserts the text contains `code --install-extension protocol-visualizer.vsix`. +- **Nav links.** Inspect the header. The run asserts `Section navigation` contains `Features` → `#features` and `Install` → `#install`. +- **Anchor jump.** Choose `Install` in the header nav. The run clicks it and asserts `location.hash` becomes `#install` with the install section inside the viewport. +- **Proof.** Inspect the artifacts. `/screenshot.png` shows the page after the anchor jump, `/dom.html` contains the prerequisite texts, `/result.json` records all five checks passing. + +## Gotchas + +- Anchor navigation is the only in-page routing; there is no router and no other URL. Do not expect `/install` to exist. +- The OT-2 note pins `opentrons==9.0.0`. Asserting bare `pip install opentrons` as an exact string fails — the recipe asserts containment, not equality. +- The anchor click changes `location.hash` in the driven page only. Later recipes start from a fresh load, so no cleanup is needed. diff --git a/.opencode/skills/verify-web/features/theme-toggle.md b/.opencode/skills/verify-web/features/theme-toggle.md new file mode 100644 index 0000000..35f6218 --- /dev/null +++ b/.opencode/skills/verify-web/features/theme-toggle.md @@ -0,0 +1,32 @@ +# Theme toggle + +Theme toggle flips the site between dark and light themes from the header button and persists the choice in `localStorage`, so a reload keeps the selected theme. + +## Sub-features + +- `toggle-present` exposes a header button named `Switch to light theme` or `Switch to dark theme`. +- `toggle-flips-theme` changes `documentElement` theme and persists it. +- `toggle-restores` flips back, leaving the page as found. + +## How to get to it (user POV) + +- Choose the sun/moon button in the header (right side, next to `Request access`). + +## Driving it with drive.mjs + +Preconditions: + +- Doctor reports `"ok": true` at the run URL. +- Fresh Chromium profile, so `localStorage` starts empty. + +- **Presence.** Find the button. Run `bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature theme-toggle --out `. A `button` whose accessible name starts with `Switch to` exists. +- **Flip.** Choose the toggle. The run clicks once, waits for React to flush the state update, and asserts `documentElement.dataset.theme` changed, is `dark` or `light`, and `localStorage.theme` equals the new value. +- **Restore.** Choose the toggle again. The run clicks a second time, waits, and asserts the theme flipped back (differs from the post-flip value), the persisted value matches, and the button label names the opposite theme — leaving the page as found. +- **Proof.** Inspect the artifacts. `/result.json` records the before/after/stored triple for the flip, `/screenshot.png` shows the restored page. + +## Gotchas + +- The toggle goes through React state, so the theme attribute updates asynchronously after the click. The drive waits ~400ms before reading; a synchronous read sees the stale theme and fails. +- The initial theme follows `prefers-color-scheme` (headless Chromium default), so never assert a specific starting theme — assert the flip and persistence instead. +- The button icon swaps (sun in dark mode, moon in light mode) but both are `aria-hidden` SVGs. Assert the button's accessible name, not the icon. +- `localStorage` persists per Chromium profile. Drives always use a fresh profile, so a stored value in `result.json` came from the clicks in that run. diff --git a/.opencode/skills/verify-web/scripts/doctor.mjs b/.opencode/skills/verify-web/scripts/doctor.mjs new file mode 100644 index 0000000..01d0cd8 --- /dev/null +++ b/.opencode/skills/verify-web/scripts/doctor.mjs @@ -0,0 +1,52 @@ +#!/usr/bin/env bun +// doctor.mjs — read-only health check for a running verification instance. +// Answers: "is this instance worth driving?" +// +// Usage: +// bun scripts/doctor.mjs --url http://127.0.0.1:5173 +// +// Exits 0 when healthy, 1 otherwise. Never starts, stops, or mutates anything. + +function parseArgs(argv) { + const out = {} + for (let i = 0; i < argv.length; i++) { + if (argv[i].startsWith('--')) { + const key = argv[i].slice(2) + const next = argv[i + 1] + out[key] = next && !next.startsWith('--') ? argv[++i] : 'true' + } + } + return out +} + +const args = parseArgs(process.argv.slice(2)) +const url = args.url ?? 'http://127.0.0.1:5173/' + +try { + const controller = new AbortController() + const timer = setTimeout(() => controller.abort(), 8000) + const res = await fetch(url, { signal: controller.signal }) + clearTimeout(timer) + const body = await res.text() + const hasRoot = body.includes('
') + const isDev = body.includes('/src/main.tsx') + const isBuild = body.includes('/assets/') + const report = { + ok: res.ok && hasRoot && (isDev || isBuild), + url, + status: res.status, + hasRoot, + mode: isDev ? 'dev' : isBuild ? 'preview/build' : 'unknown', + } + console.log(JSON.stringify(report, null, 1)) + if (!report.ok) { + console.error( + 'doctor: instance is NOT worth driving (expected HTTP 200 +
+ vite client or built assets).', + ) + process.exit(1) + } + console.log('doctor: instance is healthy.') +} catch (e) { + console.error(`doctor: unreachable at ${url} — ${e?.message ?? e}`) + process.exit(1) +} diff --git a/.opencode/skills/verify-web/scripts/drive.mjs b/.opencode/skills/verify-web/scripts/drive.mjs new file mode 100644 index 0000000..25d3c8a --- /dev/null +++ b/.opencode/skills/verify-web/scripts/drive.mjs @@ -0,0 +1,541 @@ +#!/usr/bin/env bun +// drive.mjs — drive the real protocol-visualizer-web landing page in headless +// Chromium over CDP (no npm dependencies; uses bun built-ins only). +// +// Usage: +// bun scripts/drive.mjs --url http://127.0.0.1:5173 --feature --out +// [--chrome ] [--cdp-port 19222] +// +// Exits 0 when every check passes, 1 otherwise. Always writes per-feature +// artifacts (screenshot.png, dom.html, axtree.json, result.json) into --out +// (or --out/ when --feature all). + +import fs from 'node:fs' +import os from 'node:os' +import path from 'node:path' + +const FEATURES = [ + 'hero', + 'features-grid', + 'ai-workflow', + 'theme-toggle', + 'install-guide', +] + +const EXPECTED_FEATURE_TITLES = [ + 'Real-time Deck Visualization', + 'Auto-analysis on Save', + 'Runtime Parameters UI', + 'Custom Labware Support', + 'Pop-out Window', + 'Step Jumper', +] + +const AI_VIDEO = + 'https://github.com/user-attachments/assets/812fbcdf-a84a-49fd-b631-ae925b64dddf' +const SKILL_REPO = 'https://github.com/koji/protocol-fix-loop' + +function parseArgs(argv) { + const out = {} + for (let i = 0; i < argv.length; i++) { + if (argv[i].startsWith('--')) { + const key = argv[i].slice(2) + const next = argv[i + 1] + out[key] = next && !next.startsWith('--') ? argv[++i] : 'true' + } + } + return out +} + +// Kill a spawned process AND its children. `bun x ` wraps the real +// server in a child process, so a bare kill() can orphan the listener. +function killTree(proc) { + try { + if (process.platform === 'win32') { + Bun.spawnSync(['taskkill', '/PID', String(proc.pid), '/T', '/F'], { + stdout: 'ignore', + stderr: 'ignore', + }) + } else { + proc.kill() + } + } catch {} +} + +function findChrome(explicit) { + const candidates = [ + explicit, + process.env.CHROME_PATH, + `${process.env.LOCALAPPDATA}\\ms-playwright\\chromium-1208\\chrome-win64\\chrome.exe`, + 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', + 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', + 'C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe', + ].filter(Boolean) + for (const c of candidates) { + try { + if (fs.existsSync(c)) return c + } catch {} + } + return null +} + +async function sleep(ms) { + return new Promise((r) => setTimeout(r, ms)) +} + +function createCdp(ws) { + let nextId = 1 + const pending = new Map() + const waiters = new Map() // method name -> [resolve] + ws.onmessage = (event) => { + let msg + try { + msg = JSON.parse(String(event.data)) + } catch { + return + } + if (msg.id !== undefined && pending.has(msg.id)) { + const { resolve, reject } = pending.get(msg.id) + pending.delete(msg.id) + if (msg.error) + reject(new Error(`CDP error: ${JSON.stringify(msg.error)}`)) + else resolve(msg.result) + } else if (msg.method) { + const list = waiters.get(msg.method) + if (list) { + waiters.delete(msg.method) + for (const r of list) r(msg.params) + } + } + } + function send(method, params = {}, timeoutMs = 20000) { + const id = nextId++ + return new Promise((resolve, reject) => { + pending.set(id, { resolve, reject }) + ws.send(JSON.stringify({ id, method, params })) + setTimeout(() => { + if (pending.has(id)) { + pending.delete(id) + reject(new Error(`CDP timeout: ${method}`)) + } + }, timeoutMs) + }) + } + function waitForEvent(method, timeoutMs = 20000) { + return new Promise((resolve, reject) => { + if (!waiters.has(method)) waiters.set(method, []) + waiters.get(method).push(resolve) + setTimeout(() => { + const list = waiters.get(method) ?? [] + const idx = list.indexOf(resolve) + if (idx >= 0) { + list.splice(idx, 1) + reject(new Error(`CDP event timeout: ${method}`)) + } + }, timeoutMs) + }) + } + return { send, waitForEvent } +} + +async function evaluate(cdp, expression) { + const res = await cdp.send('Runtime.evaluate', { + expression, + returnByValue: true, + awaitPromise: true, + }) + if (res.exceptionDetails) { + throw new Error( + `evaluate threw: ${JSON.stringify(res.exceptionDetails).slice(0, 500)}`, + ) + } + return res.result?.value +} + +async function waitForReady(cdp, timeoutMs = 20000) { + const start = Date.now() + while (Date.now() - start < timeoutMs) { + const h1 = await evaluate( + cdp, + `document.querySelector('#root h1')?.textContent ?? null`, + ) + if (h1) return h1 + await sleep(250) + } + throw new Error('timed out waiting for #root h1 to render') +} + +// Each check returns { id, pass, detail }. Expressions run in the page. +const CHECKS = { + hero: [ + { + id: 'hero-headline', + expr: `document.querySelector('#root h1')?.textContent ?? null`, + want: 'Protocol Visualizer', + }, + { + id: 'hero-tagline', + expr: `document.querySelector('#root section p')?.textContent ?? null`, + contains: 'Simulate your Opentrons', + }, + { + id: 'hero-request-access-links', + expr: `(() => { const a = [...document.querySelectorAll('#root a')].filter(e => e.textContent.trim() === 'Request access'); return { count: a.length, hrefs: a.map(e => e.href) }; })()`, + check: (v) => + v.count >= 3 && + v.hrefs.every((h) => h.includes('docs.google.com/forms')), + }, + { + id: 'hero-install-link', + expr: `[...document.querySelectorAll('#root a[href="#install"]')].map(a => a.textContent.trim())`, + check: (v) => + Array.isArray(v) && v.some((t) => t.includes('Installation guide')), + }, + ], + 'features-grid': [ + { + id: 'features-region', + expr: `document.querySelector('section#features[aria-label="Features"]') !== null`, + want: true, + }, + { + id: 'features-heading', + expr: `document.querySelector('section#features h2')?.textContent ?? null`, + want: 'Everything you need to see your protocol run', + }, + { + id: 'features-cards', + expr: `[...document.querySelectorAll('section#features article')].map(a => a.querySelector('h3')?.textContent ?? '')`, + check: (v) => + Array.isArray(v) && + v.length === 6 && + EXPECTED_FEATURE_TITLES.every((t) => v.includes(t)), + }, + ], + 'ai-workflow': [ + { + id: 'ai-region', + expr: `document.querySelector('section#ai-workflow[aria-label="Generate protocols with AI"]') !== null`, + want: true, + }, + { + id: 'ai-heading', + expr: `document.querySelector('section#ai-workflow h2')?.textContent ?? null`, + contains: 'Generate protocols with AI', + }, + { + id: 'ai-video', + expr: `(() => { const v = document.querySelector('section#ai-workflow video'); return v ? { src: v.getAttribute('src'), controls: v.hasAttribute('controls') } : null; })()`, + check: (v) => v !== null && v.src === AI_VIDEO && v.controls === true, + }, + { + id: 'ai-skill-command', + expr: `document.querySelector('section#ai-workflow')?.textContent.includes('npx skills add koji/protocol-fix-loop') ?? false`, + want: true, + }, + { + id: 'ai-slash-command', + expr: `document.querySelector('section#ai-workflow')?.textContent.includes('/protocol-fix-loop') ?? false`, + want: true, + }, + { + id: 'ai-skill-links', + expr: `[...document.querySelectorAll('section#ai-workflow a[href="${SKILL_REPO}"]')].length`, + check: (v) => typeof v === 'number' && v >= 1, + }, + { + id: 'ai-install-link', + expr: `document.querySelector('section#ai-workflow a[href="#install"]') !== null`, + want: true, + }, + ], + 'theme-toggle': [ + { + id: 'toggle-present', + expr: `document.querySelector('button[aria-label^="Switch to"]')?.getAttribute('aria-label') ?? null`, + check: (v) => + v === 'Switch to light theme' || v === 'Switch to dark theme', + }, + { + id: 'toggle-flips-theme', + expr: `(async () => { const b = document.querySelector('button[aria-label^="Switch to"]'); if (!b) return null; const before = document.documentElement.dataset.theme; b.click(); await new Promise(r => setTimeout(r, 400)); const after = document.documentElement.dataset.theme; const stored = localStorage.getItem('theme'); window.__verifyThemeFlipped = after; return { before, after, stored }; })()`, + check: (v) => + v !== null && + v.before !== v.after && + (v.after === 'dark' || v.after === 'light') && + v.stored === v.after, + }, + { + id: 'toggle-restores', + expr: `(async () => { const b = document.querySelector('button[aria-label^="Switch to"]'); if (!b) return null; b.click(); await new Promise(r => setTimeout(r, 400)); return { theme: document.documentElement.dataset.theme, stored: localStorage.getItem('theme'), label: b.getAttribute('aria-label'), flipped: window.__verifyThemeFlipped ?? null }; })()`, + check: (v) => + v !== null && + (v.theme === 'dark' || v.theme === 'light') && + v.stored === v.theme && + v.theme !== v.flipped && + v.label === + (v.theme === 'dark' + ? 'Switch to light theme' + : 'Switch to dark theme'), + }, + ], + 'install-guide': [ + { + id: 'install-region', + expr: `document.querySelector('section#install[aria-label="Installation guide"]') !== null`, + want: true, + }, + { + id: 'install-prereqs', + expr: `document.querySelector('section#install')?.textContent ?? ''`, + check: (v) => + typeof v === 'string' && + v.includes('Python 3.8 or later') && + v.includes('pip install opentrons') && + v.includes('Python: Select Interpreter'), + }, + { + id: 'install-cli-method', + expr: `document.querySelector('section#install')?.textContent.includes('code --install-extension protocol-visualizer.vsix') ?? false`, + want: true, + }, + { + id: 'header-nav', + expr: `[...document.querySelectorAll('header nav[aria-label="Section navigation"] a')].map(a => [a.textContent.trim(), a.getAttribute('href')])`, + check: (v) => + Array.isArray(v) && + v.some(([t, h]) => t === 'Features' && h === '#features') && + v.some(([t, h]) => t === 'Install' && h === '#install'), + }, + { + id: 'anchor-navigation', + expr: `(() => { const link = document.querySelector('header nav a[href="#install"]'); if (!link) return null; link.click(); const sec = document.querySelector('section#install'); const r = sec.getBoundingClientRect(); return { hash: location.hash, top: Math.round(r.top), vh: window.innerHeight }; })()`, + check: (v) => v !== null && v.hash === '#install' && v.top < v.vh, + }, + ], +} + +function judge(check, value) { + if (check.check) { + try { + return check.check(value) === true + } catch { + return false + } + } + if (check.want !== undefined) + return JSON.stringify(value) === JSON.stringify(check.want) + if (check.contains !== undefined) + return typeof value === 'string' && value.includes(check.contains) + return false +} + +async function driveFeature(cdp, pageUrl, feature, outDir) { + fs.mkdirSync(outDir, { recursive: true }) + + await cdp.send('Page.navigate', { url: pageUrl }) + await cdp.waitForEvent('Page.loadEventFired').catch(() => {}) + await waitForReady(cdp) + // Let entrance animations (e.g. hero 0.6s fade-in) finish so the + // screenshot shows the steady visual state. + await sleep(900) + + const results = [] + for (const check of CHECKS[feature]) { + let value = null + let pass = false + let error = null + try { + value = await evaluate(cdp, check.expr) + pass = judge(check, value) + } catch (e) { + error = String(e).slice(0, 300) + } + results.push({ id: check.id, pass, value, error }) + console.log( + ` [${pass ? 'PASS' : 'FAIL'}] ${check.id}${pass ? '' : ` — saw ${JSON.stringify(value)?.slice(0, 200)}${error ? ` (${error})` : ''}`}`, + ) + } + + const shot = await (async () => { + // Show the driven feature in the screenshot, not just the page top. + const targets = { + hero: null, // top of page + 'features-grid': 'section#features', + 'ai-workflow': 'section#ai-workflow', + 'theme-toggle': null, // header, at top of page + 'install-guide': 'section#install', + } + const sel = targets[feature] + if (sel) { + await evaluate( + cdp, + `document.querySelector(${JSON.stringify(sel)})?.scrollIntoView({ block: 'start' }); window.scrollBy(0, -72)`, + ) + } else { + await evaluate(cdp, `window.scrollTo(0, 0)`) + } + await sleep(500) + return cdp.send('Page.captureScreenshot', { format: 'png' }) + })() + fs.writeFileSync( + path.join(outDir, 'screenshot.png'), + Buffer.from(shot.data, 'base64'), + ) + const dom = await evaluate(cdp, `document.documentElement.outerHTML`) + fs.writeFileSync(path.join(outDir, 'dom.html'), String(dom ?? '')) + let ax = null + try { + await cdp.send('Accessibility.enable', {}).catch(() => {}) + const tree = await cdp.send('Accessibility.getFullAXTree', {}) + ax = tree.nodes + fs.writeFileSync( + path.join(outDir, 'axtree.json'), + JSON.stringify(ax, null, 1), + ) + } catch (e) { + fs.writeFileSync( + path.join(outDir, 'axtree.json'), + JSON.stringify({ error: String(e).slice(0, 300) }), + ) + } + const passed = results.filter((r) => r.pass).length + const result = { + feature, + url: pageUrl, + passed, + total: results.length, + ok: passed === results.length, + checks: results, + finishedAt: new Date().toISOString(), + } + fs.writeFileSync( + path.join(outDir, 'result.json'), + JSON.stringify(result, null, 1), + ) + return result +} + +async function main() { + const args = parseArgs(process.argv.slice(2)) + const pageUrl = args.url ?? 'http://127.0.0.1:5173/' + const featureArg = args.feature ?? 'all' + const outBase = args.out ?? 'artifacts' + const cdpPort = Number( + args['cdp-port'] ?? process.env.VERIFY_CDP_PORT ?? 19222, + ) + const features = featureArg === 'all' ? FEATURES : [featureArg] + for (const f of features) { + if (!CHECKS[f]) { + console.error(`unknown feature: ${f} (known: ${FEATURES.join(', ')})`) + process.exit(2) + } + } + + const chrome = findChrome(args.chrome) + if (!chrome) { + console.error( + 'no Chromium/Chrome binary found. Set CHROME_PATH or install Chrome.', + ) + process.exit(2) + } + console.log(`chrome: ${chrome}`) + + const profile = fs.mkdtempSync(path.join(os.tmpdir(), 'verify-web-profile-')) + const proc = Bun.spawn( + [ + chrome, + '--headless=new', + '--no-sandbox', + '--disable-gpu', + '--hide-scrollbars', + '--window-size=1280,900', + '--force-device-scale-factor=1', + '--no-first-run', + '--no-default-browser-check', + `--user-data-dir=${profile}`, + `--remote-debugging-port=${cdpPort}`, + 'about:blank', + ], + { stdout: 'ignore', stderr: 'ignore' }, + ) + + const cleanup = () => { + killTree(proc) + try { + fs.rmSync(profile, { recursive: true, force: true }) + } catch {} + } + process.on('SIGINT', () => { + cleanup() + process.exit(130) + }) + + try { + let targets = null + const start = Date.now() + while (Date.now() - start < 15000) { + try { + const res = await fetch(`http://127.0.0.1:${cdpPort}/json/list`) + const list = await res.json() + const page = list.find( + (t) => t.type === 'page' && t.webSocketDebuggerUrl, + ) + if (page) { + targets = page + break + } + } catch {} + await sleep(250) + } + if (!targets) + throw new Error('timed out waiting for Chrome remote debugging') + + const ws = new WebSocket(targets.webSocketDebuggerUrl) + await new Promise((resolve, reject) => { + const t = setTimeout( + () => reject(new Error('websocket connect timeout')), + 10000, + ) + ws.onopen = () => { + clearTimeout(t) + resolve() + } + ws.onerror = (e) => { + clearTimeout(t) + reject(new Error(`websocket error: ${e?.message ?? 'unknown'}`)) + } + }) + const cdp = createCdp(ws) + await cdp.send('Page.enable', {}) + await cdp.send('Runtime.enable', {}) + + // Doctor-style precheck: the app must serve its shell before driving. + const probe = await fetch(pageUrl) + if (!probe.ok) + throw new Error(`app probe failed: HTTP ${probe.status} at ${pageUrl}`) + + let allOk = true + for (const f of features) { + const outDir = featureArg === 'all' ? path.join(outBase, f) : outBase + console.log(`feature: ${f}`) + const result = await driveFeature(cdp, pageUrl, f, outDir) + console.log( + ` -> ${result.passed}/${result.total} passed — ${path.join(outDir, 'screenshot.png')}`, + ) + if (!result.ok) allOk = false + } + ws.close() + try { + await cdp.send('Browser.close', {}).catch(() => {}) + } catch {} + cleanup() + process.exit(allOk ? 0 : 1) + } catch (e) { + console.error(`drive failed: ${e?.message ?? e}`) + cleanup() + process.exit(1) + } +} + +await main() diff --git a/.opencode/skills/verify-web/scripts/verify.mjs b/.opencode/skills/verify-web/scripts/verify.mjs new file mode 100644 index 0000000..f264f64 --- /dev/null +++ b/.opencode/skills/verify-web/scripts/verify.mjs @@ -0,0 +1,186 @@ +#!/usr/bin/env bun +// verify.mjs — one-shot end-to-end verification for protocol-visualizer-web. +// Spawns its own `vite` server as a child process (same process tree, so no +// cross-shell lifetime issues), runs doctor, drives the requested features in +// real Chromium, then always tears the server down. Proof artifacts survive. +// +// Usage (run from the repo root): +// bun .opencode/skills/verify-web/scripts/verify.mjs --feature [--port 5173] [--run-id ] +// +// Env overrides: VERIFY_PORT, VERIFY_CDP_PORT, VERIFY_RUN_ID, CHROME_PATH. + +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const SKILL_DIR = path.dirname(path.dirname(fileURLToPath(import.meta.url))) +const ROOT = path.dirname(path.dirname(path.dirname(SKILL_DIR))) + +function parseArgs(argv) { + const out = {} + for (let i = 0; i < argv.length; i++) { + if (argv[i].startsWith('--')) { + const key = argv[i].slice(2) + const next = argv[i + 1] + out[key] = next && !next.startsWith('--') ? argv[++i] : 'true' + } + } + return out +} + +async function sleep(ms) { + return new Promise((r) => setTimeout(r, ms)) +} + +// Kill a spawned process AND its children. `bun x ` wraps the real +// server in a child process, so a bare kill() can orphan the listener. +function killTree(proc) { + try { + if (process.platform === 'win32') { + Bun.spawnSync(['taskkill', '/PID', String(proc.pid), '/T', '/F'], { + stdout: 'ignore', + stderr: 'ignore', + }) + } else { + proc.kill() + } + } catch {} +} + +const args = parseArgs(process.argv.slice(2)) +const feature = args.feature ?? 'all' +const port = Number(args.port ?? process.env.VERIFY_PORT ?? 5173) +const runId = + args['run-id'] ?? + process.env.VERIFY_RUN_ID ?? + new Date().toISOString().replace(/[:.]/g, '-') +const artifacts = path.join(SKILL_DIR, 'artifacts', runId) +const serverLog = path.join(artifacts, 'vite-server.log') + +fs.mkdirSync(artifacts, { recursive: true }) +const url = `http://127.0.0.1:${port}/` + +console.log(`launch: bun x vite --host 127.0.0.1 --port ${port} --strictPort`) +const server = Bun.spawn( + [ + process.execPath, + 'x', + 'vite', + '--host', + '127.0.0.1', + '--port', + String(port), + '--strictPort', + ], + { + cwd: ROOT, + stdout: 'pipe', + stderr: 'pipe', + }, +) +const logFile = fs.createWriteStream(serverLog) +server.stdout.pipeTo(new WritableStream({ write: (c) => logFile.write(c) })) +server.stderr.pipeTo(new WritableStream({ write: (c) => logFile.write(c) })) + +let exitCode = 1 +try { + // Wait for readiness: log line + HTTP 200. + let ready = false + const start = Date.now() + while (Date.now() - start < 30000) { + if (server.exitCode !== null && server.exitCode !== undefined) { + throw new Error( + `vite exited early (code ${server.exitCode}); see ${serverLog}`, + ) + } + try { + const res = await fetch(url) + if (res.ok) { + ready = true + break + } + } catch {} + await sleep(300) + } + if (!ready) + throw new Error(`vite never became ready at ${url}; see ${serverLog}`) + console.log(`launch: ready at ${url}`) + + // Doctor (official read-only check, as a separate step). + console.log('doctor:') + const doctor = Bun.spawn( + ['bun', path.join(SKILL_DIR, 'scripts', 'doctor.mjs'), '--url', url], + { + cwd: ROOT, + stdout: 'inherit', + stderr: 'inherit', + }, + ) + const doctorCode = await doctor.exited + if (doctorCode !== 0) + throw new Error('doctor reported the instance is not worth driving') + + // Drive. + console.log('drive:') + const drive = Bun.spawn( + [ + 'bun', + path.join(SKILL_DIR, 'scripts', 'drive.mjs'), + '--url', + url, + '--feature', + feature, + '--out', + artifacts, + ], + { cwd: ROOT, stdout: 'inherit', stderr: 'inherit' }, + ) + const driveCode = await drive.exited + exitCode = driveCode + + // Cleanup never eats the proof: confirm artifacts still exist after teardown. + const walked = [] + const walk = (dir) => { + for (const e of fs.readdirSync(dir, { withFileTypes: true })) { + const p = path.join(dir, e.name) + if (e.isDirectory()) walk(p) + else walked.push(p) + } + } + walk(artifacts) + const hasShot = walked.some((p) => p.endsWith('screenshot.png')) + const hasResult = walked.some((p) => p.endsWith('result.json')) + console.log(`artifacts: ${artifacts} (${walked.length} files)`) + if (!hasShot || !hasResult) + throw new Error( + 'evidence missing after run (screenshot.png + result.json required)', + ) +} catch (e) { + console.error(`verify failed: ${e?.message ?? e}`) + exitCode = 1 +} finally { + killTree(server) + await server.exited.catch(() => {}) + try { + logFile.end() + } catch {} + // Prove the teardown: the port must refuse connections afterwards. + let portFree = false + for (let i = 0; i < 20; i++) { + try { + await fetch(url) + await sleep(250) + } catch { + portFree = true + break + } + } + console.log( + `cleanup: vite server stopped (port free: ${portFree}; artifacts retained).`, + ) + if (!portFree) { + console.error(`cleanup: port ${port} is still owned after teardown`) + exitCode = 1 + } +} +process.exit(exitCode) diff --git a/docs/verification.md b/docs/verification.md new file mode 100644 index 0000000..0b8e195 --- /dev/null +++ b/docs/verification.md @@ -0,0 +1,74 @@ +# Verification + +This repo ships a scripted way to drive the real landing page and prove its behavior: the `verify-web` skill in `.opencode/skills/verify-web/`. It serves the site with `vite`, opens it in real headless Chromium over CDP, asserts DOM/accessibility state, and captures screenshots. No mocks, no test-only endpoints, no npm dependencies (bun built-ins only). + +## Prerequisites + +- `bun` on PATH. +- A Chromium/Chrome binary. Auto-detected in this order: `CHROME_PATH` env, Playwright-cached `chromium-1208`, system Chrome, Edge. Override with `CHROME_PATH` or `--chrome`. +- Ports free: app port (default `5173`) and CDP port (default `19222`). + +## Quick start + +Run from the repo root: + +```powershell +bun .opencode/skills/verify-web/scripts/verify.mjs --feature all +``` + +This spawns its own `vite` server, runs the doctor check, drives every mapped feature, tears the server down, and leaves proof under `.opencode/skills/verify-web/artifacts//`. Exit 0 only if every check passes. + +Verify a single feature: + +```powershell +bun .opencode/skills/verify-web/scripts/verify.mjs --feature ai-workflow --port 5173 +``` + +Feature IDs: `hero`, `features-grid`, `ai-workflow`, `theme-toggle`, `install-guide`. Recipes live in `.opencode/skills/verify-web/features/`. + +## Individual steps + +Health-check a running instance (read-only, never starts or stops anything): + +```powershell +bun .opencode/skills/verify-web/scripts/doctor.mjs --url http://127.0.0.1:5173/ +``` + +Drive an already-running instance and write evidence to ``: + +```powershell +bun .opencode/skills/verify-web/scripts/drive.mjs --url http://127.0.0.1:5173/ --feature --out +``` + +Manual server launch (only for interactive debugging — background processes do not survive across separate shell sessions, so prefer `verify.mjs`): + +```powershell +$p = Start-Process bun -ArgumentList @('x','vite','--host','127.0.0.1','--port','5173','--strictPort') -PassThru +bun .opencode/skills/verify-web/scripts/doctor.mjs --url http://127.0.0.1:5173/ +Stop-Process -Id $p.Id -Force +``` + +## Environment variables + +| Variable | Default | Purpose | +| ----------------- | ----------- | ------------------------------------------------------------------------- | +| `VERIFY_PORT` | `5173` | App server port (also `--port`) | +| `VERIFY_CDP_PORT` | `19222` | Chrome remote-debugging port (also `--cdp-port`); change per parallel run | +| `VERIFY_RUN_ID` | timestamp | Artifact directory name (also `--run-id`) | +| `CHROME_PATH` | auto-detect | Browser binary (also `--chrome` for `drive.mjs`) | + +## Evidence + +Per feature, `///` contains `screenshot.png` (rendered page showing the feature), `dom.html` (post-hydration DOM), `axtree.json` (full accessibility tree), and `result.json` (per-check pass/fail with observed values). Plus `vite-server.log` at the run root. Cleanup never deletes evidence. + +## Gotchas + +- Never drive a URL you did not start. If the port is taken, pick another `--port` instead of reusing someone's dev server. +- Each drive uses a fresh Chromium profile, so `localStorage` starts empty and the theme starts from the browser default. Never assert a specific starting theme — assert the flip and persistence. +- The demo video is asserted by `src` attribute and `controls`, not by playing the remote stream. +- The hero fades in over 0.6s; the drive waits for the steady state before capturing. +- `result.json` with a failing check names the check id and the observed value — start there when a run goes red. + +## Maintenance + +The `features/` map is the maintained verification source. When the page changes, update the matching feature file first, then the checks in `scripts/drive.mjs`. See `/maintain-verification-skill` for the periodic audit loop. diff --git a/src/App.tsx b/src/App.tsx index aaff810..36b001a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,7 @@ import { useTheme } from './hooks/useTheme' import { Header } from './components/Header/Header' import { Hero } from './components/Hero/Hero' import { Features } from './components/Features/Features' +import { AiWorkflow } from './components/AiWorkflow/AiWorkflow' import { Screenshot } from './components/Screenshot/Screenshot' import { TryCta } from './components/TryCta/TryCta' import { Install } from './components/Install/Install' @@ -19,6 +20,7 @@ export default function App(): ReactNode { + diff --git a/src/components/AiWorkflow/AiWorkflow.module.css b/src/components/AiWorkflow/AiWorkflow.module.css new file mode 100644 index 0000000..9a96f1b --- /dev/null +++ b/src/components/AiWorkflow/AiWorkflow.module.css @@ -0,0 +1,74 @@ +.section { + padding-block: 32px 88px; +} + +.heading { + margin: 0 0 16px; + font-size: clamp(1.5rem, 3vw, 2rem); + letter-spacing: -0.01em; +} + +.lead { + max-width: 72ch; + margin: 0 0 32px; + color: var(--color-text-muted); + font-size: 1rem; + line-height: 1.6; +} + +.link { + color: var(--color-accent-strong); +} + +.figure { + margin: 0 0 32px; +} + +.video { + display: block; + width: 100%; + height: auto; + border: 1px solid var(--color-border); + border-radius: 16px; + background: var(--color-surface); +} + +.caption { + margin-top: 12px; + color: var(--color-text-muted); + font-size: 0.9rem; + text-align: center; +} + +.subHeading { + margin: 0 0 12px; + font-size: 1.05rem; +} + +.steps { + max-width: 72ch; + margin: 0; + padding: 24px 24px 24px 42px; + border: 1px solid var(--color-border); + border-radius: 14px; + background: var(--color-surface); + color: var(--color-text-muted); + font-size: 0.95rem; + line-height: 1.6; +} + +.steps li + li { + margin-top: 8px; +} + +.codeInline { + padding: 2px 6px; + border-radius: 6px; + background: color-mix(in srgb, var(--color-accent) 12%, transparent); + color: var(--color-accent-strong); + font-size: 0.85em; +} + +.muted { + font-size: 0.9em; +} diff --git a/src/components/AiWorkflow/AiWorkflow.test.tsx b/src/components/AiWorkflow/AiWorkflow.test.tsx new file mode 100644 index 0000000..9594d44 --- /dev/null +++ b/src/components/AiWorkflow/AiWorkflow.test.tsx @@ -0,0 +1,39 @@ +import { render, screen } from '@testing-library/react' +import { describe, expect, it } from 'vitest' +import { AiWorkflow } from './AiWorkflow' + +describe('AiWorkflow', () => { + it('anchors at id=ai-workflow', () => { + render() + expect(screen.getByLabelText('Generate protocols with AI')).toHaveAttribute( + 'id', + 'ai-workflow', + ) + }) + + it('links to the protocol-fix-loop skill repo', () => { + render() + const links = screen.getAllByRole('link', { name: /protocol-fix-loop/i }) + expect(links.length).toBeGreaterThanOrEqual(1) + for (const link of links) { + expect(link).toHaveAttribute( + 'href', + 'https://github.com/koji/protocol-fix-loop', + ) + } + }) + + it('shows the demo video and usage steps', () => { + render() + const video = document.querySelector('video') + expect(video).not.toBeNull() + expect(video?.getAttribute('src')).toBe( + 'https://github.com/user-attachments/assets/812fbcdf-a84a-49fd-b631-ae925b64dddf', + ) + expect( + screen.getByText('npx skills add koji/protocol-fix-loop'), + ).toBeInTheDocument() + expect(screen.getByText('/protocol-fix-loop')).toBeInTheDocument() + expect(screen.getByText(/Install VSCode or Cursor/i)).toBeInTheDocument() + }) +}) diff --git a/src/components/AiWorkflow/AiWorkflow.tsx b/src/components/AiWorkflow/AiWorkflow.tsx new file mode 100644 index 0000000..98779aa --- /dev/null +++ b/src/components/AiWorkflow/AiWorkflow.tsx @@ -0,0 +1,84 @@ +import type { ReactNode } from 'react' +import styles from './AiWorkflow.module.css' + +const DEMO_VIDEO = + 'https://github.com/user-attachments/assets/812fbcdf-a84a-49fd-b631-ae925b64dddf' +const SKILL_REPO = 'https://github.com/koji/protocol-fix-loop' +const SKILL_INSTALL_COMMAND = 'npx skills add koji/protocol-fix-loop' + +export function AiWorkflow(): ReactNode { + return ( +
+
+

+ Generate protocols with AI, verify with Protocol Visualizer +

+

+ Connect Protocol Visualizer to your LLM with{' '} + + protocol-fix-loop + + . Generate Opentrons protocols with GitHub Copilot or Cursor, then + simulate and fix them in a visual feedback loop. +

+ +
+ +
+ Generate a protocol from a prompt, then fix it while watching the + simulation +
+
+ +

How to use

+
    +
  1. Install VSCode or Cursor
  2. +
  3. + Install the skill:{' '} + {SKILL_INSTALL_COMMAND}{' '} + + (see{' '} + + koji/protocol-fix-loop + + ) + +
  4. +
  5. + Install the Protocol Visualizer extension (see{' '} + + Installation guide + + ) +
  6. +
  7. + Use /protocol-fix-loop in + chat and add your prompt to generate a protocol +
  8. +
+
+
+ ) +}