facett-graphpan — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The bare, domain-agnostic pan/zoom graph CANVAS: a free
draw_graph/draw_graph_scrolledfunction that paints a caller-laid-outGraphModelwith pan/drag + scroll-zoom + click-to-select. - Does: The host calls
draw_grapheach frame against a caller-ownedGraphViewtransform (pan/zoom/selection survive frames);draw_graph_scrolledis the honest-scrollbar variant for a static board;content_extentsizes it.downstream_oflights a clicked node's downstream subtree. Optional opaqueDecorationsoverlay (status rings + corner badges + emphasis cut-edges). Also ships an owningGraphPanViewFacet (local()/remote()/state_json). Adopted verbatim from nornir'sgraph_render.rs(Architecture board + release dashboard), witheframe::eguiswapped for plainegui. - Key deps:
facett-core(Facet, theme),egui,serde_json. - Shape: lib, single module (~996 lines). Key types:
GraphNode/GraphEdge/GraphModel,Decorations/NodeDecoration,GraphView,GraphResponse,GraphPanView; free fnsdraw_graph,draw_graph_scrolled,content_extent,downstream_of. - Observed role in the workspace: The minimal "paint this model, return what was clicked" routine — complementary to facett-graphview (the consolidated CPU/GPU render engine + owning Facet). Caller owns layout; nothing nornir-specific crosses the seam.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: