diff --git a/.opencode/skills/verify-web/SKILL.md b/.opencode/skills/verify-web/SKILL.md index 0da714f..19e239f 100644 --- a/.opencode/skills/verify-web/SKILL.md +++ b/.opencode/skills/verify-web/SKILL.md @@ -1,9 +1,9 @@ --- 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/. +description: Drive and prove the protocol-factory-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 +# Verify protocol-factory-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 — diff --git a/.opencode/skills/verify-web/artifacts/review-fix-grid/axtree.json b/.opencode/skills/verify-web/artifacts/review-fix-grid/axtree.json new file mode 100644 index 0000000..eeb764c --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-grid/axtree.json @@ -0,0 +1,11647 @@ +[ + { + "nodeId": "2", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory — 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 Factory — 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:5173/" + } + } + ], + "childIds": ["23"], + "backendDOMNodeId": 2, + "frameId": "63630AA15BB4C023CA71568D42A464BF" + }, + { + "nodeId": "23", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "2", + "childIds": ["48"], + "backendDOMNodeId": 23 + }, + { + "nodeId": "48", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "23", + "childIds": ["49"], + "backendDOMNodeId": 48 + }, + { + "nodeId": "49", + "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": "48", + "childIds": ["50"], + "backendDOMNodeId": 49 + }, + { + "nodeId": "50", + "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": "49", + "childIds": ["51", "69", "252", "258"], + "backendDOMNodeId": 50 + }, + { + "nodeId": "51", + "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": "50", + "childIds": ["52"], + "backendDOMNodeId": 51 + }, + { + "nodeId": "69", + "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": "50", + "childIds": ["70", "85", "114", "118", "215", "220"], + "backendDOMNodeId": 69 + }, + { + "nodeId": "252", + "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": "50", + "childIds": ["253"], + "backendDOMNodeId": 252 + }, + { + "nodeId": "258", + "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": "50", + "childIds": ["259"], + "backendDOMNodeId": 258 + }, + { + "nodeId": "52", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "51", + "childIds": ["53", "60", "63"], + "backendDOMNodeId": 52 + }, + { + "nodeId": "53", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "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:5173/#top" + } + } + ], + "parentId": "52", + "childIds": ["59"], + "backendDOMNodeId": 53 + }, + { + "nodeId": "60", + "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": "52", + "childIds": ["61", "62"], + "backendDOMNodeId": 60 + }, + { + "nodeId": "63", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "52", + "childIds": ["64", "65"], + "backendDOMNodeId": 63 + }, + { + "nodeId": "64", + "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": "63", + "childIds": ["267"], + "backendDOMNodeId": 64 + }, + { + "nodeId": "65", + "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": "63", + "childIds": [], + "backendDOMNodeId": 65 + }, + { + "nodeId": "70", + "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": "69", + "childIds": ["71"], + "backendDOMNodeId": 70 + }, + { + "nodeId": "85", + "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": "69", + "childIds": ["13"], + "backendDOMNodeId": 85 + }, + { + "nodeId": "114", + "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": "69", + "childIds": ["115"], + "backendDOMNodeId": 114 + }, + { + "nodeId": "118", + "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": "69", + "childIds": ["119"], + "backendDOMNodeId": 118 + }, + { + "nodeId": "215", + "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": "69", + "childIds": ["216"], + "backendDOMNodeId": 215 + }, + { + "nodeId": "220", + "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": "69", + "childIds": ["221"], + "backendDOMNodeId": 220 + }, + { + "nodeId": "253", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "252", + "childIds": ["257"], + "backendDOMNodeId": 253 + }, + { + "nodeId": "257", + "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": "253", + "childIds": ["362"], + "backendDOMNodeId": 257 + }, + { + "nodeId": "259", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "258", + "childIds": ["260", "261"], + "backendDOMNodeId": 259 + }, + { + "nodeId": "260", + "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": "259", + "childIds": ["363"], + "backendDOMNodeId": 260 + }, + { + "nodeId": "261", + "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": "259", + "childIds": ["262"], + "backendDOMNodeId": 261 + }, + { + "nodeId": "59", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "53", + "childIds": ["264"], + "backendDOMNodeId": 59 + }, + { + "nodeId": "264", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "59", + "childIds": ["-1000000002"], + "backendDOMNodeId": 264 + }, + { + "nodeId": "61", + "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:5173/#features" + } + } + ], + "parentId": "60", + "childIds": ["265"], + "backendDOMNodeId": 61 + }, + { + "nodeId": "62", + "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:5173/#install" + } + } + ], + "parentId": "60", + "childIds": ["266"], + "backendDOMNodeId": 62 + }, + { + "nodeId": "267", + "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": "64", + "childIds": ["-1000000005"], + "backendDOMNodeId": 267 + }, + { + "nodeId": "71", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "70", + "childIds": ["72"], + "backendDOMNodeId": 71 + }, + { + "nodeId": "72", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "71", + "childIds": ["73", "76", "12"], + "backendDOMNodeId": 72 + }, + { + "nodeId": "73", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "72", + "childIds": ["74", "75"], + "backendDOMNodeId": 73 + }, + { + "nodeId": "74", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "73", + "childIds": ["268"], + "backendDOMNodeId": 74 + }, + { + "nodeId": "75", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "73", + "childIds": ["269"], + "backendDOMNodeId": 75 + }, + { + "nodeId": "269", + "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": "75", + "childIds": ["-1000000007"], + "backendDOMNodeId": 269 + }, + { + "nodeId": "76", + "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": "72", + "childIds": ["270"], + "backendDOMNodeId": 76 + }, + { + "nodeId": "12", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "72", + "childIds": ["77", "78"], + "backendDOMNodeId": 12 + }, + { + "nodeId": "77", + "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": "12", + "childIds": ["271"], + "backendDOMNodeId": 77 + }, + { + "nodeId": "78", + "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:5173/#install" + } + } + ], + "parentId": "12", + "childIds": ["272"], + "backendDOMNodeId": 78 + }, + { + "nodeId": "13", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "85", + "childIds": ["86", "15"], + "backendDOMNodeId": 13 + }, + { + "nodeId": "86", + "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": "13", + "childIds": ["273"], + "backendDOMNodeId": 86 + }, + { + "nodeId": "15", + "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": "13", + "childIds": ["87", "91", "94", "98", "102", "106", "110"], + "backendDOMNodeId": 15 + }, + { + "nodeId": "115", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "114", + "childIds": ["116"], + "backendDOMNodeId": 115 + }, + { + "nodeId": "116", + "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": "115", + "childIds": ["4", "117"], + "backendDOMNodeId": 116 + }, + { + "nodeId": "119", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "118", + "childIds": ["120", "121", "123", "204", "205"], + "backendDOMNodeId": 119 + }, + { + "nodeId": "120", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "119", + "childIds": ["289"], + "backendDOMNodeId": 120 + }, + { + "nodeId": "121", + "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": "119", + "childIds": ["290", "291", "122", "293"], + "backendDOMNodeId": 121 + }, + { + "nodeId": "123", + "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": "119", + "childIds": ["3", "203"], + "backendDOMNodeId": 123 + }, + { + "nodeId": "204", + "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": "119", + "childIds": ["295"], + "backendDOMNodeId": 204 + }, + { + "nodeId": "205", + "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": "119", + "childIds": ["206", "207", "211", "213"], + "backendDOMNodeId": 205 + }, + { + "nodeId": "216", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "215", + "childIds": ["217", "218", "219"], + "backendDOMNodeId": 216 + }, + { + "nodeId": "217", + "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": "216", + "childIds": ["316"], + "backendDOMNodeId": 217 + }, + { + "nodeId": "218", + "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": "216", + "childIds": ["317"], + "backendDOMNodeId": 218 + }, + { + "nodeId": "219", + "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": "216", + "childIds": ["318"], + "backendDOMNodeId": 219 + }, + { + "nodeId": "221", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "220", + "childIds": ["222", "223"], + "backendDOMNodeId": 221 + }, + { + "nodeId": "222", + "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": "221", + "childIds": ["319"], + "backendDOMNodeId": 222 + }, + { + "nodeId": "223", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "221", + "childIds": ["224", "238", "248"], + "backendDOMNodeId": 223 + }, + { + "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": "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": "224", + "childIds": ["320"], + "backendDOMNodeId": 225 + }, + { + "nodeId": "226", + "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": "224", + "childIds": ["227", "230", "233", "235", "237"], + "backendDOMNodeId": 226 + }, + { + "nodeId": "238", + "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": "223", + "childIds": ["239", "240"], + "backendDOMNodeId": 238 + }, + { + "nodeId": "248", + "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": "223", + "childIds": ["249", "250"], + "backendDOMNodeId": 248 + }, + { + "nodeId": "362", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "257", + "childIds": ["-1000000137"], + "backendDOMNodeId": 362 + }, + { + "nodeId": "363", + "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": "260", + "childIds": ["-1000000138"], + "backendDOMNodeId": 363 + }, + { + "nodeId": "262", + "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": "261", + "childIds": ["364"], + "backendDOMNodeId": 262 + }, + { + "nodeId": "-1000000002", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "264", + "childIds": [] + }, + { + "nodeId": "265", + "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": "61", + "childIds": ["-1000000003"], + "backendDOMNodeId": 265 + }, + { + "nodeId": "266", + "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": "62", + "childIds": ["-1000000004"], + "backendDOMNodeId": 266 + }, + { + "nodeId": "-1000000005", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "267", + "childIds": [] + }, + { + "nodeId": "268", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "74", + "childIds": ["-1000000006"], + "backendDOMNodeId": 268 + }, + { + "nodeId": "-1000000007", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "269", + "childIds": [] + }, + { + "nodeId": "270", + "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": "76", + "childIds": ["-1000000008", "-1000000009"], + "backendDOMNodeId": 270 + }, + { + "nodeId": "271", + "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": "77", + "childIds": ["-1000000010"], + "backendDOMNodeId": 271 + }, + { + "nodeId": "272", + "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": "78", + "childIds": ["-1000000011"], + "backendDOMNodeId": 272 + }, + { + "nodeId": "273", + "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": "86", + "childIds": ["-1000000012"], + "backendDOMNodeId": 273 + }, + { + "nodeId": "87", + "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": "15", + "childIds": ["88"], + "backendDOMNodeId": 87 + }, + { + "nodeId": "91", + "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": "15", + "childIds": ["92"], + "backendDOMNodeId": 91 + }, + { + "nodeId": "94", + "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": "15", + "childIds": ["95"], + "backendDOMNodeId": 94 + }, + { + "nodeId": "98", + "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": "15", + "childIds": ["99"], + "backendDOMNodeId": 98 + }, + { + "nodeId": "102", + "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": "15", + "childIds": ["103"], + "backendDOMNodeId": 102 + }, + { + "nodeId": "106", + "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": "15", + "childIds": ["107"], + "backendDOMNodeId": 106 + }, + { + "nodeId": "110", + "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": "15", + "childIds": ["111"], + "backendDOMNodeId": 110 + }, + { + "nodeId": "4", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory 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 Factory visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Factory 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": "116", + "childIds": [], + "backendDOMNodeId": 4 + }, + { + "nodeId": "117", + "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": "116", + "childIds": ["288"], + "backendDOMNodeId": 117 + }, + { + "nodeId": "289", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "120", + "childIds": ["-1000000046"], + "backendDOMNodeId": 289 + }, + { + "nodeId": "290", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "121", + "childIds": ["-1000000047"], + "backendDOMNodeId": 290 + }, + { + "nodeId": "291", + "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": "121", + "childIds": ["-1000000048"], + "backendDOMNodeId": 291 + }, + { + "nodeId": "122", + "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": "121", + "childIds": ["292"], + "backendDOMNodeId": 122 + }, + { + "nodeId": "293", + "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": "121", + "childIds": ["-1000000050", "-1000000051"], + "backendDOMNodeId": 293 + }, + { + "nodeId": "3", + "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 Factory", + "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 Factory" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "123", + "childIds": ["124"], + "backendDOMNodeId": 3 + }, + { + "nodeId": "203", + "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": "123", + "childIds": ["294"], + "backendDOMNodeId": 203 + }, + { + "nodeId": "295", + "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": "204", + "childIds": ["-1000000053"], + "backendDOMNodeId": 295 + }, + { + "nodeId": "206", + "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": "205", + "childIds": ["296", "297"], + "backendDOMNodeId": 206 + }, + { + "nodeId": "207", + "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": "205", + "childIds": ["298", "299", "300", "208", "302", "303", "304", "210", "306"], + "backendDOMNodeId": 207 + }, + { + "nodeId": "211", + "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": "205", + "childIds": ["307", "308", "309", "212", "311"], + "backendDOMNodeId": 211 + }, + { + "nodeId": "213", + "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": "205", + "childIds": ["312", "313", "214", "315"], + "backendDOMNodeId": 213 + }, + { + "nodeId": "316", + "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": "217", + "childIds": ["-1000000074"], + "backendDOMNodeId": 316 + }, + { + "nodeId": "317", + "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": "218", + "childIds": ["-1000000075"], + "backendDOMNodeId": 317 + }, + { + "nodeId": "318", + "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": "219", + "childIds": ["-1000000076"], + "backendDOMNodeId": 318 + }, + { + "nodeId": "319", + "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": "222", + "childIds": ["-1000000077"], + "backendDOMNodeId": 319 + }, + { + "nodeId": "320", + "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": "225", + "childIds": ["-1000000078"], + "backendDOMNodeId": 320 + }, + { + "nodeId": "227", + "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": "226", + "childIds": ["321", "228", "323", "229", "325", "326"], + "backendDOMNodeId": 227 + }, + { + "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": "226", + "childIds": ["327", "328", "231", "330", "331", "232"], + "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": "226", + "childIds": ["333", "334", "335", "234", "337", "338"], + "backendDOMNodeId": 233 + }, + { + "nodeId": "235", + "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": "226", + "childIds": ["339", "340", "341", "236"], + "backendDOMNodeId": 235 + }, + { + "nodeId": "237", + "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": "226", + "childIds": ["343", "344"], + "backendDOMNodeId": 237 + }, + { + "nodeId": "239", + "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": "238", + "childIds": ["345"], + "backendDOMNodeId": 239 + }, + { + "nodeId": "240", + "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": "238", + "childIds": ["241", "244", "246"], + "backendDOMNodeId": 240 + }, + { + "nodeId": "249", + "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": "248", + "childIds": ["360"], + "backendDOMNodeId": 249 + }, + { + "nodeId": "250", + "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": "248", + "childIds": ["251"], + "backendDOMNodeId": 250 + }, + { + "nodeId": "-1000000137", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "362", + "childIds": [] + }, + { + "nodeId": "-1000000138", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "363", + "childIds": [] + }, + { + "nodeId": "364", + "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": "262", + "childIds": ["-1000000139"], + "backendDOMNodeId": 364 + }, + { + "nodeId": "-1000000003", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "265", + "childIds": [] + }, + { + "nodeId": "-1000000004", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "266", + "childIds": [] + }, + { + "nodeId": "-1000000006", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "268", + "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": "270", + "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": "270", + "childIds": [] + }, + { + "nodeId": "-1000000010", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "271", + "childIds": [] + }, + { + "nodeId": "-1000000011", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "272", + "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": "273", + "childIds": [] + }, + { + "nodeId": "88", + "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": "87", + "childIds": ["89", "90"], + "backendDOMNodeId": 88 + }, + { + "nodeId": "92", + "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": "91", + "childIds": ["93", "14"], + "backendDOMNodeId": 92 + }, + { + "nodeId": "95", + "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": "94", + "childIds": ["96", "97"], + "backendDOMNodeId": 95 + }, + { + "nodeId": "99", + "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": "98", + "childIds": ["100", "101"], + "backendDOMNodeId": 99 + }, + { + "nodeId": "103", + "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": "102", + "childIds": ["104", "105"], + "backendDOMNodeId": 103 + }, + { + "nodeId": "107", + "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": "106", + "childIds": ["108", "109"], + "backendDOMNodeId": 107 + }, + { + "nodeId": "111", + "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": "110", + "childIds": ["112", "113"], + "backendDOMNodeId": 111 + }, + { + "nodeId": "288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory in action" + } + } + ] + }, + "properties": [], + "parentId": "117", + "childIds": ["-1000000045"], + "backendDOMNodeId": 288 + }, + { + "nodeId": "-1000000046", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + }, + "properties": [], + "parentId": "289", + "childIds": [] + }, + { + "nodeId": "-1000000047", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + }, + "properties": [], + "parentId": "290", + "childIds": [] + }, + { + "nodeId": "-1000000048", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "291", + "childIds": [] + }, + { + "nodeId": "292", + "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": "122", + "childIds": ["-1000000049"], + "backendDOMNodeId": 292 + }, + { + "nodeId": "-1000000050", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with " + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "-1000000051", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "124", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "3", + "childIds": ["125", "126", "128", "158", "159", "160", "161", "162"], + "backendDOMNodeId": 124 + }, + { + "nodeId": "125", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 125 + }, + { + "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": "124", + "childIds": ["127"], + "backendDOMNodeId": 126 + }, + { + "nodeId": "128", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": ["129"], + "backendDOMNodeId": 128 + }, + { + "nodeId": "129", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "128", + "childIds": ["130", "131", "151"], + "backendDOMNodeId": 129 + }, + { + "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": "131", + "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": "129", + "childIds": ["132", "136", "137", "147", "149"], + "backendDOMNodeId": 131 + }, + { + "nodeId": "151", + "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: 3:56" + }, + "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": 236.51333618164062 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "0" + } + } + ], + "parentId": "129", + "childIds": [], + "backendDOMNodeId": 151 + }, + { + "nodeId": "158", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 158 + }, + { + "nodeId": "159", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 159 + }, + { + "nodeId": "160", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 160 + }, + { + "nodeId": "161", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "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": "124", + "childIds": [ + "163", + "167", + "171", + "175", + "179", + "183", + "187", + "191", + "195", + "199" + ], + "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": "162", + "childIds": [], + "backendDOMNodeId": 163 + }, + { + "nodeId": "167", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 167 + }, + { + "nodeId": "171", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 171 + }, + { + "nodeId": "175", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 175 + }, + { + "nodeId": "179", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 179 + }, + { + "nodeId": "183", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 183 + }, + { + "nodeId": "187", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 187 + }, + { + "nodeId": "191", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 191 + }, + { + "nodeId": "195", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 195 + }, + { + "nodeId": "199", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 199 + }, + { + "nodeId": "294", + "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": "203", + "childIds": ["-1000000052"], + "backendDOMNodeId": 294 + }, + { + "nodeId": "-1000000053", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "295", + "childIds": [] + }, + { + "nodeId": "296", + "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": "206", + "childIds": ["-1000000054"], + "backendDOMNodeId": 296 + }, + { + "nodeId": "297", + "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": "206", + "childIds": ["-1000000055"], + "backendDOMNodeId": 297 + }, + { + "nodeId": "298", + "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": "207", + "childIds": ["-1000000056"], + "backendDOMNodeId": 298 + }, + { + "nodeId": "299", + "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": "207", + "childIds": ["-1000000057"], + "backendDOMNodeId": 299 + }, + { + "nodeId": "300", + "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": "207", + "childIds": ["-1000000058"], + "backendDOMNodeId": 300 + }, + { + "nodeId": "208", + "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": "207", + "childIds": ["301"], + "backendDOMNodeId": 208 + }, + { + "nodeId": "302", + "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": "207", + "childIds": ["-1000000060"], + "backendDOMNodeId": 302 + }, + { + "nodeId": "303", + "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": "207", + "childIds": ["-1000000061"], + "backendDOMNodeId": 303 + }, + { + "nodeId": "304", + "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": "207", + "childIds": ["-1000000062"], + "backendDOMNodeId": 304 + }, + { + "nodeId": "210", + "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": "207", + "childIds": ["305"], + "backendDOMNodeId": 210 + }, + { + "nodeId": "306", + "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": "207", + "childIds": ["-1000000064"], + "backendDOMNodeId": 306 + }, + { + "nodeId": "307", + "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": "211", + "childIds": ["-1000000065"], + "backendDOMNodeId": 307 + }, + { + "nodeId": "308", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + } + } + ] + }, + "properties": [], + "parentId": "211", + "childIds": ["-1000000066"], + "backendDOMNodeId": 308 + }, + { + "nodeId": "309", + "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": "211", + "childIds": ["-1000000067"], + "backendDOMNodeId": 309 + }, + { + "nodeId": "212", + "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:5173/#install" + } + } + ], + "parentId": "211", + "childIds": ["310"], + "backendDOMNodeId": 212 + }, + { + "nodeId": "311", + "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": "211", + "childIds": ["-1000000069"], + "backendDOMNodeId": 311 + }, + { + "nodeId": "312", + "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": "213", + "childIds": ["-1000000070"], + "backendDOMNodeId": 312 + }, + { + "nodeId": "313", + "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": "213", + "childIds": ["-1000000071"], + "backendDOMNodeId": 313 + }, + { + "nodeId": "214", + "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": "213", + "childIds": ["314"], + "backendDOMNodeId": 214 + }, + { + "nodeId": "315", + "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": "213", + "childIds": ["-1000000073"], + "backendDOMNodeId": 315 + }, + { + "nodeId": "-1000000074", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "316", + "childIds": [] + }, + { + "nodeId": "-1000000075", + "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": "317", + "childIds": [] + }, + { + "nodeId": "-1000000076", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "318", + "childIds": [] + }, + { + "nodeId": "-1000000077", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "319", + "childIds": [] + }, + { + "nodeId": "-1000000078", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "320", + "childIds": [] + }, + { + "nodeId": "321", + "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": "227", + "childIds": ["-1000000079"], + "backendDOMNodeId": 321 + }, + { + "nodeId": "228", + "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": "227", + "childIds": ["322"], + "backendDOMNodeId": 228 + }, + { + "nodeId": "323", + "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": "227", + "childIds": ["-1000000081", "-1000000082"], + "backendDOMNodeId": 323 + }, + { + "nodeId": "229", + "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": "227", + "childIds": ["324"], + "backendDOMNodeId": 229 + }, + { + "nodeId": "325", + "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": "227", + "childIds": [], + "backendDOMNodeId": 325 + }, + { + "nodeId": "326", + "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": "227", + "childIds": ["-1000000084"], + "backendDOMNodeId": 326 + }, + { + "nodeId": "327", + "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": ["-1000000085"], + "backendDOMNodeId": 327 + }, + { + "nodeId": "328", + "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": "230", + "childIds": ["-1000000086"], + "backendDOMNodeId": 328 + }, + { + "nodeId": "231", + "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": ["329"], + "backendDOMNodeId": 231 + }, + { + "nodeId": "330", + "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": "230", + "childIds": ["-1000000088"], + "backendDOMNodeId": 330 + }, + { + "nodeId": "331", + "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": ["-1000000089"], + "backendDOMNodeId": 331 + }, + { + "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": ["332"], + "backendDOMNodeId": 232 + }, + { + "nodeId": "333", + "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": ["-1000000092"], + "backendDOMNodeId": 333 + }, + { + "nodeId": "334", + "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": "233", + "childIds": ["-1000000093"], + "backendDOMNodeId": 334 + }, + { + "nodeId": "335", + "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": ["-1000000094"], + "backendDOMNodeId": 335 + }, + { + "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": ["336"], + "backendDOMNodeId": 234 + }, + { + "nodeId": "337", + "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": [], + "backendDOMNodeId": 337 + }, + { + "nodeId": "338", + "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": "233", + "childIds": ["-1000000098", "-1000000099", "-1000000100"], + "backendDOMNodeId": 338 + }, + { + "nodeId": "339", + "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": "235", + "childIds": ["-1000000101"], + "backendDOMNodeId": 339 + }, + { + "nodeId": "340", + "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": "235", + "childIds": ["-1000000102", "-1000000103", "-1000000104"], + "backendDOMNodeId": 340 + }, + { + "nodeId": "341", + "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": "235", + "childIds": ["-1000000105"], + "backendDOMNodeId": 341 + }, + { + "nodeId": "236", + "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": "235", + "childIds": ["342"], + "backendDOMNodeId": 236 + }, + { + "nodeId": "343", + "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": "237", + "childIds": ["-1000000109"], + "backendDOMNodeId": 343 + }, + { + "nodeId": "344", + "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": "237", + "childIds": [ + "-1000000110", + "-1000000111", + "-1000000112", + "-1000000113", + "-1000000114" + ], + "backendDOMNodeId": 344 + }, + { + "nodeId": "345", + "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": "239", + "childIds": ["-1000000115", "-1000000116"], + "backendDOMNodeId": 345 + }, + { + "nodeId": "241", + "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": "240", + "childIds": ["346", "347", "348", "349", "350", "351", "352"], + "backendDOMNodeId": 241 + }, + { + "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": "240", + "childIds": ["353", "354", "245"], + "backendDOMNodeId": 244 + }, + { + "nodeId": "246", + "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": "240", + "childIds": ["356", "357", "247", "359"], + "backendDOMNodeId": 246 + }, + { + "nodeId": "360", + "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": "249", + "childIds": ["-1000000135"], + "backendDOMNodeId": 360 + }, + { + "nodeId": "251", + "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": "250", + "childIds": ["361"], + "backendDOMNodeId": 251 + }, + { + "nodeId": "-1000000139", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "364", + "childIds": [] + }, + { + "nodeId": "89", + "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": "88", + "childIds": ["274"], + "backendDOMNodeId": 89 + }, + { + "nodeId": "90", + "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": "88", + "childIds": ["275"], + "backendDOMNodeId": 90 + }, + { + "nodeId": "93", + "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": "92", + "childIds": ["276"], + "backendDOMNodeId": 93 + }, + { + "nodeId": "14", + "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": "92", + "childIds": ["277"], + "backendDOMNodeId": 14 + }, + { + "nodeId": "96", + "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": "95", + "childIds": ["278"], + "backendDOMNodeId": 96 + }, + { + "nodeId": "97", + "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": "95", + "childIds": ["279"], + "backendDOMNodeId": 97 + }, + { + "nodeId": "100", + "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": "99", + "childIds": ["280"], + "backendDOMNodeId": 100 + }, + { + "nodeId": "101", + "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": "99", + "childIds": ["281"], + "backendDOMNodeId": 101 + }, + { + "nodeId": "104", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "103", + "childIds": ["282"], + "backendDOMNodeId": 104 + }, + { + "nodeId": "105", + "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": "103", + "childIds": ["283"], + "backendDOMNodeId": 105 + }, + { + "nodeId": "108", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "107", + "childIds": ["284"], + "backendDOMNodeId": 108 + }, + { + "nodeId": "109", + "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": "107", + "childIds": ["285"], + "backendDOMNodeId": 109 + }, + { + "nodeId": "112", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "111", + "childIds": ["286"], + "backendDOMNodeId": 112 + }, + { + "nodeId": "113", + "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": "111", + "childIds": ["287"], + "backendDOMNodeId": 113 + }, + { + "nodeId": "-1000000045", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action" + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "-1000000049", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "292", + "childIds": [] + }, + { + "nodeId": "127", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "126", + "childIds": [], + "backendDOMNodeId": 127 + }, + { + "nodeId": "132", + "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": "131", + "childIds": ["133"], + "backendDOMNodeId": 132 + }, + { + "nodeId": "136", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "131", + "childIds": [], + "backendDOMNodeId": 136 + }, + { + "nodeId": "137", + "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": "131", + "childIds": ["138", "139", "146"], + "backendDOMNodeId": 137 + }, + { + "nodeId": "147", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "131", + "childIds": ["148"], + "backendDOMNodeId": 147 + }, + { + "nodeId": "149", + "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": "131", + "childIds": ["150"], + "backendDOMNodeId": 149 + }, + { + "nodeId": "-1000000052", + "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": "294", + "childIds": [] + }, + { + "nodeId": "-1000000054", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "296", + "childIds": [] + }, + { + "nodeId": "-1000000055", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "297", + "childIds": [] + }, + { + "nodeId": "-1000000056", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "298", + "childIds": [] + }, + { + "nodeId": "-1000000057", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "299", + "childIds": [] + }, + { + "nodeId": "-1000000058", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "300", + "childIds": [] + }, + { + "nodeId": "301", + "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": "208", + "childIds": ["-1000000059"], + "backendDOMNodeId": 301 + }, + { + "nodeId": "-1000000060", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "302", + "childIds": [] + }, + { + "nodeId": "-1000000061", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "303", + "childIds": [] + }, + { + "nodeId": "-1000000062", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "304", + "childIds": [] + }, + { + "nodeId": "305", + "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": "210", + "childIds": ["-1000000063"], + "backendDOMNodeId": 305 + }, + { + "nodeId": "-1000000064", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "306", + "childIds": [] + }, + { + "nodeId": "-1000000065", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "307", + "childIds": [] + }, + { + "nodeId": "-1000000066", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + }, + "properties": [], + "parentId": "308", + "childIds": [] + }, + { + "nodeId": "-1000000067", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "309", + "childIds": [] + }, + { + "nodeId": "310", + "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": "212", + "childIds": ["-1000000068"], + "backendDOMNodeId": 310 + }, + { + "nodeId": "-1000000069", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "311", + "childIds": [] + }, + { + "nodeId": "-1000000070", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "312", + "childIds": [] + }, + { + "nodeId": "-1000000071", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "313", + "childIds": [] + }, + { + "nodeId": "314", + "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": "214", + "childIds": ["-1000000072"], + "backendDOMNodeId": 314 + }, + { + "nodeId": "-1000000073", + "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": "315", + "childIds": [] + }, + { + "nodeId": "-1000000079", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "321", + "childIds": [] + }, + { + "nodeId": "322", + "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": "228", + "childIds": ["-1000000080"], + "backendDOMNodeId": 322 + }, + { + "nodeId": "-1000000081", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "-1000000082", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "with " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "324", + "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": "229", + "childIds": ["-1000000083"], + "backendDOMNodeId": 324 + }, + { + "nodeId": "-1000000084", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "326", + "childIds": [] + }, + { + "nodeId": "-1000000085", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "327", + "childIds": [] + }, + { + "nodeId": "-1000000086", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "328", + "childIds": [] + }, + { + "nodeId": "329", + "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": "231", + "childIds": ["-1000000087"], + "backendDOMNodeId": 329 + }, + { + "nodeId": "-1000000088", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python package:" + }, + "properties": [], + "parentId": "330", + "childIds": [] + }, + { + "nodeId": "-1000000089", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "331", + "childIds": [] + }, + { + "nodeId": "332", + "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": "232", + "childIds": ["-1000000090", "-1000000091"], + "backendDOMNodeId": 332 + }, + { + "nodeId": "-1000000092", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "333", + "childIds": [] + }, + { + "nodeId": "-1000000093", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "334", + "childIds": [] + }, + { + "nodeId": "-1000000094", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "335", + "childIds": [] + }, + { + "nodeId": "336", + "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": "234", + "childIds": ["-1000000095", "-1000000096", "-1000000097"], + "backendDOMNodeId": 336 + }, + { + "nodeId": "-1000000098", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000099", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "dropped OT-2 " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000100", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "support)" + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000101", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "339", + "childIds": [] + }, + { + "nodeId": "-1000000102", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000103", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python interpreter in " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000104", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode via" + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000105", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "341", + "childIds": [] + }, + { + "nodeId": "342", + "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": "236", + "childIds": ["-1000000106", "-1000000107", "-1000000108"], + "backendDOMNodeId": 342 + }, + { + "nodeId": "-1000000109", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "343", + "childIds": [] + }, + { + "nodeId": "-1000000110", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000111", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "OT-2? Keep them in a " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "separate virtual " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000113", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000114", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "switch per protocol." + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000115", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000116", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette" + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "346", + "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": "241", + "childIds": ["-1000000117"], + "backendDOMNodeId": 346 + }, + { + "nodeId": "347", + "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": "241", + "childIds": ["-1000000118", "-1000000119"], + "backendDOMNodeId": 347 + }, + { + "nodeId": "348", + "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": "241", + "childIds": ["-1000000120"], + "backendDOMNodeId": 348 + }, + { + "nodeId": "349", + "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": "241", + "childIds": ["-1000000121"], + "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": "241", + "childIds": ["-1000000122"], + "backendDOMNodeId": 350 + }, + { + "nodeId": "351", + "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": "241", + "childIds": ["-1000000123"], + "backendDOMNodeId": 351 + }, + { + "nodeId": "352", + "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": "241", + "childIds": ["-1000000124"], + "backendDOMNodeId": 352 + }, + { + "nodeId": "353", + "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": "244", + "childIds": ["-1000000125"], + "backendDOMNodeId": 353 + }, + { + "nodeId": "354", + "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": "244", + "childIds": ["-1000000126"], + "backendDOMNodeId": 354 + }, + { + "nodeId": "245", + "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": "244", + "childIds": ["355"], + "backendDOMNodeId": 245 + }, + { + "nodeId": "356", + "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": "246", + "childIds": ["-1000000130"], + "backendDOMNodeId": 356 + }, + { + "nodeId": "357", + "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": "246", + "childIds": ["-1000000131", "-1000000132"], + "backendDOMNodeId": 357 + }, + { + "nodeId": "247", + "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": "246", + "childIds": ["358"], + "backendDOMNodeId": 247 + }, + { + "nodeId": "359", + "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": "246", + "childIds": ["-1000000134"], + "backendDOMNodeId": 359 + }, + { + "nodeId": "-1000000135", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "360", + "childIds": [] + }, + { + "nodeId": "361", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + } + } + ] + }, + "properties": [], + "parentId": "251", + "childIds": ["-1000000136"], + "backendDOMNodeId": 361 + }, + { + "nodeId": "274", + "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": "89", + "childIds": ["-1000000013"], + "backendDOMNodeId": 274 + }, + { + "nodeId": "275", + "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": "90", + "childIds": ["-1000000014", "-1000000015", "-1000000016"], + "backendDOMNodeId": 275 + }, + { + "nodeId": "276", + "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": "93", + "childIds": ["-1000000017"], + "backendDOMNodeId": 276 + }, + { + "nodeId": "277", + "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": "14", + "childIds": ["-1000000018", "-1000000019", "-1000000020"], + "backendDOMNodeId": 277 + }, + { + "nodeId": "278", + "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": "96", + "childIds": ["-1000000021"], + "backendDOMNodeId": 278 + }, + { + "nodeId": "279", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "97", + "childIds": [ + "-1000000022", + "-1000000023", + "-1000000024", + "-1000000025", + "-1000000026" + ], + "backendDOMNodeId": 279 + }, + { + "nodeId": "280", + "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": "100", + "childIds": ["-1000000027"], + "backendDOMNodeId": 280 + }, + { + "nodeId": "281", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "101", + "childIds": ["-1000000028", "-1000000029", "-1000000030"], + "backendDOMNodeId": 281 + }, + { + "nodeId": "282", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + } + ] + }, + "properties": [], + "parentId": "104", + "childIds": ["-1000000031"], + "backendDOMNodeId": 282 + }, + { + "nodeId": "283", + "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": "105", + "childIds": ["-1000000032", "-1000000033", "-1000000034"], + "backendDOMNodeId": 283 + }, + { + "nodeId": "284", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + } + ] + }, + "properties": [], + "parentId": "108", + "childIds": ["-1000000035"], + "backendDOMNodeId": 284 + }, + { + "nodeId": "285", + "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, with step search to land fast.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly, with step search to land fast." + } + } + ] + }, + "properties": [], + "parentId": "109", + "childIds": ["-1000000036", "-1000000037", "-1000000038", "-1000000039"], + "backendDOMNodeId": 285 + }, + { + "nodeId": "286", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + } + ] + }, + "properties": [], + "parentId": "112", + "childIds": ["-1000000040"], + "backendDOMNodeId": 286 + }, + { + "nodeId": "287", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command." + } + } + ] + }, + "properties": [], + "parentId": "113", + "childIds": ["-1000000041", "-1000000042", "-1000000043", "-1000000044"], + "backendDOMNodeId": 287 + }, + { + "nodeId": "133", + "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": [], + "backendDOMNodeId": 133 + }, + { + "nodeId": "138", + "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": "137", + "childIds": [], + "backendDOMNodeId": 138 + }, + { + "nodeId": "139", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "volume", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "volume" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "volume" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "value": { + "type": "number", + "value": 100 + }, + "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": "1" + } + } + ], + "parentId": "137", + "childIds": [], + "backendDOMNodeId": 139 + }, + { + "nodeId": "146", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "137", + "childIds": [], + "backendDOMNodeId": 146 + }, + { + "nodeId": "148", + "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": "147", + "childIds": [], + "backendDOMNodeId": 148 + }, + { + "nodeId": "150", + "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": "149", + "childIds": [], + "backendDOMNodeId": 150 + }, + { + "nodeId": "-1000000059", + "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": "301", + "childIds": [] + }, + { + "nodeId": "-1000000063", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "305", + "childIds": [] + }, + { + "nodeId": "-1000000068", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "310", + "childIds": [] + }, + { + "nodeId": "-1000000072", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "314", + "childIds": [] + }, + { + "nodeId": "-1000000080", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "322", + "childIds": [] + }, + { + "nodeId": "-1000000083", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "324", + "childIds": [] + }, + { + "nodeId": "-1000000087", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "329", + "childIds": [] + }, + { + "nodeId": "-1000000090", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000091", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install opentrons" + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000095", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000096", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000097", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000106", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000107", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000108", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000117", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "346", + "childIds": [] + }, + { + "nodeId": "-1000000118", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command " + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000119", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette (" + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000120", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "348", + "childIds": [] + }, + { + "nodeId": "-1000000121", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/" + }, + "properties": [], + "parentId": "349", + "childIds": [] + }, + { + "nodeId": "-1000000122", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "350", + "childIds": [] + }, + { + "nodeId": "-1000000123", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "351", + "childIds": [] + }, + { + "nodeId": "-1000000124", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "352", + "childIds": [] + }, + { + "nodeId": "-1000000125", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "353", + "childIds": [] + }, + { + "nodeId": "-1000000126", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "354", + "childIds": [] + }, + { + "nodeId": "355", + "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": "245", + "childIds": ["-1000000127", "-1000000128", "-1000000129"], + "backendDOMNodeId": 355 + }, + { + "nodeId": "-1000000130", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "356", + "childIds": [] + }, + { + "nodeId": "-1000000131", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "-1000000132", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "downloaded " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "358", + "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": "247", + "childIds": ["-1000000133"], + "backendDOMNodeId": 358 + }, + { + "nodeId": "-1000000134", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " file" + }, + "properties": [], + "parentId": "359", + "childIds": [] + }, + { + "nodeId": "-1000000136", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + }, + "properties": [], + "parentId": "361", + "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": "274", + "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": "275", + "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": "275", + "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": "275", + "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": "276", + "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": "277", + "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": "277", + "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": "277", + "childIds": [] + }, + { + "nodeId": "-1000000021", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000022", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000023", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Parameters, with a guard that blocks " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000024", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "analysis on unstaged csv_file params, in " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000025", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "English and Japanese — your original code " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000026", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "is never modified." + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000027", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000028", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000029", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "files (.json) next to your protocol file and " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000030", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "they just work." + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000031", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window" + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000032", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000033", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000034", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "283", + "childIds": [] + }, + { + "nodeId": "-1000000035", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search" + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000036", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000037", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Steps and hit Enter to jump the " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000038", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "visualization state instantly, with step " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000039", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "search to land fast." + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000040", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler" + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000041", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000042", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".bundled.py with a line map via the " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000043", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory: Bundle Protocol " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000044", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "command." + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000127", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000128", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install from " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000129", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSIX..." + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000133", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "358", + "childIds": [] + } +] diff --git a/.opencode/skills/verify-web/artifacts/review-fix-grid/dom.html b/.opencode/skills/verify-web/artifacts/review-fix-grid/dom.html new file mode 100644 index 0000000..ab5eede --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-grid/dom.html @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + + Protocol Factory — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Factory

