Skip to main content

Crate frankensearch_tui

Crate frankensearch_tui 

Source
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.