.nornir/assets/popviz-ui-atoms.svg
<svg xmlns="http://www.w3.org/2000/svg" width="760" height="300" font-family="monospace" font-size="13">
<style>
.box{fill:#12161c;stroke:#6fd3f5;stroke-width:1.5;rx:6}
.lbl{fill:#e6edf3}.dim{fill:#8aa0b4}.acc{fill:#7ee787}
.arr{stroke:#6fd3f5;stroke-width:1.5;fill:none;marker-end:url(#a)}
</style>
<defs><marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
<path d="M0,0 L7,3 L0,6 Z" fill="#6fd3f5"/></marker></defs>
<text x="16" y="26" class="lbl" font-size="15">knut-popviz — remote-controllable UI atoms</text>
<rect class="box" x="16" y="52" width="200" height="150" rx="6"/>
<text x="30" y="76" class="acc">robot / watch (code)</text>
<text x="30" y="100" class="dim">update_json →</text>
<text x="30" y="124" class="lbl">select_target</text>
<text x="30" y="146" class="lbl">set_phase</text>
<text x="30" y="168" class="lbl">advance{label,n}</text>
<text x="30" y="190" class="lbl">reset</text>
<rect class="box" x="300" y="52" width="180" height="150" rx="6"/>
<text x="316" y="76" class="acc">PopvizState</text>
<text x="316" y="102" class="dim">phase · target</text>
<text x="316" y="124" class="dim">labels[] · rels[]</text>
<text x="316" y="150" class="lbl">state_json() →</text>
<text x="316" y="176" class="dim">(same state the</text>
<text x="316" y="192" class="dim">egui GUI renders)</text>
<rect class="box" x="560" y="52" width="184" height="150" rx="6"/>
<text x="576" y="76" class="acc">nornir-testmatrix</text>
<text x="576" y="104" class="dim">cell per atom:</text>
<text x="576" y="126" class="lbl">target_select</text>
<text x="576" y="146" class="lbl">phase_set/done</text>
<text x="576" y="166" class="lbl">progress_advance</text>
<text x="576" y="186" class="lbl">reset</text>
<path class="arr" d="M216,127 L300,127"/>
<path class="arr" d="M480,127 L560,127"/>
<text x="235" y="120" class="dim">cmd</text>
<text x="498" y="120" class="dim">green⟺covered</text>
</svg>