Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

facett-app/Cargo.toml

[package]
name = "facett-app"
description = "facett — the app-framework layer: NavModel (one nav model → many surfaces), a Router (route→view, back/forward, wasm-hash + native), and nav chrome (Sidebar, Breadcrumb, NavShell). The composition layer that turns facett components into whole apps."
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]
# L4: functional-status emitter passthrough (see facett-core). No-op in release.
testmatrix = ["facett-core/testmatrix"]
# Gates the `devid_release_probe` BIN (see `tests/devid_release_profile.rs`). A bin, not
# an example, on purpose: examples pull the whole dev-dependency graph (egui_kittest →
# wgpu), and the probe must be cheap to compile in `--release` because the test builds it.
devid-probe = []

[dependencies]
facett-core = { path = "../facett-core", version = "0.3.0" }
# The uniform menu system — now that its Command takes owned ids, a NavModel can
# drive its palette / menubar / context-menu (see `menu::nav_commands`).
facett-menu = { path = "../facett-menu", version = "0.2.0" }
egui = { workspace = true }
serde_json = { workspace = true }
# The declarative UI-SCENE layer (`scene`): describe an app's shell as DATA and
# render it through this crate's OWN AppShell/Router/TabView/menu primitives.
# serde-derive on the schema; RON is the on-disk authoring form (byte-stable).
serde = { version = "1", features = ["derive"] }
ron = "0.12"

[dev-dependencies]
# `wgpu_no_default_features`, NOT `wgpu` — the same spelling every other eframe dep in
# this workspace uses. eframe's plain `wgpu` feature expands to `egui-wgpu/default` →
# `wgpu/default` → `wgpu-hal/default` → **glow**, the WebGL/GL backend GFX_V2 Decision 0
# dropped. Features are additive and unify across the whole graph, so this DEV
# dependency turned the GL backend on for every crate in the workspace — including the
# normal edges — and `facett-core/tests/webgl_free_law.rs` red-fired the moment a normal
# path to eframe existed (facet-wrapped, 091fb2e). The backends actually wanted come
# from the workspace `wgpu` entry behind facett-core's GPU lane.
eframe = { version = "0.36", default-features = false, features = ["default_fonts", "wgpu_no_default_features", "wayland", "x11"] }
egui_kittest = { version = "0.36", features = ["snapshot", "wgpu"] }
# L4 — the ROBOT-TESTED-UI row for the scene's window chrome. `nornir-robotui` 0.2
# builds against egui 0.34, so this is the REAL shared driver (L5), not a port:
# one `Scenario` of (action → expected) steps → one `TestResultRow` each.
nornir-robotui = "0.4.0"
nornir-testmatrix = { version = "0.2", features = ["testmatrix"] }
png = "0.18.1"
# Property layer (component contract §5): invariant checks over Msg-like op
# sequences with no GUI in the loop.
proptest = "1"

# The RELEASE-profile witness for the DEV-ID chip. Behind `devid-probe` so it is never
# built by a normal `cargo build -p facett-app`; `tests/devid_release_profile.rs` builds
# it with `--release` and reads its JSON.
[[bin]]
name = "devid_release_probe"
path = "src/bin/devid_release_probe.rs"
required-features = ["devid-probe"]

[[example]]
name = "nav_app"
path = "examples/nav_app.rs"

# The starter template — `cargo run -p facett-app --example starter_app`.
[[example]]
name = "starter_app"
path = "examples/starter_app.rs"