crates/nornir-warehouse-nav/Cargo.toml
[package]
name = "nornir-warehouse-nav"
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/dwarves"
# publish = true (2026-08-23) — required by `dwarves-gui`, which now publishes so the
# `dwarves-ui-gpu` binary can ship. The `false` here named no condition either.
publish = true
description = "The Warehouse Navigator — dwarves' landing view: a zoomable 2D constellation→repo→crate dependency graph over the SHARED nornir-depgraph model + facett-graphpan renderer. Click-to-drill-down (constellation → repo → crate/subdeps), per-repo grouping hulls, categorical colour-by-repo (the validated dataviz palette), recency = glow (emissive halo, not hue). Consumes the same `nornir-depgraph` suite model nornir renders (L5, no fork); drives from a faithful nordisk fixture offline so it compiles + tests with no server."
# ── the SHARED suite dependency model + egui-free layout (L5) ─────────────────
# `nornir-depgraph` is the depgraph core lifted out of nornir precisely so "nornir
# AND dwarves render the same suite dependency view" (its own manifest). dwarves
# CONSUMES it — WorkspaceGraph (repos/crates/cross-repo edges + blast-radius
# queries) + `layout::DepGraphLayout` (columns/rows, transitive closure). No egui,
# no warehouse, no gRPC in that leaf → a clean one-way edge, no cycle.
[dependencies]
# EXACT floor, not a floating "0.1": release_gates measured that the lowest admitted
# published version (0.1.1) does NOT export `funcgraph`, which this crate calls. The
# `path =` beside it hides that locally — cargo resolves through the path and never
# consults the number. 0.1.2 is the lowest published version that exports every
# symbol this crate uses.
nornir-depgraph = { path = "../../../edda/crates/nornir-depgraph", version = "0.1.3" }
# The shared 2D graph pan/zoom/click renderer — THE renderer the nornir arch board
# + every graph surface paints with. We feed it a laid-out `GraphModel` + per-node
# `Decorations` (recency-glow rings) and read back `clicked_node` to drive the
# drill-down; the repo hulls + glow halos are a host-side overlay painted UNDER the
# reused chips (transparent bg), so nothing in the shared renderer is forked.
facett-graphpan = { path = "../../../facett/facett-graphpan", version = "0.2.0" }
facett-core = { path = "../../../facett/facett-core", version = "0.3.0" }
# The WORLD GRAPH surface: the shared graph engine's LOD (repos→crates→functions) +
# scale-aware layout (Barnes–Hut O(n log n) to ~1M, O(n) hierarchical placement to 10M)
# that feeds the instanced GPU cloud past the O(n²) 100k wall. The world-mode toggle
# routes through `facett_graphview::world` (L5 — the single home for every graph surface).
facett-graphview = { path = "../../../facett/facett-graphview", version = "0.2.0" }
egui = "0.36"
serde_json = "1"
# UI-testing coverage ledger — reuse edda's testmatrix (never hand-roll a harness).
# Optional + off by default; the robot drill-down tests emit a `functional_status`
# cell only under `--features testmatrix`.
nornir-testmatrix = { path = "../../../edda/crates/nornir-testmatrix", version = "0.2", optional = true }
[features]
# `fixtures` — the compiled-in nordisk skeleton (`fixture_snapshot`, `from_fixture`,
# `panel`) and the generated function tier the scale tests stand a world on. OFF in
# every shipped build: the shipped host feeds the navigator from its server and draws
# the source's state when it has no answer. This crate's own tests get it through the
# dev-dependency on itself below.
fixtures = []
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
# UNIVERSE mode's GPU star-field lane: turn on facett-graphpan's shared instanced GPU cloud
# (`facett_core::render::gpu::graphcloud`, the SAME renderer world_still rasterises at 100k/1M).
# OFF by default — without it `paint_scene_opts`'s GPU path compiles to `false` and Universe
# falls back to the CPU dot-cloud (every node still renders; `universe_gpu_cloud` reports false).
# A host that mounts this pane with a live wgpu RenderState enables `gpu` + installs the cloud
# renderer (`graphcloud::cloud::install_cloud_renderer`) to unlock the instanced star-field.
gpu = ["facett-graphpan/wgpu", "facett-core/wgpu"]
[dev-dependencies]
nornir-warehouse-nav = { path = ".", features = ["fixtures"] }
# `wgpu` feature → `Harness::render()` rasterises the panel to an RgbaImage on the GPU,
# so the screenshot robot test can save a PNG of the ACTUAL rendered world graph.
egui_kittest = { version = "0.36", features = ["wgpu"] }
# PNG out for the before/after world-graph screenshots.
image = { version = "0.25", default-features = false, features = ["png"] }
# The shared canvas (draw_graph/GraphView/BOX_W) — the screenshot test renders the
# "before" (chip) look directly through it for the red-when-broken contrast.
facett-graphpan = { path = "../../../facett/facett-graphpan" }
egui = "0.36"