Expand description
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.
Re-exports§
pub use accessibility::FocusDirection;pub use accessibility::FocusManager;pub use accessibility::SemanticRole;pub use determinism::Clock;pub use determinism::DeterministicSeed;pub use determinism::ReplayMetadata;pub use determinism::ReplayMode;pub use determinism::TickClock;pub use determinism::WallClock;pub use evidence::EvidenceEnvelope;pub use evidence::EvidenceEvent;pub use evidence::EvidenceEventType;pub use evidence::EvidencePayload;pub use evidence::EvidenceReason;pub use evidence::EvidenceRedaction;pub use evidence::EvidenceSeverity;pub use evidence::EvidenceSink;pub use evidence::EvidenceTrace;pub use evidence::EvidenceWriteError;pub use evidence::NoopWriter;pub use evidence::RedactionTransform;pub use evidence::VecWriter;pub use frame::CachedLayout;pub use frame::CachedTabState;pub use frame::FrameBudget;pub use frame::FrameMetrics;pub use frame::FramePipelineMetrics;pub use frame::FramePipelineTimer;pub use frame::JankCallback;pub use input::InputEvent;pub use input::KeyAction;pub use input::KeyBinding;pub use input::Keymap;pub use interaction::CardLayoutRule;pub use interaction::CardRole;pub use interaction::DeterministicCheckpoint;pub use interaction::DeterministicStateBoundary;pub use interaction::InteractionLatencyHooks;pub use interaction::InteractionSurfaceContract;pub use interaction::InteractionSurfaceKind;pub use interaction::LayoutAxis;pub use interaction::PaletteIntent;pub use interaction::PaletteIntentRoute;pub use interaction::SHOWCASE_INTERACTION_SPEC_VERSION;pub use interaction::ShowcaseInteractionSpec;pub use interaction::ShowcaseInteractionSpecError;pub use overlay::OverlayKind;pub use overlay::OverlayManager;pub use overlay::OverlayRequest;pub use palette::Action;pub use palette::ActionCategory;pub use palette::CommandPalette;pub use palette::PaletteState;pub use replay::InputRecord;pub use replay::ReplayPlayer;pub use replay::ReplayRecorder;pub use replay::ReplayState;pub use screen::Screen;pub use screen::ScreenContext;pub use screen::ScreenId;pub use screen::ScreenRegistry;pub use shell::AppShell;pub use shell::ShellConfig;pub use shell::StatusLine;pub use terminal::TerminalEvent;pub use terminal::TerminalMode;pub use terminal::TerminalState;pub use theme::ColorScheme;pub use theme::Theme;pub use theme::ThemePreset;
Modules§
- accessibility
- Accessibility: focus management and semantic annotations.
- determinism
- Deterministic time and seed injection for replay and testing.
- evidence
- JSONL evidence hooks for replay, postmortem, and explainability.
- frame
- Frame budget enforcement and jank detection.
- input
- Unified input model: keymap, bindings, mouse support.
- interaction
- Canonical interaction primitives ported from ftui-demo showcase patterns.
- overlay
- Overlay system: help panels, confirmation dialogs, alerts.
- palette
- Command palette: fuzzy-matched action lookup and dispatch.
- replay
- Input recording and deterministic replay.
- screen
- Screen trait, screen IDs, and registry for TUI navigation.
- shell
- App shell: status bar, breadcrumbs, screen lifecycle.
- terminal
- Terminal mode detection and inline/alt-screen resilience.
- theme
- Color schemes, theme presets, and theming infrastructure.