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

nordisk/facett

.nornir/widgets/README.md

ordning GUI widgets — temporary home (destined for facett)

These facett-* widget crates are being built here in the ordning repo temporarily, then moved into the facett repo once stable — and once the concurrent facett work settles (another agent is actively editing facett-core; building here avoids collision). They fill the facett GUI gaps identified in ../03-facett-gui-have-gap.md.

Design contract (so the move is trivial)

Each widget is written to the facett Facet contract — title(&self), ui(&mut self, ui), state_json(&self) — so it drops into a facett FacetDeck unchanged. It compiles egui-only by default; an optional facett cargo feature adds impl facett_core::Facet (off by default so the crate is robust against facett's churn). The state_json surface mirrors facett's headless-test + $FACETT_TRACE discipline: every visible count/selection/state is observable without a display. Widgets that need time never read the clock — the host supplies today — so they're deterministic and testable.

The move-to-facett checklist (per widget)

  1. git mv crates/widgets/facett-<x> → facett/facett-<x>, add to facett's workspace.
  2. Add facett-core path dep; enable the facett feature; wire the impl Facet + theme colors.
  3. Add a headless egui_kittest test (facett's matrix) asserting state_json.
  4. Update facett's .nornir design/guide docs; drop the temporary copy here.

Widgets

Crate Status Tests Fills gap Doc
facett-kanban ✅ builds 3 board: status columns, drag-to-transition, swimlanes, WIP limits doc
facett-calendar ✅ builds 4 Monday-first month grid + date picker; deadlines/frister/absence doc
facett-timeline ✅ builds 3 swimlane timeline (handover/queue/ärende-flow); absence spans doc
facett-gantt ✅ builds 2 dependency bars + progress + milestones + critical path doc
facett-cfd ✅ builds 2 cumulative flow diagram (stacked status areas) doc
facett-search ✅ builds 5 the query-language parser + search bar (used everywhere) doc
facett-markdown ✅ builds 5 markdown editor+preview, @mention/#tag extraction doc
facett-toast ✅ builds 3 timed notification overlay (host-driven time) doc
facett-file ✅ builds 3 attachment drop-zone + list (reports intents) doc
facett-dashboard planned — role-dashboard grid shell (needs host facets) —

9 widgets, 30 unit tests green — Tier 1 + Tier 2 + most of Tier 3 of ../03-facett-gui-have-gap.md is built. Remaining: facett-dashboard (a layout shell — better built once several facets compose in a real app), and extending facett-card::FieldValue (StoryPoints/Duration/Sla/Sekretess/typed Relation — belongs in facett-card, so done on the move). Then: promote the facett-search parser into ordning-core (shared by the command line + automation), and the move-to-facett pass.