+ 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 Runtime Parameters, with a + guard that blocks analysis on unstaged csv_file params, in + English and Japanese — your original code is never + modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place sibling custom labware definition files (.json) next + to your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out / Aux Window

    +

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

    +
    +
  • +
  • +
    +

    Step Jumper + Search

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly, with step + search to land fast. +

    +
    +
  • +
  • +
    +

    Multi-file Bundler

    +

    + Bundle from helpers import x into <name>.bundled.py + with a line map via the Protocol Factory: Bundle Protocol + command. +

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

+ Generate protocols with AI, verify with Protocol Factory +

+

+ Connect Protocol Factory 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 Factory 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-factory-0.2.9-alpha.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/review-fix-grid/result.json b/.opencode/skills/verify-web/artifacts/review-fix-grid/result.json new file mode 100644 index 0000000..5642ed2 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-grid/result.json @@ -0,0 +1,36 @@ +{ + "feature": "features-grid", + "url": "http://127.0.0.1:5173/", + "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 / Aux Window", + "Step Jumper + Search", + "Multi-file Bundler" + ], + "error": null + } + ], + "finishedAt": "2026-09-23T04:11:14.474Z" +} diff --git a/.opencode/skills/verify-web/artifacts/review-fix-grid/screenshot.png b/.opencode/skills/verify-web/artifacts/review-fix-grid/screenshot.png new file mode 100644 index 0000000..9b18e24 Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/review-fix-grid/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/review-fix-grid/vite-server.log b/.opencode/skills/verify-web/artifacts/review-fix-grid/vite-server.log new file mode 100644 index 0000000..40d091d --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-grid/vite-server.log @@ -0,0 +1,5 @@ + + VITE v8.2.2 ready in 131 ms + + ➜ Local: http://127.0.0.1:5173/ +12:11:14 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/review-fix-grid/dom.html diff --git a/.opencode/skills/verify-web/artifacts/review-fix-hero/axtree.json b/.opencode/skills/verify-web/artifacts/review-fix-hero/axtree.json new file mode 100644 index 0000000..913e788 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-hero/axtree.json @@ -0,0 +1,11647 @@ +[ + { + "nodeId": "2", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory — 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 Factory — 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:5173/" + } + } + ], + "childIds": ["21"], + "backendDOMNodeId": 2, + "frameId": "827F8A9FC00A153DCF44EBA4F70DE5F3" + }, + { + "nodeId": "21", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "2", + "childIds": ["46"], + "backendDOMNodeId": 21 + }, + { + "nodeId": "46", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "21", + "childIds": ["47"], + "backendDOMNodeId": 46 + }, + { + "nodeId": "47", + "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": "46", + "childIds": ["48"], + "backendDOMNodeId": 47 + }, + { + "nodeId": "48", + "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": "47", + "childIds": ["49", "67", "252", "258"], + "backendDOMNodeId": 48 + }, + { + "nodeId": "49", + "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": "48", + "childIds": ["50"], + "backendDOMNodeId": 49 + }, + { + "nodeId": "67", + "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": "48", + "childIds": ["68", "83", "114", "118", "215", "220"], + "backendDOMNodeId": 67 + }, + { + "nodeId": "252", + "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": "48", + "childIds": ["253"], + "backendDOMNodeId": 252 + }, + { + "nodeId": "258", + "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": "48", + "childIds": ["259"], + "backendDOMNodeId": 258 + }, + { + "nodeId": "50", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "49", + "childIds": ["51", "58", "61"], + "backendDOMNodeId": 50 + }, + { + "nodeId": "51", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "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:5173/#top" + } + } + ], + "parentId": "50", + "childIds": ["57"], + "backendDOMNodeId": 51 + }, + { + "nodeId": "58", + "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": "50", + "childIds": ["59", "60"], + "backendDOMNodeId": 58 + }, + { + "nodeId": "61", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "50", + "childIds": ["62", "63"], + "backendDOMNodeId": 61 + }, + { + "nodeId": "62", + "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": "61", + "childIds": ["267"], + "backendDOMNodeId": 62 + }, + { + "nodeId": "63", + "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": "61", + "childIds": [], + "backendDOMNodeId": 63 + }, + { + "nodeId": "68", + "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": "67", + "childIds": ["69"], + "backendDOMNodeId": 68 + }, + { + "nodeId": "83", + "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": "67", + "childIds": ["13"], + "backendDOMNodeId": 83 + }, + { + "nodeId": "114", + "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": "67", + "childIds": ["115"], + "backendDOMNodeId": 114 + }, + { + "nodeId": "118", + "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": "67", + "childIds": ["119"], + "backendDOMNodeId": 118 + }, + { + "nodeId": "215", + "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": "67", + "childIds": ["216"], + "backendDOMNodeId": 215 + }, + { + "nodeId": "220", + "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": "67", + "childIds": ["221"], + "backendDOMNodeId": 220 + }, + { + "nodeId": "253", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "252", + "childIds": ["257"], + "backendDOMNodeId": 253 + }, + { + "nodeId": "257", + "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": "253", + "childIds": ["362"], + "backendDOMNodeId": 257 + }, + { + "nodeId": "259", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "258", + "childIds": ["260", "261"], + "backendDOMNodeId": 259 + }, + { + "nodeId": "260", + "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": "259", + "childIds": ["363"], + "backendDOMNodeId": 260 + }, + { + "nodeId": "261", + "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": "259", + "childIds": ["262"], + "backendDOMNodeId": 261 + }, + { + "nodeId": "57", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "51", + "childIds": ["264"], + "backendDOMNodeId": 57 + }, + { + "nodeId": "264", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "57", + "childIds": ["-1000000002"], + "backendDOMNodeId": 264 + }, + { + "nodeId": "59", + "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:5173/#features" + } + } + ], + "parentId": "58", + "childIds": ["265"], + "backendDOMNodeId": 59 + }, + { + "nodeId": "60", + "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:5173/#install" + } + } + ], + "parentId": "58", + "childIds": ["266"], + "backendDOMNodeId": 60 + }, + { + "nodeId": "267", + "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": "62", + "childIds": ["-1000000005"], + "backendDOMNodeId": 267 + }, + { + "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"], + "backendDOMNodeId": 69 + }, + { + "nodeId": "70", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "69", + "childIds": ["71", "74", "12"], + "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": "70", + "childIds": ["72", "73"], + "backendDOMNodeId": 71 + }, + { + "nodeId": "72", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "71", + "childIds": ["268"], + "backendDOMNodeId": 72 + }, + { + "nodeId": "73", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "71", + "childIds": ["269"], + "backendDOMNodeId": 73 + }, + { + "nodeId": "269", + "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": "73", + "childIds": ["-1000000007"], + "backendDOMNodeId": 269 + }, + { + "nodeId": "74", + "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": "70", + "childIds": ["270"], + "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": "70", + "childIds": ["75", "76"], + "backendDOMNodeId": 12 + }, + { + "nodeId": "75", + "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": "12", + "childIds": ["271"], + "backendDOMNodeId": 75 + }, + { + "nodeId": "76", + "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:5173/#install" + } + } + ], + "parentId": "12", + "childIds": ["272"], + "backendDOMNodeId": 76 + }, + { + "nodeId": "13", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "83", + "childIds": ["84", "85"], + "backendDOMNodeId": 13 + }, + { + "nodeId": "84", + "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": "13", + "childIds": ["273"], + "backendDOMNodeId": 84 + }, + { + "nodeId": "85", + "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": "13", + "childIds": ["86", "90", "94", "98", "102", "106", "110"], + "backendDOMNodeId": 85 + }, + { + "nodeId": "115", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "114", + "childIds": ["116"], + "backendDOMNodeId": 115 + }, + { + "nodeId": "116", + "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": "115", + "childIds": ["3", "117"], + "backendDOMNodeId": 116 + }, + { + "nodeId": "119", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "118", + "childIds": ["120", "121", "123", "204", "205"], + "backendDOMNodeId": 119 + }, + { + "nodeId": "120", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "119", + "childIds": ["289"], + "backendDOMNodeId": 120 + }, + { + "nodeId": "121", + "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": "119", + "childIds": ["290", "291", "122", "293"], + "backendDOMNodeId": 121 + }, + { + "nodeId": "123", + "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": "119", + "childIds": ["5", "203"], + "backendDOMNodeId": 123 + }, + { + "nodeId": "204", + "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": "119", + "childIds": ["295"], + "backendDOMNodeId": 204 + }, + { + "nodeId": "205", + "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": "119", + "childIds": ["206", "207", "211", "213"], + "backendDOMNodeId": 205 + }, + { + "nodeId": "216", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "215", + "childIds": ["217", "218", "219"], + "backendDOMNodeId": 216 + }, + { + "nodeId": "217", + "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": "216", + "childIds": ["316"], + "backendDOMNodeId": 217 + }, + { + "nodeId": "218", + "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": "216", + "childIds": ["317"], + "backendDOMNodeId": 218 + }, + { + "nodeId": "219", + "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": "216", + "childIds": ["318"], + "backendDOMNodeId": 219 + }, + { + "nodeId": "221", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "220", + "childIds": ["222", "223"], + "backendDOMNodeId": 221 + }, + { + "nodeId": "222", + "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": "221", + "childIds": ["319"], + "backendDOMNodeId": 222 + }, + { + "nodeId": "223", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "221", + "childIds": ["224", "238", "248"], + "backendDOMNodeId": 223 + }, + { + "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": "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": "224", + "childIds": ["320"], + "backendDOMNodeId": 225 + }, + { + "nodeId": "226", + "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": "224", + "childIds": ["227", "230", "233", "235", "237"], + "backendDOMNodeId": 226 + }, + { + "nodeId": "238", + "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": "223", + "childIds": ["239", "240"], + "backendDOMNodeId": 238 + }, + { + "nodeId": "248", + "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": "223", + "childIds": ["249", "250"], + "backendDOMNodeId": 248 + }, + { + "nodeId": "362", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "257", + "childIds": ["-1000000137"], + "backendDOMNodeId": 362 + }, + { + "nodeId": "363", + "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": "260", + "childIds": ["-1000000138"], + "backendDOMNodeId": 363 + }, + { + "nodeId": "262", + "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": "261", + "childIds": ["364"], + "backendDOMNodeId": 262 + }, + { + "nodeId": "-1000000002", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "264", + "childIds": [] + }, + { + "nodeId": "265", + "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": "59", + "childIds": ["-1000000003"], + "backendDOMNodeId": 265 + }, + { + "nodeId": "266", + "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": "60", + "childIds": ["-1000000004"], + "backendDOMNodeId": 266 + }, + { + "nodeId": "-1000000005", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "267", + "childIds": [] + }, + { + "nodeId": "268", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "72", + "childIds": ["-1000000006"], + "backendDOMNodeId": 268 + }, + { + "nodeId": "-1000000007", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "269", + "childIds": [] + }, + { + "nodeId": "270", + "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": "74", + "childIds": ["-1000000008", "-1000000009"], + "backendDOMNodeId": 270 + }, + { + "nodeId": "271", + "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": "75", + "childIds": ["-1000000010"], + "backendDOMNodeId": 271 + }, + { + "nodeId": "272", + "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": "76", + "childIds": ["-1000000011"], + "backendDOMNodeId": 272 + }, + { + "nodeId": "273", + "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": "84", + "childIds": ["-1000000012"], + "backendDOMNodeId": 273 + }, + { + "nodeId": "86", + "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": "85", + "childIds": ["87"], + "backendDOMNodeId": 86 + }, + { + "nodeId": "90", + "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": "85", + "childIds": ["91"], + "backendDOMNodeId": 90 + }, + { + "nodeId": "94", + "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": "85", + "childIds": ["95"], + "backendDOMNodeId": 94 + }, + { + "nodeId": "98", + "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": "85", + "childIds": ["99"], + "backendDOMNodeId": 98 + }, + { + "nodeId": "102", + "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": "85", + "childIds": ["103"], + "backendDOMNodeId": 102 + }, + { + "nodeId": "106", + "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": "85", + "childIds": ["107"], + "backendDOMNodeId": 106 + }, + { + "nodeId": "110", + "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": "85", + "childIds": ["111"], + "backendDOMNodeId": 110 + }, + { + "nodeId": "3", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory 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 Factory visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Factory 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": "116", + "childIds": [], + "backendDOMNodeId": 3 + }, + { + "nodeId": "117", + "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": "116", + "childIds": ["288"], + "backendDOMNodeId": 117 + }, + { + "nodeId": "289", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "120", + "childIds": ["-1000000046"], + "backendDOMNodeId": 289 + }, + { + "nodeId": "290", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "121", + "childIds": ["-1000000047"], + "backendDOMNodeId": 290 + }, + { + "nodeId": "291", + "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": "121", + "childIds": ["-1000000048"], + "backendDOMNodeId": 291 + }, + { + "nodeId": "122", + "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": "121", + "childIds": ["292"], + "backendDOMNodeId": 122 + }, + { + "nodeId": "293", + "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": "121", + "childIds": ["-1000000050", "-1000000051"], + "backendDOMNodeId": 293 + }, + { + "nodeId": "5", + "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 Factory", + "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 Factory" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "123", + "childIds": ["124"], + "backendDOMNodeId": 5 + }, + { + "nodeId": "203", + "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": "123", + "childIds": ["294"], + "backendDOMNodeId": 203 + }, + { + "nodeId": "295", + "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": "204", + "childIds": ["-1000000053"], + "backendDOMNodeId": 295 + }, + { + "nodeId": "206", + "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": "205", + "childIds": ["296", "297"], + "backendDOMNodeId": 206 + }, + { + "nodeId": "207", + "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": "205", + "childIds": ["298", "299", "300", "208", "302", "303", "304", "210", "306"], + "backendDOMNodeId": 207 + }, + { + "nodeId": "211", + "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": "205", + "childIds": ["307", "308", "309", "212", "311"], + "backendDOMNodeId": 211 + }, + { + "nodeId": "213", + "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": "205", + "childIds": ["312", "313", "214", "315"], + "backendDOMNodeId": 213 + }, + { + "nodeId": "316", + "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": "217", + "childIds": ["-1000000074"], + "backendDOMNodeId": 316 + }, + { + "nodeId": "317", + "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": "218", + "childIds": ["-1000000075"], + "backendDOMNodeId": 317 + }, + { + "nodeId": "318", + "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": "219", + "childIds": ["-1000000076"], + "backendDOMNodeId": 318 + }, + { + "nodeId": "319", + "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": "222", + "childIds": ["-1000000077"], + "backendDOMNodeId": 319 + }, + { + "nodeId": "320", + "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": "225", + "childIds": ["-1000000078"], + "backendDOMNodeId": 320 + }, + { + "nodeId": "227", + "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": "226", + "childIds": ["321", "228", "323", "229", "325", "326"], + "backendDOMNodeId": 227 + }, + { + "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": "226", + "childIds": ["327", "328", "231", "330", "331", "232"], + "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": "226", + "childIds": ["333", "334", "335", "234", "337", "338"], + "backendDOMNodeId": 233 + }, + { + "nodeId": "235", + "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": "226", + "childIds": ["339", "340", "341", "236"], + "backendDOMNodeId": 235 + }, + { + "nodeId": "237", + "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": "226", + "childIds": ["343", "344"], + "backendDOMNodeId": 237 + }, + { + "nodeId": "239", + "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": "238", + "childIds": ["345"], + "backendDOMNodeId": 239 + }, + { + "nodeId": "240", + "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": "238", + "childIds": ["241", "244", "246"], + "backendDOMNodeId": 240 + }, + { + "nodeId": "249", + "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": "248", + "childIds": ["360"], + "backendDOMNodeId": 249 + }, + { + "nodeId": "250", + "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": "248", + "childIds": ["251"], + "backendDOMNodeId": 250 + }, + { + "nodeId": "-1000000137", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "362", + "childIds": [] + }, + { + "nodeId": "-1000000138", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "363", + "childIds": [] + }, + { + "nodeId": "364", + "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": "262", + "childIds": ["-1000000139"], + "backendDOMNodeId": 364 + }, + { + "nodeId": "-1000000003", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "265", + "childIds": [] + }, + { + "nodeId": "-1000000004", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "266", + "childIds": [] + }, + { + "nodeId": "-1000000006", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "268", + "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": "270", + "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": "270", + "childIds": [] + }, + { + "nodeId": "-1000000010", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "271", + "childIds": [] + }, + { + "nodeId": "-1000000011", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "272", + "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": "273", + "childIds": [] + }, + { + "nodeId": "87", + "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": "86", + "childIds": ["88", "89"], + "backendDOMNodeId": 87 + }, + { + "nodeId": "91", + "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": "90", + "childIds": ["92", "93"], + "backendDOMNodeId": 91 + }, + { + "nodeId": "95", + "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": "94", + "childIds": ["96", "97"], + "backendDOMNodeId": 95 + }, + { + "nodeId": "99", + "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": "98", + "childIds": ["100", "101"], + "backendDOMNodeId": 99 + }, + { + "nodeId": "103", + "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": "102", + "childIds": ["104", "105"], + "backendDOMNodeId": 103 + }, + { + "nodeId": "107", + "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": "106", + "childIds": ["108", "109"], + "backendDOMNodeId": 107 + }, + { + "nodeId": "111", + "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": "110", + "childIds": ["112", "113"], + "backendDOMNodeId": 111 + }, + { + "nodeId": "288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory in action" + } + } + ] + }, + "properties": [], + "parentId": "117", + "childIds": ["-1000000045"], + "backendDOMNodeId": 288 + }, + { + "nodeId": "-1000000046", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + }, + "properties": [], + "parentId": "289", + "childIds": [] + }, + { + "nodeId": "-1000000047", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + }, + "properties": [], + "parentId": "290", + "childIds": [] + }, + { + "nodeId": "-1000000048", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "291", + "childIds": [] + }, + { + "nodeId": "292", + "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": "122", + "childIds": ["-1000000049"], + "backendDOMNodeId": 292 + }, + { + "nodeId": "-1000000050", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with " + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "-1000000051", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "124", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "5", + "childIds": ["125", "126", "128", "158", "159", "160", "161", "162"], + "backendDOMNodeId": 124 + }, + { + "nodeId": "125", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 125 + }, + { + "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": "124", + "childIds": ["127"], + "backendDOMNodeId": 126 + }, + { + "nodeId": "128", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": ["129"], + "backendDOMNodeId": 128 + }, + { + "nodeId": "129", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "128", + "childIds": ["130", "131", "151"], + "backendDOMNodeId": 129 + }, + { + "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": "131", + "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": "129", + "childIds": ["132", "136", "137", "147", "149"], + "backendDOMNodeId": 131 + }, + { + "nodeId": "151", + "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: 3:56" + }, + "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": 236.51333618164062 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "0" + } + } + ], + "parentId": "129", + "childIds": [], + "backendDOMNodeId": 151 + }, + { + "nodeId": "158", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 158 + }, + { + "nodeId": "159", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 159 + }, + { + "nodeId": "160", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "childIds": [], + "backendDOMNodeId": 160 + }, + { + "nodeId": "161", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "124", + "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": "124", + "childIds": [ + "163", + "167", + "171", + "175", + "179", + "183", + "187", + "191", + "195", + "199" + ], + "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": "162", + "childIds": [], + "backendDOMNodeId": 163 + }, + { + "nodeId": "167", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 167 + }, + { + "nodeId": "171", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 171 + }, + { + "nodeId": "175", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 175 + }, + { + "nodeId": "179", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 179 + }, + { + "nodeId": "183", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 183 + }, + { + "nodeId": "187", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 187 + }, + { + "nodeId": "191", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 191 + }, + { + "nodeId": "195", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 195 + }, + { + "nodeId": "199", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "162", + "childIds": [], + "backendDOMNodeId": 199 + }, + { + "nodeId": "294", + "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": "203", + "childIds": ["-1000000052"], + "backendDOMNodeId": 294 + }, + { + "nodeId": "-1000000053", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "295", + "childIds": [] + }, + { + "nodeId": "296", + "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": "206", + "childIds": ["-1000000054"], + "backendDOMNodeId": 296 + }, + { + "nodeId": "297", + "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": "206", + "childIds": ["-1000000055"], + "backendDOMNodeId": 297 + }, + { + "nodeId": "298", + "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": "207", + "childIds": ["-1000000056"], + "backendDOMNodeId": 298 + }, + { + "nodeId": "299", + "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": "207", + "childIds": ["-1000000057"], + "backendDOMNodeId": 299 + }, + { + "nodeId": "300", + "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": "207", + "childIds": ["-1000000058"], + "backendDOMNodeId": 300 + }, + { + "nodeId": "208", + "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": "207", + "childIds": ["301"], + "backendDOMNodeId": 208 + }, + { + "nodeId": "302", + "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": "207", + "childIds": ["-1000000060"], + "backendDOMNodeId": 302 + }, + { + "nodeId": "303", + "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": "207", + "childIds": ["-1000000061"], + "backendDOMNodeId": 303 + }, + { + "nodeId": "304", + "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": "207", + "childIds": ["-1000000062"], + "backendDOMNodeId": 304 + }, + { + "nodeId": "210", + "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": "207", + "childIds": ["305"], + "backendDOMNodeId": 210 + }, + { + "nodeId": "306", + "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": "207", + "childIds": ["-1000000064"], + "backendDOMNodeId": 306 + }, + { + "nodeId": "307", + "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": "211", + "childIds": ["-1000000065"], + "backendDOMNodeId": 307 + }, + { + "nodeId": "308", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + } + } + ] + }, + "properties": [], + "parentId": "211", + "childIds": ["-1000000066"], + "backendDOMNodeId": 308 + }, + { + "nodeId": "309", + "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": "211", + "childIds": ["-1000000067"], + "backendDOMNodeId": 309 + }, + { + "nodeId": "212", + "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:5173/#install" + } + } + ], + "parentId": "211", + "childIds": ["310"], + "backendDOMNodeId": 212 + }, + { + "nodeId": "311", + "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": "211", + "childIds": ["-1000000069"], + "backendDOMNodeId": 311 + }, + { + "nodeId": "312", + "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": "213", + "childIds": ["-1000000070"], + "backendDOMNodeId": 312 + }, + { + "nodeId": "313", + "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": "213", + "childIds": ["-1000000071"], + "backendDOMNodeId": 313 + }, + { + "nodeId": "214", + "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": "213", + "childIds": ["314"], + "backendDOMNodeId": 214 + }, + { + "nodeId": "315", + "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": "213", + "childIds": ["-1000000073"], + "backendDOMNodeId": 315 + }, + { + "nodeId": "-1000000074", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "316", + "childIds": [] + }, + { + "nodeId": "-1000000075", + "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": "317", + "childIds": [] + }, + { + "nodeId": "-1000000076", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "318", + "childIds": [] + }, + { + "nodeId": "-1000000077", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "319", + "childIds": [] + }, + { + "nodeId": "-1000000078", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "320", + "childIds": [] + }, + { + "nodeId": "321", + "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": "227", + "childIds": ["-1000000079"], + "backendDOMNodeId": 321 + }, + { + "nodeId": "228", + "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": "227", + "childIds": ["322"], + "backendDOMNodeId": 228 + }, + { + "nodeId": "323", + "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": "227", + "childIds": ["-1000000081", "-1000000082"], + "backendDOMNodeId": 323 + }, + { + "nodeId": "229", + "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": "227", + "childIds": ["324"], + "backendDOMNodeId": 229 + }, + { + "nodeId": "325", + "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": "227", + "childIds": [], + "backendDOMNodeId": 325 + }, + { + "nodeId": "326", + "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": "227", + "childIds": ["-1000000084"], + "backendDOMNodeId": 326 + }, + { + "nodeId": "327", + "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": ["-1000000085"], + "backendDOMNodeId": 327 + }, + { + "nodeId": "328", + "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": "230", + "childIds": ["-1000000086"], + "backendDOMNodeId": 328 + }, + { + "nodeId": "231", + "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": ["329"], + "backendDOMNodeId": 231 + }, + { + "nodeId": "330", + "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": "230", + "childIds": ["-1000000088"], + "backendDOMNodeId": 330 + }, + { + "nodeId": "331", + "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": ["-1000000089"], + "backendDOMNodeId": 331 + }, + { + "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": ["332"], + "backendDOMNodeId": 232 + }, + { + "nodeId": "333", + "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": ["-1000000092"], + "backendDOMNodeId": 333 + }, + { + "nodeId": "334", + "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": "233", + "childIds": ["-1000000093"], + "backendDOMNodeId": 334 + }, + { + "nodeId": "335", + "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": ["-1000000094"], + "backendDOMNodeId": 335 + }, + { + "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": ["336"], + "backendDOMNodeId": 234 + }, + { + "nodeId": "337", + "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": [], + "backendDOMNodeId": 337 + }, + { + "nodeId": "338", + "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": "233", + "childIds": ["-1000000098", "-1000000099", "-1000000100"], + "backendDOMNodeId": 338 + }, + { + "nodeId": "339", + "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": "235", + "childIds": ["-1000000101"], + "backendDOMNodeId": 339 + }, + { + "nodeId": "340", + "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": "235", + "childIds": ["-1000000102", "-1000000103", "-1000000104"], + "backendDOMNodeId": 340 + }, + { + "nodeId": "341", + "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": "235", + "childIds": ["-1000000105"], + "backendDOMNodeId": 341 + }, + { + "nodeId": "236", + "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": "235", + "childIds": ["342"], + "backendDOMNodeId": 236 + }, + { + "nodeId": "343", + "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": "237", + "childIds": ["-1000000109"], + "backendDOMNodeId": 343 + }, + { + "nodeId": "344", + "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": "237", + "childIds": [ + "-1000000110", + "-1000000111", + "-1000000112", + "-1000000113", + "-1000000114" + ], + "backendDOMNodeId": 344 + }, + { + "nodeId": "345", + "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": "239", + "childIds": ["-1000000115", "-1000000116"], + "backendDOMNodeId": 345 + }, + { + "nodeId": "241", + "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": "240", + "childIds": ["346", "347", "348", "349", "350", "351", "352"], + "backendDOMNodeId": 241 + }, + { + "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": "240", + "childIds": ["353", "354", "245"], + "backendDOMNodeId": 244 + }, + { + "nodeId": "246", + "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": "240", + "childIds": ["356", "357", "247", "359"], + "backendDOMNodeId": 246 + }, + { + "nodeId": "360", + "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": "249", + "childIds": ["-1000000135"], + "backendDOMNodeId": 360 + }, + { + "nodeId": "251", + "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": "250", + "childIds": ["361"], + "backendDOMNodeId": 251 + }, + { + "nodeId": "-1000000139", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "364", + "childIds": [] + }, + { + "nodeId": "88", + "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": "87", + "childIds": ["274"], + "backendDOMNodeId": 88 + }, + { + "nodeId": "89", + "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": "87", + "childIds": ["275"], + "backendDOMNodeId": 89 + }, + { + "nodeId": "92", + "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": "91", + "childIds": ["276"], + "backendDOMNodeId": 92 + }, + { + "nodeId": "93", + "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": "91", + "childIds": ["277"], + "backendDOMNodeId": 93 + }, + { + "nodeId": "96", + "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": "95", + "childIds": ["278"], + "backendDOMNodeId": 96 + }, + { + "nodeId": "97", + "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": "95", + "childIds": ["279"], + "backendDOMNodeId": 97 + }, + { + "nodeId": "100", + "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": "99", + "childIds": ["280"], + "backendDOMNodeId": 100 + }, + { + "nodeId": "101", + "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": "99", + "childIds": ["281"], + "backendDOMNodeId": 101 + }, + { + "nodeId": "104", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "103", + "childIds": ["282"], + "backendDOMNodeId": 104 + }, + { + "nodeId": "105", + "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": "103", + "childIds": ["283"], + "backendDOMNodeId": 105 + }, + { + "nodeId": "108", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "107", + "childIds": ["284"], + "backendDOMNodeId": 108 + }, + { + "nodeId": "109", + "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": "107", + "childIds": ["285"], + "backendDOMNodeId": 109 + }, + { + "nodeId": "112", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "111", + "childIds": ["286"], + "backendDOMNodeId": 112 + }, + { + "nodeId": "113", + "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": "111", + "childIds": ["287"], + "backendDOMNodeId": 113 + }, + { + "nodeId": "-1000000045", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action" + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "-1000000049", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "292", + "childIds": [] + }, + { + "nodeId": "127", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "126", + "childIds": [], + "backendDOMNodeId": 127 + }, + { + "nodeId": "132", + "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": "131", + "childIds": ["133"], + "backendDOMNodeId": 132 + }, + { + "nodeId": "136", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "131", + "childIds": [], + "backendDOMNodeId": 136 + }, + { + "nodeId": "137", + "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": "131", + "childIds": ["138", "139", "146"], + "backendDOMNodeId": 137 + }, + { + "nodeId": "147", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "131", + "childIds": ["148"], + "backendDOMNodeId": 147 + }, + { + "nodeId": "149", + "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": "131", + "childIds": ["150"], + "backendDOMNodeId": 149 + }, + { + "nodeId": "-1000000052", + "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": "294", + "childIds": [] + }, + { + "nodeId": "-1000000054", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "296", + "childIds": [] + }, + { + "nodeId": "-1000000055", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "297", + "childIds": [] + }, + { + "nodeId": "-1000000056", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "298", + "childIds": [] + }, + { + "nodeId": "-1000000057", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "299", + "childIds": [] + }, + { + "nodeId": "-1000000058", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "300", + "childIds": [] + }, + { + "nodeId": "301", + "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": "208", + "childIds": ["-1000000059"], + "backendDOMNodeId": 301 + }, + { + "nodeId": "-1000000060", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "302", + "childIds": [] + }, + { + "nodeId": "-1000000061", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "303", + "childIds": [] + }, + { + "nodeId": "-1000000062", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "304", + "childIds": [] + }, + { + "nodeId": "305", + "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": "210", + "childIds": ["-1000000063"], + "backendDOMNodeId": 305 + }, + { + "nodeId": "-1000000064", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "306", + "childIds": [] + }, + { + "nodeId": "-1000000065", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "307", + "childIds": [] + }, + { + "nodeId": "-1000000066", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + }, + "properties": [], + "parentId": "308", + "childIds": [] + }, + { + "nodeId": "-1000000067", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "309", + "childIds": [] + }, + { + "nodeId": "310", + "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": "212", + "childIds": ["-1000000068"], + "backendDOMNodeId": 310 + }, + { + "nodeId": "-1000000069", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "311", + "childIds": [] + }, + { + "nodeId": "-1000000070", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "312", + "childIds": [] + }, + { + "nodeId": "-1000000071", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "313", + "childIds": [] + }, + { + "nodeId": "314", + "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": "214", + "childIds": ["-1000000072"], + "backendDOMNodeId": 314 + }, + { + "nodeId": "-1000000073", + "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": "315", + "childIds": [] + }, + { + "nodeId": "-1000000079", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "321", + "childIds": [] + }, + { + "nodeId": "322", + "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": "228", + "childIds": ["-1000000080"], + "backendDOMNodeId": 322 + }, + { + "nodeId": "-1000000081", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "-1000000082", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "with " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "324", + "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": "229", + "childIds": ["-1000000083"], + "backendDOMNodeId": 324 + }, + { + "nodeId": "-1000000084", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "326", + "childIds": [] + }, + { + "nodeId": "-1000000085", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "327", + "childIds": [] + }, + { + "nodeId": "-1000000086", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "328", + "childIds": [] + }, + { + "nodeId": "329", + "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": "231", + "childIds": ["-1000000087"], + "backendDOMNodeId": 329 + }, + { + "nodeId": "-1000000088", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python package:" + }, + "properties": [], + "parentId": "330", + "childIds": [] + }, + { + "nodeId": "-1000000089", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "331", + "childIds": [] + }, + { + "nodeId": "332", + "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": "232", + "childIds": ["-1000000090", "-1000000091"], + "backendDOMNodeId": 332 + }, + { + "nodeId": "-1000000092", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "333", + "childIds": [] + }, + { + "nodeId": "-1000000093", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "334", + "childIds": [] + }, + { + "nodeId": "-1000000094", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "335", + "childIds": [] + }, + { + "nodeId": "336", + "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": "234", + "childIds": ["-1000000095", "-1000000096", "-1000000097"], + "backendDOMNodeId": 336 + }, + { + "nodeId": "-1000000098", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000099", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "dropped OT-2 " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000100", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "support)" + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000101", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "339", + "childIds": [] + }, + { + "nodeId": "-1000000102", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000103", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python interpreter in " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000104", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode via" + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000105", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "341", + "childIds": [] + }, + { + "nodeId": "342", + "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": "236", + "childIds": ["-1000000106", "-1000000107", "-1000000108"], + "backendDOMNodeId": 342 + }, + { + "nodeId": "-1000000109", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "343", + "childIds": [] + }, + { + "nodeId": "-1000000110", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000111", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "OT-2? Keep them in a " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "separate virtual " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000113", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000114", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "switch per protocol." + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000115", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000116", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette" + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "346", + "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": "241", + "childIds": ["-1000000117"], + "backendDOMNodeId": 346 + }, + { + "nodeId": "347", + "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": "241", + "childIds": ["-1000000118", "-1000000119"], + "backendDOMNodeId": 347 + }, + { + "nodeId": "348", + "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": "241", + "childIds": ["-1000000120"], + "backendDOMNodeId": 348 + }, + { + "nodeId": "349", + "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": "241", + "childIds": ["-1000000121"], + "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": "241", + "childIds": ["-1000000122"], + "backendDOMNodeId": 350 + }, + { + "nodeId": "351", + "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": "241", + "childIds": ["-1000000123"], + "backendDOMNodeId": 351 + }, + { + "nodeId": "352", + "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": "241", + "childIds": ["-1000000124"], + "backendDOMNodeId": 352 + }, + { + "nodeId": "353", + "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": "244", + "childIds": ["-1000000125"], + "backendDOMNodeId": 353 + }, + { + "nodeId": "354", + "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": "244", + "childIds": ["-1000000126"], + "backendDOMNodeId": 354 + }, + { + "nodeId": "245", + "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": "244", + "childIds": ["355"], + "backendDOMNodeId": 245 + }, + { + "nodeId": "356", + "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": "246", + "childIds": ["-1000000130"], + "backendDOMNodeId": 356 + }, + { + "nodeId": "357", + "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": "246", + "childIds": ["-1000000131", "-1000000132"], + "backendDOMNodeId": 357 + }, + { + "nodeId": "247", + "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": "246", + "childIds": ["358"], + "backendDOMNodeId": 247 + }, + { + "nodeId": "359", + "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": "246", + "childIds": ["-1000000134"], + "backendDOMNodeId": 359 + }, + { + "nodeId": "-1000000135", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "360", + "childIds": [] + }, + { + "nodeId": "361", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + } + } + ] + }, + "properties": [], + "parentId": "251", + "childIds": ["-1000000136"], + "backendDOMNodeId": 361 + }, + { + "nodeId": "274", + "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": "88", + "childIds": ["-1000000013"], + "backendDOMNodeId": 274 + }, + { + "nodeId": "275", + "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": "89", + "childIds": ["-1000000014", "-1000000015", "-1000000016"], + "backendDOMNodeId": 275 + }, + { + "nodeId": "276", + "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": "92", + "childIds": ["-1000000017"], + "backendDOMNodeId": 276 + }, + { + "nodeId": "277", + "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": "93", + "childIds": ["-1000000018", "-1000000019", "-1000000020"], + "backendDOMNodeId": 277 + }, + { + "nodeId": "278", + "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": "96", + "childIds": ["-1000000021"], + "backendDOMNodeId": 278 + }, + { + "nodeId": "279", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "97", + "childIds": [ + "-1000000022", + "-1000000023", + "-1000000024", + "-1000000025", + "-1000000026" + ], + "backendDOMNodeId": 279 + }, + { + "nodeId": "280", + "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": "100", + "childIds": ["-1000000027"], + "backendDOMNodeId": 280 + }, + { + "nodeId": "281", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "101", + "childIds": ["-1000000028", "-1000000029", "-1000000030"], + "backendDOMNodeId": 281 + }, + { + "nodeId": "282", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + } + ] + }, + "properties": [], + "parentId": "104", + "childIds": ["-1000000031"], + "backendDOMNodeId": 282 + }, + { + "nodeId": "283", + "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": "105", + "childIds": ["-1000000032", "-1000000033", "-1000000034"], + "backendDOMNodeId": 283 + }, + { + "nodeId": "284", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + } + ] + }, + "properties": [], + "parentId": "108", + "childIds": ["-1000000035"], + "backendDOMNodeId": 284 + }, + { + "nodeId": "285", + "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, with step search to land fast.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly, with step search to land fast." + } + } + ] + }, + "properties": [], + "parentId": "109", + "childIds": ["-1000000036", "-1000000037", "-1000000038", "-1000000039"], + "backendDOMNodeId": 285 + }, + { + "nodeId": "286", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + } + ] + }, + "properties": [], + "parentId": "112", + "childIds": ["-1000000040"], + "backendDOMNodeId": 286 + }, + { + "nodeId": "287", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command." + } + } + ] + }, + "properties": [], + "parentId": "113", + "childIds": ["-1000000041", "-1000000042", "-1000000043", "-1000000044"], + "backendDOMNodeId": 287 + }, + { + "nodeId": "133", + "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": [], + "backendDOMNodeId": 133 + }, + { + "nodeId": "138", + "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": "137", + "childIds": [], + "backendDOMNodeId": 138 + }, + { + "nodeId": "139", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "volume", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "volume" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "volume" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "value": { + "type": "number", + "value": 100 + }, + "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": "1" + } + } + ], + "parentId": "137", + "childIds": [], + "backendDOMNodeId": 139 + }, + { + "nodeId": "146", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "137", + "childIds": [], + "backendDOMNodeId": 146 + }, + { + "nodeId": "148", + "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": "147", + "childIds": [], + "backendDOMNodeId": 148 + }, + { + "nodeId": "150", + "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": "149", + "childIds": [], + "backendDOMNodeId": 150 + }, + { + "nodeId": "-1000000059", + "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": "301", + "childIds": [] + }, + { + "nodeId": "-1000000063", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "305", + "childIds": [] + }, + { + "nodeId": "-1000000068", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "310", + "childIds": [] + }, + { + "nodeId": "-1000000072", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "314", + "childIds": [] + }, + { + "nodeId": "-1000000080", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "322", + "childIds": [] + }, + { + "nodeId": "-1000000083", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "324", + "childIds": [] + }, + { + "nodeId": "-1000000087", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "329", + "childIds": [] + }, + { + "nodeId": "-1000000090", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000091", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install opentrons" + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000095", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000096", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000097", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000106", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000107", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000108", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000117", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "346", + "childIds": [] + }, + { + "nodeId": "-1000000118", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command " + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000119", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette (" + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000120", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "348", + "childIds": [] + }, + { + "nodeId": "-1000000121", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/" + }, + "properties": [], + "parentId": "349", + "childIds": [] + }, + { + "nodeId": "-1000000122", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "350", + "childIds": [] + }, + { + "nodeId": "-1000000123", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "351", + "childIds": [] + }, + { + "nodeId": "-1000000124", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "352", + "childIds": [] + }, + { + "nodeId": "-1000000125", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "353", + "childIds": [] + }, + { + "nodeId": "-1000000126", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "354", + "childIds": [] + }, + { + "nodeId": "355", + "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": "245", + "childIds": ["-1000000127", "-1000000128", "-1000000129"], + "backendDOMNodeId": 355 + }, + { + "nodeId": "-1000000130", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "356", + "childIds": [] + }, + { + "nodeId": "-1000000131", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "-1000000132", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "downloaded " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "358", + "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": "247", + "childIds": ["-1000000133"], + "backendDOMNodeId": 358 + }, + { + "nodeId": "-1000000134", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " file" + }, + "properties": [], + "parentId": "359", + "childIds": [] + }, + { + "nodeId": "-1000000136", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + }, + "properties": [], + "parentId": "361", + "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": "274", + "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": "275", + "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": "275", + "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": "275", + "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": "276", + "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": "277", + "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": "277", + "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": "277", + "childIds": [] + }, + { + "nodeId": "-1000000021", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000022", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000023", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Parameters, with a guard that blocks " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000024", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "analysis on unstaged csv_file params, in " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000025", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "English and Japanese — your original code " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000026", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "is never modified." + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000027", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000028", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000029", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "files (.json) next to your protocol file and " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000030", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "they just work." + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000031", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window" + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000032", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000033", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000034", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "283", + "childIds": [] + }, + { + "nodeId": "-1000000035", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search" + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000036", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000037", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Steps and hit Enter to jump the " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000038", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "visualization state instantly, with step " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000039", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "search to land fast." + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000040", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler" + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000041", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000042", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".bundled.py with a line map via the " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000043", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory: Bundle Protocol " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000044", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "command." + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000127", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000128", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install from " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000129", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSIX..." + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000133", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "358", + "childIds": [] + } +] diff --git a/.opencode/skills/verify-web/artifacts/review-fix-hero/dom.html b/.opencode/skills/verify-web/artifacts/review-fix-hero/dom.html new file mode 100644 index 0000000..ab5eede --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-hero/dom.html @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + + Protocol Factory — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Factory

