Shared TUI framework for frankensearch products.
This crate provides reusable terminal UI primitives shared by both the fsfs deluxe TUI and the ops observability TUI. It ensures consistent UX, keyboard shortcuts, theming, and accessibility across all frankensearch TUI products.
Architecture
┌─────────────────────────────────────────────────┐
│ Product crates (fsfs, ops) │
│ └─ product-specific screens + data sources │
├─────────────────────────────────────────────────┤
│ frankensearch-tui (this crate) │
│ ├─ screen: Screen trait, ScreenId, registry │
│ ├─ shell: App shell, status bar, breadcrumbs │
│ ├─ palette: Command palette, action routing │
│ ├─ input: Keymap, bindings, mouse model │
│ ├─ theme: Color schemes, dark/light presets │
│ ├─ overlay: Help, alerts, confirmation dialogs │
│ ├─ accessibility: Focus, semantic annotations │
│ ├─ frame: Budget enforcement, jank detection │
│ ├─ replay: Input recording, deterministic play │
│ ├─ determinism: Clock trait, seeds, replay ctx │
│ ├─ evidence: JSONL evidence hooks + redaction │
│ └─ terminal: Mode detection, reconnect handler │
├─────────────────────────────────────────────────┤
│ FrankenTUI (ftui-*) │
└─────────────────────────────────────────────────┘
Usage
Product crates implement the [Screen] trait for their views, register
them in a [ScreenRegistry], and hand control to the [AppShell] which
manages navigation, overlays, input dispatch, and frame timing.