VS Code screenshot capture kit
Verified staging for the VS Code extension figures (Fig 3, Fig S4–S7). Every diagnostic below was confirmed via gxwf validate against the same cache the extension uses, so what the editor renders is known-correct before you capture it.
Subject workflow
IWC “Taxonomy Profiling and Visualization with Krona” — 3 tool steps (kraken2 → krakentools_kreport2krona → taxonomy_krona_chart). Small enough that all three steps + their diagnostics fit one editor viewport. Source: iwc/workflows/microbiome/pathogen-identification/taxonomy-profiling-and-visualization-with-krona/.
Files in this kit
| File | Purpose |
|---|---|
krona-demo.gxwf.yml | Clean Format 2 — validates strict-clean. Baseline / before-shots. |
krona-demo-broken.gxwf.yml | Format 2 with 3 planted errors in distinct steps (below). Main subject for Fig 3 / Fig S2. |
krona-demo-broken.ga | Same 3 errors in native .ga (object tool_state). For Fig S4 native parity. |
krona-legacy.ga | Clean workflow with string-encoded tool_state (legacy form). For Fig S5 quick fix. |
Planted errors (verified)
| Step | Edit | Class | What the editor shows |
|---|---|---|---|
kraken2 (step 2) | min_base_quality: high (was 0) | type mismatch | Error on the value: min_base_quality expects a number, actual "high" |
kraken2 (step 2) | use_name: (was use_names:) | unknown parameter | Warning on the key: Unknown tool parameter 'use_name'. — editor/LSP-only; the gxwf validate CLI does NOT surface this, so the screenshot is the only evidence for this class |
taxonomy_krona_chart (step 4) | type_of_data_selector: txt (was text) | illegal select | Error on the value listing legal options: must be one of text, taxonomy |
CLI cross-check (default cache): gxwf validate krona-demo-broken.gxwf.yml --json → summary {ok:1, fail:2, skip:0} (the third, the unknown-param warning, is editor-only).
Prerequisite: warm cache (already done on this machine 2026-06-18)
The extension reads ~/.galaxy/tool_info_cache by default. The 3 Krona tools were added there via:
galaxy-tool-cache populate-workflow <Taxonomy-Profiling-...-Krona.ga>
On a fresh machine, re-run that once so the extension validates offline. (galaxyWorkflows.toolCache.directory is machine-scoped, so prefer populating the default cache over a workspace setting.)
Launch
From the extension checkout (galaxy-workflows-vscode, built — client/dist + server dists present):
code --extensionDevelopmentPath=. /tmp/gxwf_capture # or this capture-kit folder
Diagnostics (squiggles + Problems panel) and the Tools: N cached status bar render automatically once the language server resolves — no interaction needed for those.
Per-figure capture checklist
- Fig 3 — schema-aware editing (money shot). Open
krona-demo-broken.gxwf.yml. Frame all three diagnostics, then stage the two transient popups in one composite (or three sub-panels):- (a) hover the
type_of_data_selectorvalue → hover card shows the param label/help + legal options. - (b) put the cursor on a new line inside the
kraken2state:block, pressCtrl+Space→ completion popup of kraken2 parameter keys. - (c) the red squiggle on
min_base_quality: highwith its error message visible.
- (a) hover the
- Fig S4 — native
.gaparity. Openkrona-demo-broken.ga. Same three diagnostics on the native file; also show one object-tool_statestep beside a hover, to make the “parity” point. - Fig S5 — legacy quick fix. Open
krona-legacy.ga. The wholetool_statevalue carries aHint; click the lightbulb → “Clean workflow (convert tool_state to object form)”. Capture before (hint) and after (object form with precise sub-diagnostics). - Fig S6 — conditional-aware completion. In
krona-demo.gxwf.yml, use step 4taxonomy_krona_charttype_of_data.type_of_data_selector(casestext/taxonomy). Set the selector totext, trigger completion insidetype_of_data:→ offers onlyinput; set it totaxonomy→ offersinputandmax_rank. The appearance ofmax_rankonly in the taxonomy case is the case-aware-completion proof. Do not usekraken2’ssingle_pairedconditional: every case exposes the sameinput_sequenceskey (only data arity differs), so the offered keys don’t change. Captured:web-shots/conditional-completion-{text,taxonomy}.png. - Fig S7 — cache lifecycle. Screenshot the
Tools: N cachedstatus bar; runPopulate Tool Cachefrom the command palette; and (to show graceful degradation) open a workflow with one uncached tool to capture theInformationvsWarningvs full-validation tiers. Cross-check N againstgalaxy-tool-cache list.
Automation notes
screencapture (macOS) is available; cliclick is not, osascript is. Non-interactive shots (diagnostics, Problems panel, status bar) can be screen-captured after launch. Transient popups (hover/completion/quick-fix menu) need either a human at the keyboard (≈5 quick captures) or fragile osascript keystroke automation.
In practice the transient-popup figures were captured headlessly via the browser extension host (vscode-test-web) driven by Playwright — completion dropdowns and the Insert Tool Step ToolShed QuickPick render in the workbench DOM and are scriptable there. The five curated results live in web-shots/ (inventory + provenance in ../MANIFEST.md, “Web-mode GUI captures”). Save additional captures as figures/fig3_vscode.png, figS4_native_parity.png, etc. (see ../MANIFEST.md).