+ 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 Runtime Parameters, with a + guard that blocks analysis on unstaged csv_file params, in + English and Japanese — your original code is never + modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place sibling custom labware definition files (.json) next + to your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out / Aux Window

    +

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

    +
    +
  • +
  • +
    +

    Step Jumper + Search

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly, with step + search to land fast. +

    +
    +
  • +
  • +
    +

    Multi-file Bundler

    +

    + Bundle from helpers import x into <name>.bundled.py + with a line map via the Protocol Factory: Bundle Protocol + command. +

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

+ Generate protocols with AI, verify with Protocol Factory +

+

+ Connect Protocol Factory 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 Factory 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-factory-0.2.9-alpha.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/review-fix-hero/result.json b/.opencode/skills/verify-web/artifacts/review-fix-hero/result.json new file mode 100644 index 0000000..ef0fc13 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-hero/result.json @@ -0,0 +1,41 @@ +{ + "feature": "hero", + "url": "http://127.0.0.1:5173/", + "passed": 4, + "total": 4, + "ok": true, + "checks": [ + { + "id": "hero-headline", + "pass": true, + "value": "Protocol Factory", + "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-23T04:10:48.099Z" +} diff --git a/.opencode/skills/verify-web/artifacts/review-fix-hero/screenshot.png b/.opencode/skills/verify-web/artifacts/review-fix-hero/screenshot.png new file mode 100644 index 0000000..76c75df Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/review-fix-hero/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/review-fix-hero/vite-server.log b/.opencode/skills/verify-web/artifacts/review-fix-hero/vite-server.log new file mode 100644 index 0000000..5660c70 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-hero/vite-server.log @@ -0,0 +1,5 @@ + + VITE v8.2.2 ready in 111 ms + + ➜ Local: http://127.0.0.1:5173/ +12:10:48 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/review-fix-hero/dom.html diff --git a/.opencode/skills/verify-web/artifacts/review-fix-install/axtree.json b/.opencode/skills/verify-web/artifacts/review-fix-install/axtree.json new file mode 100644 index 0000000..b2108d2 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-install/axtree.json @@ -0,0 +1,11647 @@ +[ + { + "nodeId": "2", + "ignored": false, + "role": { + "type": "internalRole", + "value": "RootWebArea" + }, + "chromeRole": { + "type": "internalRole", + "value": 144 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory — 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 Factory — 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:5173/#install" + } + } + ], + "childIds": ["22"], + "backendDOMNodeId": 2, + "frameId": "BD2A46F2AD024804ECE4DE0206CA1C2C" + }, + { + "nodeId": "22", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "2", + "childIds": ["47"], + "backendDOMNodeId": 22 + }, + { + "nodeId": "47", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "22", + "childIds": ["48"], + "backendDOMNodeId": 47 + }, + { + "nodeId": "48", + "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": "47", + "childIds": ["49"], + "backendDOMNodeId": 48 + }, + { + "nodeId": "49", + "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": "48", + "childIds": ["50", "68", "252", "258"], + "backendDOMNodeId": 49 + }, + { + "nodeId": "50", + "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": "49", + "childIds": ["51"], + "backendDOMNodeId": 50 + }, + { + "nodeId": "68", + "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": "49", + "childIds": ["69", "84", "115", "119", "216", "221"], + "backendDOMNodeId": 68 + }, + { + "nodeId": "252", + "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": "49", + "childIds": ["253"], + "backendDOMNodeId": 252 + }, + { + "nodeId": "258", + "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": "49", + "childIds": ["259"], + "backendDOMNodeId": 258 + }, + { + "nodeId": "51", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "50", + "childIds": ["52", "59", "62"], + "backendDOMNodeId": 51 + }, + { + "nodeId": "52", + "ignored": false, + "role": { + "type": "role", + "value": "link" + }, + "chromeRole": { + "type": "internalRole", + "value": 110 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "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:5173/#top" + } + } + ], + "parentId": "51", + "childIds": ["58"], + "backendDOMNodeId": 52 + }, + { + "nodeId": "59", + "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": "51", + "childIds": ["60", "61"], + "backendDOMNodeId": 59 + }, + { + "nodeId": "62", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "51", + "childIds": ["63", "64"], + "backendDOMNodeId": 62 + }, + { + "nodeId": "63", + "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": "62", + "childIds": ["267"], + "backendDOMNodeId": 63 + }, + { + "nodeId": "64", + "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": "62", + "childIds": [], + "backendDOMNodeId": 64 + }, + { + "nodeId": "69", + "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": "68", + "childIds": ["70"], + "backendDOMNodeId": 69 + }, + { + "nodeId": "84", + "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": "68", + "childIds": ["13"], + "backendDOMNodeId": 84 + }, + { + "nodeId": "115", + "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": "68", + "childIds": ["116"], + "backendDOMNodeId": 115 + }, + { + "nodeId": "119", + "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": "68", + "childIds": ["120"], + "backendDOMNodeId": 119 + }, + { + "nodeId": "216", + "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": "68", + "childIds": ["217"], + "backendDOMNodeId": 216 + }, + { + "nodeId": "221", + "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": "68", + "childIds": ["222"], + "backendDOMNodeId": 221 + }, + { + "nodeId": "253", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "252", + "childIds": ["257"], + "backendDOMNodeId": 253 + }, + { + "nodeId": "257", + "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": "253", + "childIds": ["362"], + "backendDOMNodeId": 257 + }, + { + "nodeId": "259", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "258", + "childIds": ["260", "261"], + "backendDOMNodeId": 259 + }, + { + "nodeId": "260", + "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": "259", + "childIds": ["363"], + "backendDOMNodeId": 260 + }, + { + "nodeId": "261", + "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": "259", + "childIds": ["262"], + "backendDOMNodeId": 261 + }, + { + "nodeId": "58", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "52", + "childIds": ["264"], + "backendDOMNodeId": 58 + }, + { + "nodeId": "264", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "58", + "childIds": ["-1000000002"], + "backendDOMNodeId": 264 + }, + { + "nodeId": "60", + "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:5173/#features" + } + } + ], + "parentId": "59", + "childIds": ["265"], + "backendDOMNodeId": 60 + }, + { + "nodeId": "61", + "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:5173/#install" + } + } + ], + "parentId": "59", + "childIds": ["266"], + "backendDOMNodeId": 61 + }, + { + "nodeId": "267", + "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": "63", + "childIds": ["-1000000005"], + "backendDOMNodeId": 267 + }, + { + "nodeId": "70", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "69", + "childIds": ["71"], + "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": "70", + "childIds": ["72", "75", "12"], + "backendDOMNodeId": 71 + }, + { + "nodeId": "72", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "71", + "childIds": ["73", "74"], + "backendDOMNodeId": 72 + }, + { + "nodeId": "73", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 1 + } + } + ], + "parentId": "72", + "childIds": ["268"], + "backendDOMNodeId": 73 + }, + { + "nodeId": "74", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "72", + "childIds": ["269"], + "backendDOMNodeId": 74 + }, + { + "nodeId": "269", + "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": "74", + "childIds": ["-1000000007"], + "backendDOMNodeId": 269 + }, + { + "nodeId": "75", + "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": "71", + "childIds": ["270"], + "backendDOMNodeId": 75 + }, + { + "nodeId": "12", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "71", + "childIds": ["76", "77"], + "backendDOMNodeId": 12 + }, + { + "nodeId": "76", + "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": "12", + "childIds": ["271"], + "backendDOMNodeId": 76 + }, + { + "nodeId": "77", + "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:5173/#install" + } + } + ], + "parentId": "12", + "childIds": ["272"], + "backendDOMNodeId": 77 + }, + { + "nodeId": "13", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "84", + "childIds": ["85", "86"], + "backendDOMNodeId": 13 + }, + { + "nodeId": "85", + "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": "13", + "childIds": ["273"], + "backendDOMNodeId": 85 + }, + { + "nodeId": "86", + "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": "13", + "childIds": ["87", "91", "95", "99", "103", "107", "111"], + "backendDOMNodeId": 86 + }, + { + "nodeId": "116", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "115", + "childIds": ["117"], + "backendDOMNodeId": 116 + }, + { + "nodeId": "117", + "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": "116", + "childIds": ["4", "118"], + "backendDOMNodeId": 117 + }, + { + "nodeId": "120", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "119", + "childIds": ["121", "122", "124", "205", "206"], + "backendDOMNodeId": 120 + }, + { + "nodeId": "121", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 2 + } + } + ], + "parentId": "120", + "childIds": ["289"], + "backendDOMNodeId": 121 + }, + { + "nodeId": "122", + "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": "120", + "childIds": ["290", "291", "123", "293"], + "backendDOMNodeId": 122 + }, + { + "nodeId": "124", + "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": "120", + "childIds": ["3", "204"], + "backendDOMNodeId": 124 + }, + { + "nodeId": "205", + "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": "120", + "childIds": ["295"], + "backendDOMNodeId": 205 + }, + { + "nodeId": "206", + "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": "120", + "childIds": ["207", "208", "212", "214"], + "backendDOMNodeId": 206 + }, + { + "nodeId": "217", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "216", + "childIds": ["218", "219", "220"], + "backendDOMNodeId": 217 + }, + { + "nodeId": "218", + "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": "217", + "childIds": ["316"], + "backendDOMNodeId": 218 + }, + { + "nodeId": "219", + "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": "217", + "childIds": ["317"], + "backendDOMNodeId": 219 + }, + { + "nodeId": "220", + "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": "217", + "childIds": ["318"], + "backendDOMNodeId": 220 + }, + { + "nodeId": "222", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "221", + "childIds": ["223", "224"], + "backendDOMNodeId": 222 + }, + { + "nodeId": "223", + "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": "222", + "childIds": ["319"], + "backendDOMNodeId": 223 + }, + { + "nodeId": "224", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "222", + "childIds": ["225", "239", "14"], + "backendDOMNodeId": 224 + }, + { + "nodeId": "225", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "224", + "childIds": ["226", "227"], + "backendDOMNodeId": 225 + }, + { + "nodeId": "226", + "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": "225", + "childIds": ["320"], + "backendDOMNodeId": 226 + }, + { + "nodeId": "227", + "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": "225", + "childIds": ["228", "231", "234", "236", "238"], + "backendDOMNodeId": 227 + }, + { + "nodeId": "239", + "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": "224", + "childIds": ["240", "241"], + "backendDOMNodeId": 239 + }, + { + "nodeId": "14", + "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": "224", + "childIds": ["249", "250"], + "backendDOMNodeId": 14 + }, + { + "nodeId": "362", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + } + } + ] + }, + "properties": [], + "parentId": "257", + "childIds": ["-1000000137"], + "backendDOMNodeId": 362 + }, + { + "nodeId": "363", + "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": "260", + "childIds": ["-1000000138"], + "backendDOMNodeId": 363 + }, + { + "nodeId": "262", + "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": "261", + "childIds": ["364"], + "backendDOMNodeId": 262 + }, + { + "nodeId": "-1000000002", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "264", + "childIds": [] + }, + { + "nodeId": "265", + "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": "60", + "childIds": ["-1000000003"], + "backendDOMNodeId": 265 + }, + { + "nodeId": "266", + "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": "61", + "childIds": ["-1000000004"], + "backendDOMNodeId": 266 + }, + { + "nodeId": "-1000000005", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "267", + "childIds": [] + }, + { + "nodeId": "268", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "73", + "childIds": ["-1000000006"], + "backendDOMNodeId": 268 + }, + { + "nodeId": "-1000000007", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "PREVIEW" + }, + "properties": [], + "parentId": "269", + "childIds": [] + }, + { + "nodeId": "270", + "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": "75", + "childIds": ["-1000000008", "-1000000009"], + "backendDOMNodeId": 270 + }, + { + "nodeId": "271", + "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": "76", + "childIds": ["-1000000010"], + "backendDOMNodeId": 271 + }, + { + "nodeId": "272", + "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": "77", + "childIds": ["-1000000011"], + "backendDOMNodeId": 272 + }, + { + "nodeId": "273", + "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": "85", + "childIds": ["-1000000012"], + "backendDOMNodeId": 273 + }, + { + "nodeId": "87", + "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": "86", + "childIds": ["88"], + "backendDOMNodeId": 87 + }, + { + "nodeId": "91", + "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": "86", + "childIds": ["92"], + "backendDOMNodeId": 91 + }, + { + "nodeId": "95", + "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": "86", + "childIds": ["96"], + "backendDOMNodeId": 95 + }, + { + "nodeId": "99", + "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": "86", + "childIds": ["100"], + "backendDOMNodeId": 99 + }, + { + "nodeId": "103", + "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": "86", + "childIds": ["104"], + "backendDOMNodeId": 103 + }, + { + "nodeId": "107", + "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": "86", + "childIds": ["108"], + "backendDOMNodeId": 107 + }, + { + "nodeId": "111", + "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": "86", + "childIds": ["112"], + "backendDOMNodeId": 111 + }, + { + "nodeId": "4", + "ignored": false, + "role": { + "type": "role", + "value": "image" + }, + "chromeRole": { + "type": "internalRole", + "value": 99 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory 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 Factory visualizing an Opentrons protocol on a simulated deck" + }, + "attribute": "alt", + "attributeValue": { + "type": "string", + "value": "Protocol Factory 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": "117", + "childIds": [], + "backendDOMNodeId": 4 + }, + { + "nodeId": "118", + "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": "117", + "childIds": ["288"], + "backendDOMNodeId": 118 + }, + { + "nodeId": "289", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + } + } + ] + }, + "properties": [], + "parentId": "121", + "childIds": ["-1000000046"], + "backendDOMNodeId": 289 + }, + { + "nodeId": "290", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + } + } + ] + }, + "properties": [], + "parentId": "122", + "childIds": ["-1000000047"], + "backendDOMNodeId": 290 + }, + { + "nodeId": "291", + "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": "122", + "childIds": ["-1000000048"], + "backendDOMNodeId": 291 + }, + { + "nodeId": "123", + "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": "122", + "childIds": ["292"], + "backendDOMNodeId": 123 + }, + { + "nodeId": "293", + "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": "122", + "childIds": ["-1000000050", "-1000000051"], + "backendDOMNodeId": 293 + }, + { + "nodeId": "3", + "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 Factory", + "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 Factory" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "Demo video of generating and fixing a protocol with protocol-fix-loop and Protocol Factory" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "124", + "childIds": ["125"], + "backendDOMNodeId": 3 + }, + { + "nodeId": "204", + "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": "124", + "childIds": ["294"], + "backendDOMNodeId": 204 + }, + { + "nodeId": "295", + "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": "205", + "childIds": ["-1000000053"], + "backendDOMNodeId": 295 + }, + { + "nodeId": "207", + "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": "206", + "childIds": ["296", "297"], + "backendDOMNodeId": 207 + }, + { + "nodeId": "208", + "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": "206", + "childIds": ["298", "299", "300", "209", "302", "303", "304", "211", "306"], + "backendDOMNodeId": 208 + }, + { + "nodeId": "212", + "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": "206", + "childIds": ["307", "308", "309", "213", "311"], + "backendDOMNodeId": 212 + }, + { + "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": "206", + "childIds": ["312", "313", "215", "315"], + "backendDOMNodeId": 214 + }, + { + "nodeId": "316", + "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": "218", + "childIds": ["-1000000074"], + "backendDOMNodeId": 316 + }, + { + "nodeId": "317", + "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": "219", + "childIds": ["-1000000075"], + "backendDOMNodeId": 317 + }, + { + "nodeId": "318", + "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": "220", + "childIds": ["-1000000076"], + "backendDOMNodeId": 318 + }, + { + "nodeId": "319", + "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": "223", + "childIds": ["-1000000077"], + "backendDOMNodeId": 319 + }, + { + "nodeId": "320", + "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": "226", + "childIds": ["-1000000078"], + "backendDOMNodeId": 320 + }, + { + "nodeId": "228", + "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": "227", + "childIds": ["321", "229", "323", "230", "325", "326"], + "backendDOMNodeId": 228 + }, + { + "nodeId": "231", + "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": "227", + "childIds": ["327", "328", "232", "330", "331", "233"], + "backendDOMNodeId": 231 + }, + { + "nodeId": "234", + "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": "227", + "childIds": ["333", "334", "335", "235", "337", "338"], + "backendDOMNodeId": 234 + }, + { + "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": "227", + "childIds": ["339", "340", "341", "237"], + "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": "227", + "childIds": ["343", "344"], + "backendDOMNodeId": 238 + }, + { + "nodeId": "240", + "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": "239", + "childIds": ["345"], + "backendDOMNodeId": 240 + }, + { + "nodeId": "241", + "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": "239", + "childIds": ["242", "245", "247"], + "backendDOMNodeId": 241 + }, + { + "nodeId": "249", + "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": "14", + "childIds": ["360"], + "backendDOMNodeId": 249 + }, + { + "nodeId": "250", + "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": "14", + "childIds": ["251"], + "backendDOMNodeId": 250 + }, + { + "nodeId": "-1000000137", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory is an independent project and is not affiliated with or endorsed by Opentrons." + }, + "properties": [], + "parentId": "362", + "childIds": [] + }, + { + "nodeId": "-1000000138", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "MIT License © 2026 Koji Kanao" + }, + "properties": [], + "parentId": "363", + "childIds": [] + }, + { + "nodeId": "364", + "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": "262", + "childIds": ["-1000000139"], + "backendDOMNodeId": 364 + }, + { + "nodeId": "-1000000003", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Features" + }, + "properties": [], + "parentId": "265", + "childIds": [] + }, + { + "nodeId": "-1000000004", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install" + }, + "properties": [], + "parentId": "266", + "childIds": [] + }, + { + "nodeId": "-1000000006", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory" + }, + "properties": [], + "parentId": "268", + "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": "270", + "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": "270", + "childIds": [] + }, + { + "nodeId": "-1000000010", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "271", + "childIds": [] + }, + { + "nodeId": "-1000000011", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide ↓" + }, + "properties": [], + "parentId": "272", + "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": "273", + "childIds": [] + }, + { + "nodeId": "88", + "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": "87", + "childIds": ["89", "90"], + "backendDOMNodeId": 88 + }, + { + "nodeId": "92", + "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": "91", + "childIds": ["93", "94"], + "backendDOMNodeId": 92 + }, + { + "nodeId": "96", + "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": "95", + "childIds": ["97", "98"], + "backendDOMNodeId": 96 + }, + { + "nodeId": "100", + "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": "99", + "childIds": ["101", "102"], + "backendDOMNodeId": 100 + }, + { + "nodeId": "104", + "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": "103", + "childIds": ["105", "106"], + "backendDOMNodeId": 104 + }, + { + "nodeId": "108", + "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": "107", + "childIds": ["109", "110"], + "backendDOMNodeId": 108 + }, + { + "nodeId": "112", + "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": "111", + "childIds": ["113", "114"], + "backendDOMNodeId": 112 + }, + { + "nodeId": "288", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Protocol Factory in action" + } + } + ] + }, + "properties": [], + "parentId": "118", + "childIds": ["-1000000045"], + "backendDOMNodeId": 288 + }, + { + "nodeId": "-1000000046", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Generate protocols with AI, verify with Protocol Factory" + }, + "properties": [], + "parentId": "289", + "childIds": [] + }, + { + "nodeId": "-1000000047", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Connect Protocol Factory to your LLM with" + }, + "properties": [], + "parentId": "290", + "childIds": [] + }, + { + "nodeId": "-1000000048", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "291", + "childIds": [] + }, + { + "nodeId": "292", + "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": "123", + "childIds": ["-1000000049"], + "backendDOMNodeId": 292 + }, + { + "nodeId": "-1000000050", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ". Generate Opentrons protocols with " + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "-1000000051", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "GitHub Copilot or Cursor, then simulate and fix them in a visual feedback loop." + }, + "properties": [], + "parentId": "293", + "childIds": [] + }, + { + "nodeId": "125", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "3", + "childIds": ["126", "127", "129", "159", "160", "161", "162", "163"], + "backendDOMNodeId": 125 + }, + { + "nodeId": "126", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "125", + "childIds": [], + "backendDOMNodeId": 126 + }, + { + "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": "125", + "childIds": ["128"], + "backendDOMNodeId": 127 + }, + { + "nodeId": "129", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "125", + "childIds": ["130"], + "backendDOMNodeId": 129 + }, + { + "nodeId": "130", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "129", + "childIds": ["131", "132", "152"], + "backendDOMNodeId": 130 + }, + { + "nodeId": "131", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "130", + "childIds": [], + "backendDOMNodeId": 131 + }, + { + "nodeId": "132", + "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": "130", + "childIds": ["133", "137", "138", "148", "150"], + "backendDOMNodeId": 132 + }, + { + "nodeId": "152", + "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: 3:56" + }, + "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": 236.51333618164062 + } + }, + { + "name": "valuetext", + "value": { + "type": "string", + "value": "0" + } + } + ], + "parentId": "130", + "childIds": [], + "backendDOMNodeId": 152 + }, + { + "nodeId": "159", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "125", + "childIds": [], + "backendDOMNodeId": 159 + }, + { + "nodeId": "160", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "125", + "childIds": [], + "backendDOMNodeId": 160 + }, + { + "nodeId": "161", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "125", + "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": "125", + "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": "125", + "childIds": [ + "164", + "168", + "172", + "176", + "180", + "184", + "188", + "192", + "196", + "200" + ], + "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": "163", + "childIds": [], + "backendDOMNodeId": 164 + }, + { + "nodeId": "168", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 168 + }, + { + "nodeId": "172", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 172 + }, + { + "nodeId": "176", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 176 + }, + { + "nodeId": "180", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 180 + }, + { + "nodeId": "184", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 184 + }, + { + "nodeId": "188", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 188 + }, + { + "nodeId": "192", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 192 + }, + { + "nodeId": "196", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 196 + }, + { + "nodeId": "200", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "163", + "childIds": [], + "backendDOMNodeId": 200 + }, + { + "nodeId": "294", + "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": "204", + "childIds": ["-1000000052"], + "backendDOMNodeId": 294 + }, + { + "nodeId": "-1000000053", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "How to use" + }, + "properties": [], + "parentId": "295", + "childIds": [] + }, + { + "nodeId": "296", + "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": "207", + "childIds": ["-1000000054"], + "backendDOMNodeId": 296 + }, + { + "nodeId": "297", + "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": "207", + "childIds": ["-1000000055"], + "backendDOMNodeId": 297 + }, + { + "nodeId": "298", + "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": "208", + "childIds": ["-1000000056"], + "backendDOMNodeId": 298 + }, + { + "nodeId": "299", + "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": "208", + "childIds": ["-1000000057"], + "backendDOMNodeId": 299 + }, + { + "nodeId": "300", + "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": "208", + "childIds": ["-1000000058"], + "backendDOMNodeId": 300 + }, + { + "nodeId": "209", + "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": "208", + "childIds": ["301"], + "backendDOMNodeId": 209 + }, + { + "nodeId": "302", + "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": "208", + "childIds": ["-1000000060"], + "backendDOMNodeId": 302 + }, + { + "nodeId": "303", + "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": "208", + "childIds": ["-1000000061"], + "backendDOMNodeId": 303 + }, + { + "nodeId": "304", + "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": "208", + "childIds": ["-1000000062"], + "backendDOMNodeId": 304 + }, + { + "nodeId": "211", + "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": "208", + "childIds": ["305"], + "backendDOMNodeId": 211 + }, + { + "nodeId": "306", + "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": "208", + "childIds": ["-1000000064"], + "backendDOMNodeId": 306 + }, + { + "nodeId": "307", + "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": "212", + "childIds": ["-1000000065"], + "backendDOMNodeId": 307 + }, + { + "nodeId": "308", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + } + } + ] + }, + "properties": [], + "parentId": "212", + "childIds": ["-1000000066"], + "backendDOMNodeId": 308 + }, + { + "nodeId": "309", + "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": "212", + "childIds": ["-1000000067"], + "backendDOMNodeId": 309 + }, + { + "nodeId": "213", + "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:5173/#install" + } + } + ], + "parentId": "212", + "childIds": ["310"], + "backendDOMNodeId": 213 + }, + { + "nodeId": "311", + "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": "212", + "childIds": ["-1000000069"], + "backendDOMNodeId": 311 + }, + { + "nodeId": "312", + "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": "214", + "childIds": ["-1000000070"], + "backendDOMNodeId": 312 + }, + { + "nodeId": "313", + "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": "214", + "childIds": ["-1000000071"], + "backendDOMNodeId": 313 + }, + { + "nodeId": "215", + "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": "214", + "childIds": ["314"], + "backendDOMNodeId": 215 + }, + { + "nodeId": "315", + "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": "214", + "childIds": ["-1000000073"], + "backendDOMNodeId": 315 + }, + { + "nodeId": "-1000000074", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Want to try the extension?" + }, + "properties": [], + "parentId": "316", + "childIds": [] + }, + { + "nodeId": "-1000000075", + "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": "317", + "childIds": [] + }, + { + "nodeId": "-1000000076", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Request access" + }, + "properties": [], + "parentId": "318", + "childIds": [] + }, + { + "nodeId": "-1000000077", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation" + }, + "properties": [], + "parentId": "319", + "childIds": [] + }, + { + "nodeId": "-1000000078", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Prerequisites" + }, + "properties": [], + "parentId": "320", + "childIds": [] + }, + { + "nodeId": "321", + "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": "228", + "childIds": ["-1000000079"], + "backendDOMNodeId": 321 + }, + { + "nodeId": "229", + "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": "228", + "childIds": ["322"], + "backendDOMNodeId": 229 + }, + { + "nodeId": "323", + "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": "228", + "childIds": ["-1000000081", "-1000000082"], + "backendDOMNodeId": 323 + }, + { + "nodeId": "230", + "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": "228", + "childIds": ["324"], + "backendDOMNodeId": 230 + }, + { + "nodeId": "325", + "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": "228", + "childIds": [], + "backendDOMNodeId": 325 + }, + { + "nodeId": "326", + "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": "228", + "childIds": ["-1000000084"], + "backendDOMNodeId": 326 + }, + { + "nodeId": "327", + "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": "231", + "childIds": ["-1000000085"], + "backendDOMNodeId": 327 + }, + { + "nodeId": "328", + "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": "231", + "childIds": ["-1000000086"], + "backendDOMNodeId": 328 + }, + { + "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": "231", + "childIds": ["329"], + "backendDOMNodeId": 232 + }, + { + "nodeId": "330", + "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": "231", + "childIds": ["-1000000088"], + "backendDOMNodeId": 330 + }, + { + "nodeId": "331", + "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": "231", + "childIds": ["-1000000089"], + "backendDOMNodeId": 331 + }, + { + "nodeId": "233", + "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": "231", + "childIds": ["332"], + "backendDOMNodeId": 233 + }, + { + "nodeId": "333", + "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": "234", + "childIds": ["-1000000092"], + "backendDOMNodeId": 333 + }, + { + "nodeId": "334", + "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": "234", + "childIds": ["-1000000093"], + "backendDOMNodeId": 334 + }, + { + "nodeId": "335", + "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": "234", + "childIds": ["-1000000094"], + "backendDOMNodeId": 335 + }, + { + "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": "234", + "childIds": ["336"], + "backendDOMNodeId": 235 + }, + { + "nodeId": "337", + "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": "234", + "childIds": [], + "backendDOMNodeId": 337 + }, + { + "nodeId": "338", + "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": "234", + "childIds": ["-1000000098", "-1000000099", "-1000000100"], + "backendDOMNodeId": 338 + }, + { + "nodeId": "339", + "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": ["-1000000101"], + "backendDOMNodeId": 339 + }, + { + "nodeId": "340", + "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": "236", + "childIds": ["-1000000102", "-1000000103", "-1000000104"], + "backendDOMNodeId": 340 + }, + { + "nodeId": "341", + "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": ["-1000000105"], + "backendDOMNodeId": 341 + }, + { + "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": ["342"], + "backendDOMNodeId": 237 + }, + { + "nodeId": "343", + "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": ["-1000000109"], + "backendDOMNodeId": 343 + }, + { + "nodeId": "344", + "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": "238", + "childIds": [ + "-1000000110", + "-1000000111", + "-1000000112", + "-1000000113", + "-1000000114" + ], + "backendDOMNodeId": 344 + }, + { + "nodeId": "345", + "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": "240", + "childIds": ["-1000000115", "-1000000116"], + "backendDOMNodeId": 345 + }, + { + "nodeId": "242", + "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": "241", + "childIds": ["346", "347", "348", "349", "350", "351", "352"], + "backendDOMNodeId": 242 + }, + { + "nodeId": "245", + "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": "241", + "childIds": ["353", "354", "246"], + "backendDOMNodeId": 245 + }, + { + "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": "241", + "childIds": ["356", "357", "248", "359"], + "backendDOMNodeId": 247 + }, + { + "nodeId": "360", + "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": "249", + "childIds": ["-1000000135"], + "backendDOMNodeId": 360 + }, + { + "nodeId": "251", + "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": "250", + "childIds": ["361"], + "backendDOMNodeId": 251 + }, + { + "nodeId": "-1000000139", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Feedback" + }, + "properties": [], + "parentId": "364", + "childIds": [] + }, + { + "nodeId": "89", + "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": "88", + "childIds": ["274"], + "backendDOMNodeId": 89 + }, + { + "nodeId": "90", + "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": "88", + "childIds": ["275"], + "backendDOMNodeId": 90 + }, + { + "nodeId": "93", + "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": "92", + "childIds": ["276"], + "backendDOMNodeId": 93 + }, + { + "nodeId": "94", + "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": "92", + "childIds": ["277"], + "backendDOMNodeId": 94 + }, + { + "nodeId": "97", + "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": "96", + "childIds": ["278"], + "backendDOMNodeId": 97 + }, + { + "nodeId": "98", + "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": "96", + "childIds": ["279"], + "backendDOMNodeId": 98 + }, + { + "nodeId": "101", + "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": "100", + "childIds": ["280"], + "backendDOMNodeId": 101 + }, + { + "nodeId": "102", + "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": "100", + "childIds": ["281"], + "backendDOMNodeId": 102 + }, + { + "nodeId": "105", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "104", + "childIds": ["282"], + "backendDOMNodeId": 105 + }, + { + "nodeId": "106", + "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": "104", + "childIds": ["283"], + "backendDOMNodeId": 106 + }, + { + "nodeId": "109", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "108", + "childIds": ["284"], + "backendDOMNodeId": 109 + }, + { + "nodeId": "110", + "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": "108", + "childIds": ["285"], + "backendDOMNodeId": 110 + }, + { + "nodeId": "113", + "ignored": false, + "role": { + "type": "role", + "value": "heading" + }, + "chromeRole": { + "type": "internalRole", + "value": 96 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "attribute": "aria-label" + }, + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "properties": [ + { + "name": "level", + "value": { + "type": "integer", + "value": 3 + } + } + ], + "parentId": "112", + "childIds": ["286"], + "backendDOMNodeId": 113 + }, + { + "nodeId": "114", + "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": "112", + "childIds": ["287"], + "backendDOMNodeId": 114 + }, + { + "nodeId": "-1000000045", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory in action" + }, + "properties": [], + "parentId": "288", + "childIds": [] + }, + { + "nodeId": "-1000000049", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "protocol-fix-loop" + }, + "properties": [], + "parentId": "292", + "childIds": [] + }, + { + "nodeId": "128", + "ignored": true, + "ignoredReasons": [ + { + "name": "notRendered", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "127", + "childIds": [], + "backendDOMNodeId": 128 + }, + { + "nodeId": "133", + "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": "132", + "childIds": ["134"], + "backendDOMNodeId": 133 + }, + { + "nodeId": "137", + "ignored": true, + "ignoredReasons": [ + { + "name": "uninteresting", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "132", + "childIds": [], + "backendDOMNodeId": 137 + }, + { + "nodeId": "138", + "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": ["139", "140", "147"], + "backendDOMNodeId": 138 + }, + { + "nodeId": "148", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "132", + "childIds": ["149"], + "backendDOMNodeId": 148 + }, + { + "nodeId": "150", + "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": "132", + "childIds": ["151"], + "backendDOMNodeId": 150 + }, + { + "nodeId": "-1000000052", + "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": "294", + "childIds": [] + }, + { + "nodeId": "-1000000054", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "296", + "childIds": [] + }, + { + "nodeId": "-1000000055", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install VSCode or Cursor" + }, + "properties": [], + "parentId": "297", + "childIds": [] + }, + { + "nodeId": "-1000000056", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "298", + "childIds": [] + }, + { + "nodeId": "-1000000057", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the skill:" + }, + "properties": [], + "parentId": "299", + "childIds": [] + }, + { + "nodeId": "-1000000058", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "300", + "childIds": [] + }, + { + "nodeId": "301", + "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": "209", + "childIds": ["-1000000059"], + "backendDOMNodeId": 301 + }, + { + "nodeId": "-1000000060", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "302", + "childIds": [] + }, + { + "nodeId": "-1000000061", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(see" + }, + "properties": [], + "parentId": "303", + "childIds": [] + }, + { + "nodeId": "-1000000062", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "304", + "childIds": [] + }, + { + "nodeId": "305", + "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": "211", + "childIds": ["-1000000063"], + "backendDOMNodeId": 305 + }, + { + "nodeId": "-1000000064", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "306", + "childIds": [] + }, + { + "nodeId": "-1000000065", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "307", + "childIds": [] + }, + { + "nodeId": "-1000000066", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install the Protocol Factory extension (see" + }, + "properties": [], + "parentId": "308", + "childIds": [] + }, + { + "nodeId": "-1000000067", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "309", + "childIds": [] + }, + { + "nodeId": "310", + "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": "213", + "childIds": ["-1000000068"], + "backendDOMNodeId": 310 + }, + { + "nodeId": "-1000000069", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "311", + "childIds": [] + }, + { + "nodeId": "-1000000070", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "312", + "childIds": [] + }, + { + "nodeId": "-1000000071", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Use " + }, + "properties": [], + "parentId": "313", + "childIds": [] + }, + { + "nodeId": "314", + "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": "215", + "childIds": ["-1000000072"], + "backendDOMNodeId": 314 + }, + { + "nodeId": "-1000000073", + "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": "315", + "childIds": [] + }, + { + "nodeId": "-1000000079", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "321", + "childIds": [] + }, + { + "nodeId": "322", + "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": "229", + "childIds": ["-1000000080"], + "backendDOMNodeId": 322 + }, + { + "nodeId": "-1000000081", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ", " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "-1000000082", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "with " + }, + "properties": [], + "parentId": "323", + "childIds": [] + }, + { + "nodeId": "324", + "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": "230", + "childIds": ["-1000000083"], + "backendDOMNodeId": 324 + }, + { + "nodeId": "-1000000084", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "available in PATH" + }, + "properties": [], + "parentId": "326", + "childIds": [] + }, + { + "nodeId": "-1000000085", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "327", + "childIds": [] + }, + { + "nodeId": "-1000000086", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "The " + }, + "properties": [], + "parentId": "328", + "childIds": [] + }, + { + "nodeId": "329", + "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": "232", + "childIds": ["-1000000087"], + "backendDOMNodeId": 329 + }, + { + "nodeId": "-1000000088", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python package:" + }, + "properties": [], + "parentId": "330", + "childIds": [] + }, + { + "nodeId": "-1000000089", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "331", + "childIds": [] + }, + { + "nodeId": "332", + "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": "233", + "childIds": ["-1000000090", "-1000000091"], + "backendDOMNodeId": 332 + }, + { + "nodeId": "-1000000092", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "333", + "childIds": [] + }, + { + "nodeId": "-1000000093", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "For OT-2 use" + }, + "properties": [], + "parentId": "334", + "childIds": [] + }, + { + "nodeId": "-1000000094", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "335", + "childIds": [] + }, + { + "nodeId": "336", + "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": "235", + "childIds": ["-1000000095", "-1000000096", "-1000000097"], + "backendDOMNodeId": 336 + }, + { + "nodeId": "-1000000098", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "(opentrons 9.1.0+ " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000099", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "dropped OT-2 " + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000100", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "support)" + }, + "properties": [], + "parentId": "338", + "childIds": [] + }, + { + "nodeId": "-1000000101", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "339", + "childIds": [] + }, + { + "nodeId": "-1000000102", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select the matching " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000103", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python interpreter in " + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000104", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode via" + }, + "properties": [], + "parentId": "340", + "childIds": [] + }, + { + "nodeId": "-1000000105", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "341", + "childIds": [] + }, + { + "nodeId": "342", + "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": "237", + "childIds": ["-1000000106", "-1000000107", "-1000000108"], + "backendDOMNodeId": 342 + }, + { + "nodeId": "-1000000109", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "343", + "childIds": [] + }, + { + "nodeId": "-1000000110", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Using both Flex and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000111", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "OT-2? Keep them in a " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000112", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "separate virtual " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000113", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "environment each and " + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000114", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "switch per protocol." + }, + "properties": [], + "parentId": "344", + "childIds": [] + }, + { + "nodeId": "-1000000115", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method A: Command " + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "-1000000116", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette" + }, + "properties": [], + "parentId": "345", + "childIds": [] + }, + { + "nodeId": "346", + "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": "242", + "childIds": ["-1000000117"], + "backendDOMNodeId": 346 + }, + { + "nodeId": "347", + "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": "242", + "childIds": ["-1000000118", "-1000000119"], + "backendDOMNodeId": 347 + }, + { + "nodeId": "348", + "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": "242", + "childIds": ["-1000000120"], + "backendDOMNodeId": 348 + }, + { + "nodeId": "349", + "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": "242", + "childIds": ["-1000000121"], + "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": "242", + "childIds": ["-1000000122"], + "backendDOMNodeId": 350 + }, + { + "nodeId": "351", + "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": "242", + "childIds": ["-1000000123"], + "backendDOMNodeId": 351 + }, + { + "nodeId": "352", + "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": "242", + "childIds": ["-1000000124"], + "backendDOMNodeId": 352 + }, + { + "nodeId": "353", + "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": "245", + "childIds": ["-1000000125"], + "backendDOMNodeId": 353 + }, + { + "nodeId": "354", + "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": "245", + "childIds": ["-1000000126"], + "backendDOMNodeId": 354 + }, + { + "nodeId": "246", + "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": "245", + "childIds": ["355"], + "backendDOMNodeId": 246 + }, + { + "nodeId": "356", + "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": "247", + "childIds": ["-1000000130"], + "backendDOMNodeId": 356 + }, + { + "nodeId": "357", + "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": "247", + "childIds": ["-1000000131", "-1000000132"], + "backendDOMNodeId": 357 + }, + { + "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": ["358"], + "backendDOMNodeId": 248 + }, + { + "nodeId": "359", + "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": "247", + "childIds": ["-1000000134"], + "backendDOMNodeId": 359 + }, + { + "nodeId": "-1000000135", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Method B: Command line" + }, + "properties": [], + "parentId": "360", + "childIds": [] + }, + { + "nodeId": "361", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + } + } + ] + }, + "properties": [], + "parentId": "251", + "childIds": ["-1000000136"], + "backendDOMNodeId": 361 + }, + { + "nodeId": "274", + "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": "89", + "childIds": ["-1000000013"], + "backendDOMNodeId": 274 + }, + { + "nodeId": "275", + "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": "90", + "childIds": ["-1000000014", "-1000000015", "-1000000016"], + "backendDOMNodeId": 275 + }, + { + "nodeId": "276", + "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": "93", + "childIds": ["-1000000017"], + "backendDOMNodeId": 276 + }, + { + "nodeId": "277", + "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": "94", + "childIds": ["-1000000018", "-1000000019", "-1000000020"], + "backendDOMNodeId": 277 + }, + { + "nodeId": "278", + "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": "97", + "childIds": ["-1000000021"], + "backendDOMNodeId": 278 + }, + { + "nodeId": "279", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Input fields are generated for Runtime Parameters, with a guard that blocks analysis on unstaged csv_file params, in English and Japanese — your original code is never modified." + } + } + ] + }, + "properties": [], + "parentId": "98", + "childIds": [ + "-1000000022", + "-1000000023", + "-1000000024", + "-1000000025", + "-1000000026" + ], + "backendDOMNodeId": 279 + }, + { + "nodeId": "280", + "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": "101", + "childIds": ["-1000000027"], + "backendDOMNodeId": 280 + }, + { + "nodeId": "281", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Place sibling custom labware definition files (.json) next to your protocol file and they just work." + } + } + ] + }, + "properties": [], + "parentId": "102", + "childIds": ["-1000000028", "-1000000029", "-1000000030"], + "backendDOMNodeId": 281 + }, + { + "nodeId": "282", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Pop-out / Aux Window" + } + } + ] + }, + "properties": [], + "parentId": "105", + "childIds": ["-1000000031"], + "backendDOMNodeId": 282 + }, + { + "nodeId": "283", + "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": "106", + "childIds": ["-1000000032", "-1000000033", "-1000000034"], + "backendDOMNodeId": 283 + }, + { + "nodeId": "284", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Step Jumper + Search" + } + } + ] + }, + "properties": [], + "parentId": "109", + "childIds": ["-1000000035"], + "backendDOMNodeId": 284 + }, + { + "nodeId": "285", + "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, with step search to land fast.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Enter any step number under Protocol Steps and hit Enter to jump the visualization state instantly, with step search to land fast." + } + } + ] + }, + "properties": [], + "parentId": "110", + "childIds": ["-1000000036", "-1000000037", "-1000000038", "-1000000039"], + "backendDOMNodeId": 285 + }, + { + "nodeId": "286", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Multi-file Bundler" + } + } + ] + }, + "properties": [], + "parentId": "113", + "childIds": ["-1000000040"], + "backendDOMNodeId": 286 + }, + { + "nodeId": "287", + "ignored": false, + "role": { + "type": "internalRole", + "value": "StaticText" + }, + "chromeRole": { + "type": "internalRole", + "value": 158 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command.", + "sources": [ + { + "type": "contents", + "value": { + "type": "computedString", + "value": "Bundle from helpers import x into .bundled.py with a line map via the Protocol Factory: Bundle Protocol command." + } + } + ] + }, + "properties": [], + "parentId": "114", + "childIds": ["-1000000041", "-1000000042", "-1000000043", "-1000000044"], + "backendDOMNodeId": 287 + }, + { + "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": "133", + "childIds": [], + "backendDOMNodeId": 134 + }, + { + "nodeId": "139", + "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": "138", + "childIds": [], + "backendDOMNodeId": 139 + }, + { + "nodeId": "140", + "ignored": false, + "role": { + "type": "role", + "value": "slider" + }, + "chromeRole": { + "type": "internalRole", + "value": 155 + }, + "name": { + "type": "computedString", + "value": "volume", + "sources": [ + { + "type": "relatedElement", + "attribute": "aria-labelledby" + }, + { + "type": "attribute", + "value": { + "type": "computedString", + "value": "volume" + }, + "attribute": "aria-label", + "attributeValue": { + "type": "string", + "value": "volume" + } + }, + { + "type": "relatedElement", + "superseded": true, + "nativeSource": "label" + }, + { + "type": "attribute", + "attribute": "title", + "superseded": true + } + ] + }, + "value": { + "type": "number", + "value": 100 + }, + "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": "1" + } + } + ], + "parentId": "138", + "childIds": [], + "backendDOMNodeId": 140 + }, + { + "nodeId": "147", + "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": "invalid", + "value": { + "type": "token", + "value": "false" + } + }, + { + "name": "focusable", + "value": { + "type": "booleanOrUndefined", + "value": true + } + } + ], + "parentId": "138", + "childIds": [], + "backendDOMNodeId": 147 + }, + { + "nodeId": "149", + "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": "148", + "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": "-1000000059", + "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": "301", + "childIds": [] + }, + { + "nodeId": "-1000000063", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "koji/protocol-fix-loop" + }, + "properties": [], + "parentId": "305", + "childIds": [] + }, + { + "nodeId": "-1000000068", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Installation guide" + }, + "properties": [], + "parentId": "310", + "childIds": [] + }, + { + "nodeId": "-1000000072", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/protocol-fix-loop" + }, + "properties": [], + "parentId": "314", + "childIds": [] + }, + { + "nodeId": "-1000000080", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python 3.8 or later" + }, + "properties": [], + "parentId": "322", + "childIds": [] + }, + { + "nodeId": "-1000000083", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "python3" + }, + "properties": [], + "parentId": "324", + "childIds": [] + }, + { + "nodeId": "-1000000087", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons" + }, + "properties": [], + "parentId": "329", + "childIds": [] + }, + { + "nodeId": "-1000000090", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000091", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install opentrons" + }, + "properties": [], + "parentId": "332", + "childIds": [] + }, + { + "nodeId": "-1000000095", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "pip " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000096", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "install " + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000097", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "opentrons==9.0.0" + }, + "properties": [], + "parentId": "336", + "childIds": [] + }, + { + "nodeId": "-1000000106", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Python: " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000107", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000108", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Interpreter" + }, + "properties": [], + "parentId": "342", + "childIds": [] + }, + { + "nodeId": "-1000000117", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "346", + "childIds": [] + }, + { + "nodeId": "-1000000118", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Open the Command " + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000119", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Palette (" + }, + "properties": [], + "parentId": "347", + "childIds": [] + }, + { + "nodeId": "-1000000120", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Cmd+Shift+P" + }, + "properties": [], + "parentId": "348", + "childIds": [] + }, + { + "nodeId": "-1000000121", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "/" + }, + "properties": [], + "parentId": "349", + "childIds": [] + }, + { + "nodeId": "-1000000122", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " " + }, + "properties": [], + "parentId": "350", + "childIds": [] + }, + { + "nodeId": "-1000000123", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Ctrl+Shift+P" + }, + "properties": [], + "parentId": "351", + "childIds": [] + }, + { + "nodeId": "-1000000124", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ")" + }, + "properties": [], + "parentId": "352", + "childIds": [] + }, + { + "nodeId": "-1000000125", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "353", + "childIds": [] + }, + { + "nodeId": "-1000000126", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Select " + }, + "properties": [], + "parentId": "354", + "childIds": [] + }, + { + "nodeId": "355", + "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": "246", + "childIds": ["-1000000127", "-1000000128", "-1000000129"], + "backendDOMNodeId": 355 + }, + { + "nodeId": "-1000000130", + "ignored": true, + "ignoredReasons": [ + { + "name": "presentationalRole", + "value": { + "type": "boolean", + "value": true + } + } + ], + "role": { + "type": "role", + "value": "none" + }, + "chromeRole": { + "type": "internalRole", + "value": 0 + }, + "parentId": "356", + "childIds": [] + }, + { + "nodeId": "-1000000131", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Choose the " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "-1000000132", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "downloaded " + }, + "properties": [], + "parentId": "357", + "childIds": [] + }, + { + "nodeId": "358", + "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": "248", + "childIds": ["-1000000133"], + "backendDOMNodeId": 358 + }, + { + "nodeId": "-1000000134", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": " file" + }, + "properties": [], + "parentId": "359", + "childIds": [] + }, + { + "nodeId": "-1000000136", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "code --install-extension protocol-factory-0.2.9-alpha.vsix" + }, + "properties": [], + "parentId": "361", + "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": "274", + "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": "275", + "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": "275", + "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": "275", + "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": "276", + "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": "277", + "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": "277", + "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": "277", + "childIds": [] + }, + { + "nodeId": "-1000000021", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Runtime Parameters UI" + }, + "properties": [], + "parentId": "278", + "childIds": [] + }, + { + "nodeId": "-1000000022", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Input fields are generated for Runtime " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000023", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Parameters, with a guard that blocks " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000024", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "analysis on unstaged csv_file params, in " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000025", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "English and Japanese — your original code " + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000026", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "is never modified." + }, + "properties": [], + "parentId": "279", + "childIds": [] + }, + { + "nodeId": "-1000000027", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Custom Labware Support" + }, + "properties": [], + "parentId": "280", + "childIds": [] + }, + { + "nodeId": "-1000000028", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Place sibling custom labware definition " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000029", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "files (.json) next to your protocol file and " + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000030", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "they just work." + }, + "properties": [], + "parentId": "281", + "childIds": [] + }, + { + "nodeId": "-1000000031", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Pop-out / Aux Window" + }, + "properties": [], + "parentId": "282", + "childIds": [] + }, + { + "nodeId": "-1000000032", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000033", + "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": "283", + "childIds": [] + }, + { + "nodeId": "-1000000034", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSCode's Auxiliary Window support." + }, + "properties": [], + "parentId": "283", + "childIds": [] + }, + { + "nodeId": "-1000000035", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Step Jumper + Search" + }, + "properties": [], + "parentId": "284", + "childIds": [] + }, + { + "nodeId": "-1000000036", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Enter any step number under Protocol " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000037", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Steps and hit Enter to jump the " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000038", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "visualization state instantly, with step " + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000039", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "search to land fast." + }, + "properties": [], + "parentId": "285", + "childIds": [] + }, + { + "nodeId": "-1000000040", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Multi-file Bundler" + }, + "properties": [], + "parentId": "286", + "childIds": [] + }, + { + "nodeId": "-1000000041", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Bundle from helpers import x into " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000042", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".bundled.py with a line map via the " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000043", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Protocol Factory: Bundle Protocol " + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000044", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "command." + }, + "properties": [], + "parentId": "287", + "childIds": [] + }, + { + "nodeId": "-1000000127", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Extensions: " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000128", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "Install from " + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000129", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": "VSIX..." + }, + "properties": [], + "parentId": "355", + "childIds": [] + }, + { + "nodeId": "-1000000133", + "ignored": false, + "role": { + "type": "internalRole", + "value": "InlineTextBox" + }, + "chromeRole": { + "type": "internalRole", + "value": 101 + }, + "name": { + "type": "computedString", + "value": ".vsix" + }, + "properties": [], + "parentId": "358", + "childIds": [] + } +] diff --git a/.opencode/skills/verify-web/artifacts/review-fix-install/dom.html b/.opencode/skills/verify-web/artifacts/review-fix-install/dom.html new file mode 100644 index 0000000..ab5eede --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-install/dom.html @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + + Protocol Factory — Simulate Opentrons protocols in VSCode + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

Protocol Factory

+ 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 Runtime Parameters, with a + guard that blocks analysis on unstaged csv_file params, in + English and Japanese — your original code is never + modified. +

    +
    +
  • +
  • +
    +

    Custom Labware Support

    +

    + Place sibling custom labware definition files (.json) next + to your protocol file and they just work. +

    +
    +
  • +
  • +
    +

    Pop-out / Aux Window

    +

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

    +
    +
  • +
  • +
    +

    Step Jumper + Search

    +

    + Enter any step number under Protocol Steps and hit Enter + to jump the visualization state instantly, with step + search to land fast. +

    +
    +
  • +
  • +
    +

    Multi-file Bundler

    +

    + Bundle from helpers import x into <name>.bundled.py + with a line map via the Protocol Factory: Bundle Protocol + command. +

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

+ Generate protocols with AI, verify with Protocol Factory +

+

+ Connect Protocol Factory 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 Factory 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-factory-0.2.9-alpha.vsix
+
+
+
+
+
+ +
+
+ MIT License © 2026 Koji Kanao + +
+
+
+
+ + + diff --git a/.opencode/skills/verify-web/artifacts/review-fix-install/result.json b/.opencode/skills/verify-web/artifacts/review-fix-install/result.json new file mode 100644 index 0000000..4340063 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-install/result.json @@ -0,0 +1,47 @@ +{ + "feature": "install-guide", + "url": "http://127.0.0.1:5173/", + "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-factory-0.2.9-alpha.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": 757 + }, + "error": null + } + ], + "finishedAt": "2026-09-23T04:11:37.489Z" +} diff --git a/.opencode/skills/verify-web/artifacts/review-fix-install/screenshot.png b/.opencode/skills/verify-web/artifacts/review-fix-install/screenshot.png new file mode 100644 index 0000000..6973583 Binary files /dev/null and b/.opencode/skills/verify-web/artifacts/review-fix-install/screenshot.png differ diff --git a/.opencode/skills/verify-web/artifacts/review-fix-install/vite-server.log b/.opencode/skills/verify-web/artifacts/review-fix-install/vite-server.log new file mode 100644 index 0000000..a41de30 --- /dev/null +++ b/.opencode/skills/verify-web/artifacts/review-fix-install/vite-server.log @@ -0,0 +1,5 @@ + + VITE v8.2.2 ready in 130 ms + + ➜ Local: http://127.0.0.1:5173/ +12:11:37 AM [vite] (client) page reload .opencode/skills/verify-web/artifacts/review-fix-install/dom.html diff --git a/.opencode/skills/verify-web/features/README.md b/.opencode/skills/verify-web/features/README.md index 32dbd84..d0362e4 100644 --- a/.opencode/skills/verify-web/features/README.md +++ b/.opencode/skills/verify-web/features/README.md @@ -1,6 +1,6 @@ -# protocol-visualizer-web verification map +# protocol-factory-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. +This directory is the maintained source for verifying the user-facing behavior of the Protocol Factory landing page. Read this index before driving the app, then use the matching feature file as the recipe. ## Baseline preconditions @@ -41,7 +41,7 @@ Keep implementation details out of the map. Name only user paths, stable handles ## 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". +- [Features grid](./features-grid.md) covers the seven 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 index 1e3a2c8..db63d84 100644 --- a/.opencode/skills/verify-web/features/ai-workflow.md +++ b/.opencode/skills/verify-web/features/ai-workflow.md @@ -1,6 +1,6 @@ # 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. +AI workflow shows how `protocol-fix-loop` connects Protocol Factory 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 @@ -11,7 +11,7 @@ AI workflow shows how `protocol-fix-loop` connects Protocol Visualizer to an LLM ## 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). +- Scroll to `Generate protocols with AI, verify with Protocol Factory` 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`. diff --git a/.opencode/skills/verify-web/features/features-grid.md b/.opencode/skills/verify-web/features/features-grid.md index c786f18..ec64d5d 100644 --- a/.opencode/skills/verify-web/features/features-grid.md +++ b/.opencode/skills/verify-web/features/features-grid.md @@ -1,11 +1,11 @@ # 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. +Features grid lists the seven 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. +- `features-cards` renders all seven cards with titles and descriptions. ## How to get to it (user POV) @@ -21,11 +21,11 @@ Preconditions: - **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. +- **Cards.** Count and name the cards. The run asserts exactly 7 `article` elements whose `h3` titles are `Real-time Deck Visualization`, `Auto-analysis on Save`, `Runtime Parameters UI`, `Custom Labware Support`, `Pop-out / Aux Window`, `Step Jumper + Search`, and `Multi-file Bundler`. +- **Proof.** Inspect the artifacts. `/screenshot.png` shows the grid, `/axtree.json` exposes the seven 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. +- The grid collapses to 2 columns under 1024px and 1 column under 768px. Card count stays 7; 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. +- Titles are exact strings. `Runtime Parameters UI` and `Step Jumper + Search` 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 index 185b250..21bb84f 100644 --- a/.opencode/skills/verify-web/features/hero.md +++ b/.opencode/skills/verify-web/features/hero.md @@ -1,6 +1,6 @@ # 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. +Hero is the first screen: the `Protocol Factory` headline with `Preview` badge, the Opentrons tagline, `Request access` buttons, and a link down to the installation guide. ## Sub-features @@ -22,7 +22,7 @@ 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`. +- **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 Factory`. - **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`. diff --git a/.opencode/skills/verify-web/features/install-guide.md b/.opencode/skills/verify-web/features/install-guide.md index 7b540c0..01aba54 100644 --- a/.opencode/skills/verify-web/features/install-guide.md +++ b/.opencode/skills/verify-web/features/install-guide.md @@ -24,7 +24,7 @@ Preconditions: - **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`. +- **CLI method.** Read the second method. The run asserts the text contains `code --install-extension protocol-factory-0.2.9-alpha.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. diff --git a/.opencode/skills/verify-web/scripts/drive.mjs b/.opencode/skills/verify-web/scripts/drive.mjs index 25d3c8a..d327c3e 100644 --- a/.opencode/skills/verify-web/scripts/drive.mjs +++ b/.opencode/skills/verify-web/scripts/drive.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env bun -// drive.mjs — drive the real protocol-visualizer-web landing page in headless +// drive.mjs — drive the real protocol-factory-web landing page in headless // Chromium over CDP (no npm dependencies; uses bun built-ins only). // // Usage: @@ -27,8 +27,9 @@ const EXPECTED_FEATURE_TITLES = [ 'Auto-analysis on Save', 'Runtime Parameters UI', 'Custom Labware Support', - 'Pop-out Window', - 'Step Jumper', + 'Pop-out / Aux Window', + 'Step Jumper + Search', + 'Multi-file Bundler', ] const AI_VIDEO = @@ -171,7 +172,7 @@ const CHECKS = { { id: 'hero-headline', expr: `document.querySelector('#root h1')?.textContent ?? null`, - want: 'Protocol Visualizer', + want: 'Protocol Factory', }, { id: 'hero-tagline', @@ -208,7 +209,7 @@ const CHECKS = { expr: `[...document.querySelectorAll('section#features article')].map(a => a.querySelector('h3')?.textContent ?? '')`, check: (v) => Array.isArray(v) && - v.length === 6 && + v.length === 7 && EXPECTED_FEATURE_TITLES.every((t) => v.includes(t)), }, ], @@ -296,7 +297,7 @@ const CHECKS = { }, { id: 'install-cli-method', - expr: `document.querySelector('section#install')?.textContent.includes('code --install-extension protocol-visualizer.vsix') ?? false`, + expr: `document.querySelector('section#install')?.textContent.includes('code --install-extension protocol-factory-0.2.9-alpha.vsix') ?? false`, want: true, }, { diff --git a/.opencode/skills/verify-web/scripts/verify.mjs b/.opencode/skills/verify-web/scripts/verify.mjs index f264f64..c4c152a 100644 --- a/.opencode/skills/verify-web/scripts/verify.mjs +++ b/.opencode/skills/verify-web/scripts/verify.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env bun -// verify.mjs — one-shot end-to-end verification for protocol-visualizer-web. +// verify.mjs — one-shot end-to-end verification for protocol-factory-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. diff --git a/docs/Architecture.md b/docs/Architecture.md index 846b1e7..bc4d0f7 100644 --- a/docs/Architecture.md +++ b/docs/Architecture.md @@ -28,7 +28,7 @@ This extension is designed to operate through the collaboration of three compone ## Directory Structure and File Roles ```text -opentrons-protocol-viz/ +protocol-factory/ ├── .vscode/ # Configuration for launching and debugging VSCode ├── src/ # Extension backend (TypeScript) │ ├── extension.ts # Extension entry point (command registration) diff --git a/docs/Instllation.md b/docs/Installation.md similarity index 61% rename from docs/Instllation.md rename to docs/Installation.md index 9efcdc4..9c6aef2 100644 --- a/docs/Instllation.md +++ b/docs/Installation.md @@ -1,4 +1,4 @@ -# Setup Protocol Vizualizer +# Setup Protocol Factory ## 1. Prerequisites @@ -12,7 +12,7 @@ pip install opentrons ``` **Note:** -If you need to use Protocol Vizualizer with an OT-2, you will need to use opentrons==9.0.0 pacakge since opentrons 9.1.0+ is not compatible with OT-2. +If you need to use Protocol Factory with an OT-2, you will need to use opentrons==9.0.0 package since opentrons 9.1.0+ is not compatible with OT-2. ```bash pip install opentrons==9.0.0 @@ -20,7 +20,7 @@ pip install opentrons==9.0.0 ## 2. Installation (from `.vsix`) -Download `protocol-viz-x.x.x.vsix` from GitHub Releases or another source, then install it in VSCode using one of the following methods. +Download `protocol-factory-0.2.9-alpha.vsix` from GitHub Releases or another source, then install it in VSCode using one of the following methods. **Method A: From the Command Palette** @@ -31,5 +31,5 @@ Download `protocol-viz-x.x.x.vsix` from GitHub Releases or another source, then **Method B: From the CLI** ```bash -code --install-extension protocol-viz-0.1.5.vsix +code --install-extension protocol-factory-0.2.9-alpha.vsix ``` diff --git a/docs/README.md b/docs/README.md index 99ccc25..315f640 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# Protocol Visualizer VSCode Extension +# Protocol Factory VSCode Extension A VSCode extension (prototype) for simulating Opentrons Python protocols directly in VSCode and visualizing and inspecting the state of the Deck (work surface) and liquid volume changes in real time through a Webview panel. @@ -44,11 +44,11 @@ pip install opentrons ## 2. Usage 1. Open an Opentrons protocol `.py` file in VSCode. -2. Start Protocol Visualizer. Currently, there are 3 ways to start it: -3. From the Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`), run **`Opentrons: Open Protocol Visualizer`**. +2. Start Protocol Factory. Currently, there are 3 ways to start it: +3. From the Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`), run **`Protocol Factory: Open`**. 4. Click the **beaker** icon in the status bar. 5. Set a new shortcut via Command Pallets `Open Keyboard Shortcuts` and start it with your custom shortcut. -6. When the Visualizer panel opens on the right side of the screen, and `If your protocol uses Runtime parameters`, Protocol Visualizer will generate UI inputs for these parameters. +6. When the Factory panel opens on the right side of the screen, and `If your protocol uses Runtime parameters`, Protocol Factory will generate UI inputs for these parameters. `Once the analysis is complete, you are ready to edit your protocol.` @@ -58,15 +58,15 @@ This extension supports custom labware definitions. You need to place your custo ### 2-2 Auto-analysis -Protocol Visualizer starts analysis automatically when you save changes to your protocol file. +Protocol Factory starts analysis automatically when you save changes to your protocol file. ### 2-3 Pop out button -This extension is using VSCode's Auxiliary Window, so you can pop out the Visualizer panel to a separate window. Also you can do the same thing with dragging the Protocol Visualizer tab to somewhere of your screen. +This extension is using VSCode's Auxiliary Window, so you can pop out the Factory panel to a separate window. Also you can do the same thing with dragging the Protocol Factory tab to somewhere of your screen. ### 2-4 Runtime parameters -For Runtime parameters, you will need to click `Analyze` button to apply your changes to your protocol. `If you change a Runtime parameter, Protocol Visualizer will not change your protocol.` +For Runtime parameters, you will need to click `Analyze` button to apply your changes to your protocol. `If you change a Runtime parameter, Protocol Factory will not change your protocol.` Runtime parameters function creates a temporary protocol file that applyes your changes as a default parameter value for the analysis and it will be removed whne the visualization is done. ### 2-5 Step Jumper diff --git a/docs/superpowers/plans/2026-08-25-protocol-visualizer-website.md b/docs/superpowers/plans/2026-08-25-protocol-factory-web.md similarity index 97% rename from docs/superpowers/plans/2026-08-25-protocol-visualizer-website.md rename to docs/superpowers/plans/2026-08-25-protocol-factory-web.md index a036030..bee1ccf 100644 --- a/docs/superpowers/plans/2026-08-25-protocol-visualizer-website.md +++ b/docs/superpowers/plans/2026-08-25-protocol-factory-web.md @@ -1,14 +1,14 @@ -# Protocol Visualizer Website Implementation Plan +# Protocol Factory Website Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. -**Goal:** Build a single-page product landing site for the Protocol Visualizer VSCode extension with direct `.vsix` download. +**Goal:** Build a single-page product landing site for the Protocol Factory VSCode extension with direct `.vsix` download. **Architecture:** Static single-page React app, no router, no state library (theme state only). Sections are stacked components; theming uses CSS custom properties driven by `data-theme` on ``. **Tech Stack:** TypeScript (strict), React 19, Vite, CSS Modules, Vitest + React Testing Library + jsdom, ESLint 9 flat config, Prettier, npm on Node v24.17.0. -**Spec:** `docs/superpowers/specs/2026-08-25-protocol-visualizer-website-design.md` +**Spec:** `docs/superpowers/specs/2026-08-25-protocol-factory-web-design.md` ## Global Constraints @@ -20,10 +20,10 @@ - Vite `base: './'`. - Accent cyan/teal: dark `--color-accent: #22d3ee`, light `--color-accent: #0891b2`; text on accent keeps AA contrast. - Container max-width 1120px; breakpoints 768px and 1024px; mobile-first CSS. -- VSIX lives at fixed path `public/downloads/protocol-visualizer.vsix` (overwritten per release, never renamed). +- VSIX lives at fixed path `public/downloads/protocol-factory-0.2.9-alpha.vsix` (overwritten per release, never renamed). - CTA disabled + "Coming soon" until `site.download.available` flips to `true`. - All color/spacing values come from CSS variables defined in `src/styles/tokens.css`. -- Every command below runs from the repo root `protocol-visualizer-website/`. +- Every command below runs from the repo root `protocol-factory-web/`. --- @@ -53,7 +53,7 @@ ```json { - "name": "protocol-visualizer-website", + "name": "protocol-factory-web", "private": true, "version": "0.1.0", "type": "module", @@ -175,7 +175,7 @@ dist/ - Protocol Visualizer + Protocol Factory
@@ -210,7 +210,7 @@ import type { ReactNode } from 'react' export default function App(): ReactNode { return (
-
Protocol Visualizer
+
Protocol Factory
) } @@ -226,7 +226,7 @@ import App from './App' describe('App', () => { it('renders the product name', () => { render() - expect(screen.getByText('Protocol Visualizer')).toBeInTheDocument() + expect(screen.getByText('Protocol Factory')).toBeInTheDocument() }) }) ``` @@ -687,7 +687,7 @@ export default function App(): ReactNode { return (
- Protocol Visualizer + Protocol Factory @@ -744,14 +744,14 @@ Create `src/config/site.ts`: ```ts export const site = { - productName: 'Protocol Visualizer', + productName: 'Protocol Factory', tagline: 'Simulate your Opentrons Python protocols and inspect deck layout and liquid volumes in real time — without leaving VSCode.', download: { available: false, label: 'Download .vsix', comingSoonLabel: 'Coming soon', - href: './downloads/protocol-visualizer.vsix', + href: './downloads/protocol-factory-0.2.9-alpha.vsix', }, } as const ``` @@ -813,7 +813,10 @@ describe('DownloadButton (VSIX published)', () => { it('renders a download link to the fixed vsix path', () => { render() const link = screen.getByRole('link', { name: /Download \.vsix/i }) - expect(link).toHaveAttribute('href', './downloads/protocol-visualizer.vsix') + expect(link).toHaveAttribute( + 'href', + './downloads/protocol-factory-0.2.9-alpha.vsix', + ) expect(link).toHaveAttribute('download') }) }) @@ -922,10 +925,8 @@ import { BeakerLogo } from './BeakerLogo' describe('BeakerLogo', () => { it('exposes an accessible name when a label is given', () => { - const { getByRole } = render() - expect( - getByRole('img', { name: 'Protocol Visualizer' }), - ).toBeInTheDocument() + const { getByRole } = render() + expect(getByRole('img', { name: 'Protocol Factory' })).toBeInTheDocument() }) it('is hidden from assistive tech when no label is given', () => { @@ -1007,7 +1008,7 @@ const setup = (theme: 'dark' | 'light' = 'dark') => describe('Header', () => { it('links the brand back to top of page', () => { setup() - const brand = screen.getByRole('link', { name: 'Protocol Visualizer' }) + const brand = screen.getByRole('link', { name: 'Protocol Factory' }) expect(brand).toHaveAttribute('href', '#top') }) @@ -1173,7 +1174,7 @@ export default function App(): ReactNode { return (
-
Protocol Visualizer
+
Protocol Factory
) } @@ -1233,7 +1234,7 @@ describe('Hero', () => { it('renders the product headline', () => { render() expect( - screen.getByRole('heading', { level: 1, name: 'Protocol Visualizer' }), + screen.getByRole('heading', { level: 1, name: 'Protocol Factory' }), ).toBeInTheDocument() }) @@ -1653,7 +1654,7 @@ describe('Screenshot', () => { render() expect( screen.getByRole('img', { - name: /Protocol Visualizer screenshot placeholder/i, + name: /Protocol Factory screenshot placeholder/i, }), ).toBeInTheDocument() expect( @@ -1684,7 +1685,7 @@ export function Screenshot(): ReactNode {
@@ -1808,7 +1809,7 @@ describe('Install', () => { const methodB = screen.getByLabelText('Method B: Command line') expect( within(methodB).getByText( - 'code --install-extension protocol-visualizer.vsix', + 'code --install-extension protocol-factory-0.2.9-alpha.vsix', ), ).toBeInTheDocument() }) @@ -1887,7 +1888,9 @@ export function Install(): ReactNode {

Method B: Command line

-              code --install-extension protocol-visualizer.vsix
+              
+                code --install-extension protocol-factory-0.2.9-alpha.vsix
+              
             
@@ -2218,7 +2221,7 @@ git commit -m "feat: add footer with config-driven external links" /> - Protocol Visualizer — Simulate Opentrons protocols in VSCode + Protocol Factory — Simulate Opentrons protocols in VSCode