facett-git — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: A git-repository Facet: browse branches, commit log, file tree, and syntax-coloured source — all clickable, egui-rendered.
- Does:
GitViewshows a repo from a pureRepoSnapshot(branches / commits / tree). With the optionalgixfeature it reads live from disk (RepoSnapshot::open/GitView::open); without it the host supplies a snapshot + blob so the facet builds/tests with no git dependency. A deterministic Rusthighlighter turns source into an egui colouredLayoutJob(its ownTheme/Kindcolour map).demo()gives a fixture. Everything observable (selected branch, open path, counts) is instate_json(LAW 6 / FC-6), so it's headless-testable. - Key deps:
facett-core(Facet, theme),egui,serde/serde_json; optionalgix0.84 (read-only, no-network, version-matched to nornir). Dev:egui_kittest. - Shape: lib, ~782 lines: lib.rs (view, 345), highlight.rs (250), model.rs (RepoSnapshot/Blob, 187).
- Observed role in the workspace: A consumer (e.g. nornir's viz) drops it into a FacetDeck to surface git for any repo; the
gixfeature is the live-data opt-in.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: