facett-about/Cargo.toml
[package]
name = "facett-about"
description = "facett — the shared About-card widget: one robot-testable egui `Window` that renders a `nornir_appshell::Identity` (logo · wordmark · version · tagline · subtitle · engines · framework · links) so korp's and holger's (and dwarves/nornir/ordning's) About surfaces are ONE widget, not per-app twins. LFS-tolerant logo decode (graceful, no panic on an un-pulled pointer), stable AccessKit alt-text for a11y + robot assertion, dismissible (window ✕ or Close). Ports korp's `draw_about_window` verbatim, parameterised by Identity."
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
# Development notes, agent instructions and machine-local tooling stay in the
# repository; they are not part of the published crate.
exclude = [
".nornir/",
]
[features]
default = []
# `testmatrix` — turn the widget's render/dismiss self-checks into real nornir
# test-matrix rows via `functional_status`. Compiled OUT of the default build (no
# nornir dep by default), a `#[inline]` no-op otherwise. Mirrors the facett-confirm
# idiom: the optional `nornir-testmatrix` edge only exists behind this feature, so a
# release build carries no emit and no dep. Resolves from crates.io (NOT a path) so
# the nornir-server's own facett clone never reaches the dev checkout.
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
[dependencies]
egui = { workspace = true }
serde_json = { workspace = true }
# The ONE shared, egui-FREE app-shell MODEL (edda leaf). This widget CONSUMES the
# `Identity` (LAW #5) instead of twinning korp/holger's const-blobs. Path+version
# (like facett-claude deps `../../edda/crates/nornir-claude`) so the workspace
# resolves the sibling checkout; publish=false there, path-only consumption.
nornir-appshell = { path = "../../edda/crates/nornir-appshell", version = "0.1" }
# The GPU TRUTH the card reports: `render::adapter`'s recorded adapter selection
# (name · backend · device class · how many were enumerated · the software flag) and
# `render::lane`'s lane-use fold. Both modules are FEATURE-FREE — no `wgpu` feature is
# enabled here, so the About card carries no GPU dependency edge and still reports the
# facts a wgpu host recorded in the process globals at startup.
facett-core = { path = "../facett-core", version = "0.3.0" }
# LFS-tolerant logo decode (PNG → egui texture). Same version/features every other
# facett image-carrying leaf uses (facett-graph/-map/-map3d): decode is best-effort
# (`load_from_memory(..).ok()`), so an un-pulled git-lfs pointer yields None, never
# a panic — the card then shows its text identity.
image = { version = "0.25", default-features = false, features = ["png"] }
# L4: functional-status emitter. OPTIONAL + behind the `testmatrix` feature so a
# release build carries no dependency edge and strips every emit call.
nornir-testmatrix = { version = "0.2", default-features = false, optional = true }
[dev-dependencies]
# CPU render-proof (AccessKit tree) via the kittest harness — the robot scenario
# renders the real `draw_about_window` body and drives a real Close click.
#
# `wgpu` + `snapshot` additionally give the OFFSCREEN GPU render (`WgpuTestRenderer`
# → real pixels, no window, no display) that `tests/gpu_rows_on_real_hardware.rs`
# uses to LOOK at the card on the box's actual device. NOTE: that test does NOT use
# kittest's `default_wgpu_setup()`, whose selector comment reads "Prefer software
# rasterizers" — it builds facett's own `facett_wgpu_options()` policy instead, which
# is precisely why the rows it paints are the rows a user sees.
egui_kittest = { version = "0.36", features = ["wgpu", "snapshot"] }
# The wgpu half of facett-core (`render::gpu::adapter_wgpu::facett_wgpu_options`) —
# DEV ONLY. The published card carries no GPU edge: it reads the adapter facts a host
# recorded in the feature-free `render::adapter` / `render::lane` globals. Same
# dev-only-features idiom as facett-map's `facett-core = { features = ["golden"] }`.
facett-core = { path = "../facett-core", version = "0.3.0", features = ["wgpu"] }