facett-graphnav/Cargo.toml
[package]
name = "facett-graphnav"
description = "facett — the GRAPH NAVIGATOR: a full graph-DB IDE surface (V.G = G.V()) over facett-graphview. A query bar (Cypher-/Gremlin-ish), a result canvas, a node/edge inspector, a layout switcher (force/hierarchical/circular/grid), styling-by-property, expand/collapse neighbourhoods, fuzzy search + property filter, shortest-path highlighting, a schema/overview panel, a minimap, and export. Each panel is a Facet with serialisable state + a robot-drivable scenario."
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
[features]
default = []
# L4: functional-status emitter passthrough (see facett-core::testmatrix). No-op in release.
testmatrix = ["facett-core/testmatrix"]
# GPU force-layout lane: light facett-graphview's wgpu compute layout (`cs_layout`) so
# the two-lane selector routes large graphs to the GPU when a usable adapter exists.
# OFF by default — the CPU gatling lane is the always-built deterministic reference, so
# a GPU-less box (headless CI) builds + tests unchanged. See layout::force_selected.
gpu = ["facett-graphview/gpu"]
# The SHARED instanced graph-cloud GPU lane (facett-core's `graphcloud` — the same
# renderer facett-graph3d installs). OFF by default: without it `legible::draw_gpu_cloud`
# is a compile-time `false` and the CPU painter always runs, so no golden moves.
wgpu = ["facett-core/wgpu"]
[dependencies]
facett-core = { path = "../facett-core", version = "0.3.0" }
# The render engine + the pure analysis toolbox (centrality/paths/community/…).
facett-graphview = { path = "../facett-graphview", version = "0.2.0" }
# The domain-agnostic pan/zoom/select transform (the camera the navigator lacked).
facett-graphpan = { path = "../facett-graphpan", version = "0.2.0" }
egui = { workspace = true }
serde = { version = "1", features = ["derive"] }
serde_json = { workspace = true }
# Arrow-backed node/edge tables (the facett-grid data-laboratory panel ingests these).
arrow-array = "59"
arrow-schema = "59"
[dev-dependencies]
# CPU render-proof (AccessKit nodes) via the kittest harness.
egui_kittest = { version = "0.36", features = ["snapshot"] }
# The Arrow-backed flagship grid — the data-laboratory table panel ingests the
# navigator's node/edge RecordBatches (robot proof of the table view).
facett-grid = { path = "../facett-grid"}
# The shared robot-UI harness with its live WATCH backend: `examples/vg_watch.rs`
# replays V.G's self-driving scenario in a REAL eframe window (feature `watch`
# pulls eframe/winit/glow). Path dep on the sibling nornir checkout; the same
# `nornir-testmatrix` path other facett crates already use, so no source clash.
nornir-robotui = { version = "0.4.0" }
# The watch example uses anyhow::Result for main and serde_json for scenario asserts.
anyhow = "1"
# The force-layout benchmark example reads the gatling worker count for its core-
# saturation report (the same znippy-zoomies fork-join engine facett-core's CPU lane
# fans across). Dev-only: the library never links it directly (it reaches gatling
# through facett-core::barnes_hut).
znippy-zoomies = { path = "../../znippy-zoomies"}
[[example]]
name = "vg_watch"
path = "examples/vg_watch.rs"
# Two-lane force-layout benchmark (serial vs gatling-CPU vs GPU) — see the file header.
[[example]]
name = "force_bench"
path = "examples/force_bench.rs"