# `mod tui` :::::::{rust:module} paranoid_cli::tui :index: 0 :vis: pub ::: ::: :::{rust:use} paranoid_cli::tui :used_name: self ::: :::{rust:use} paranoid_cli :used_name: crate ::: :::{rust:use} anyhow::Context :used_name: Context ::: :::{rust:use} arboard::Clipboard :used_name: Clipboard ::: :::{rust:use} crossterm::terminal::EnterAlternateScreen :used_name: EnterAlternateScreen ::: :::{rust:use} crossterm::event::Event :used_name: Event ::: :::{rust:use} crossterm::event::KeyCode :used_name: KeyCode ::: :::{rust:use} crossterm::event::KeyEvent :used_name: KeyEvent ::: :::{rust:use} crossterm::event::KeyModifiers :used_name: KeyModifiers ::: :::{rust:use} crossterm::terminal::LeaveAlternateScreen :used_name: LeaveAlternateScreen ::: :::{rust:use} crossterm::terminal::disable_raw_mode :used_name: disable_raw_mode ::: :::{rust:use} crossterm::terminal::enable_raw_mode :used_name: enable_raw_mode ::: :::{rust:use} crossterm::event :used_name: event ::: :::{rust:use} crossterm::execute :used_name: execute ::: :::{rust:use} paranoid_core::FrameworkId :used_name: FrameworkId ::: :::{rust:use} paranoid_core::AuditStage :used_name: AuditStage ::: :::{rust:use} paranoid_core::CharsetOptions :used_name: CharsetOptions ::: :::{rust:use} paranoid_core::CharsetSpec :used_name: CharsetSpec ::: :::{rust:use} paranoid_core::GenerationReport :used_name: GenerationReport ::: :::{rust:use} paranoid_core::ParanoidRequest :used_name: ParanoidRequest ::: :::{rust:use} paranoid_core::combined_framework_requirements :used_name: combined_framework_requirements ::: :::{rust:use} paranoid_core::execute_request :used_name: execute_request ::: :::{rust:use} paranoid_core::secure_preview :used_name: secure_preview ::: :::{rust:use} paranoid_vault::NativeSessionHardening :used_name: NativeSessionHardening ::: :::{rust:use} ratatui::backend::TestBackend :used_name: TestBackend ::: :::{rust:use} ratatui::backend::Backend :used_name: Backend ::: :::{rust:use} ratatui::widgets::Block :used_name: Block ::: :::{rust:use} ratatui::widgets::Borders :used_name: Borders ::: :::{rust:use} ratatui::style::Color :used_name: Color ::: :::{rust:use} ratatui::layout::Constraint :used_name: Constraint ::: :::{rust:use} ratatui::backend::CrosstermBackend :used_name: CrosstermBackend ::: :::{rust:use} ratatui::layout::Direction :used_name: Direction ::: :::{rust:use} ratatui::Frame :used_name: Frame ::: :::{rust:use} ratatui::widgets::Gauge :used_name: Gauge ::: :::{rust:use} ratatui::layout::Layout :used_name: Layout ::: :::{rust:use} ratatui::text::Line :used_name: Line ::: :::{rust:use} ratatui::widgets::List :used_name: List ::: :::{rust:use} ratatui::widgets::ListItem :used_name: ListItem ::: :::{rust:use} ratatui::style::Modifier :used_name: Modifier ::: :::{rust:use} ratatui::widgets::Paragraph :used_name: Paragraph ::: :::{rust:use} ratatui::layout::Rect :used_name: Rect ::: :::{rust:use} ratatui::text::Span :used_name: Span ::: :::{rust:use} ratatui::style::Style :used_name: Style ::: :::{rust:use} ratatui::widgets::Tabs :used_name: Tabs ::: :::{rust:use} ratatui::Terminal :used_name: Terminal ::: :::{rust:use} ratatui::text::Text :used_name: Text ::: :::{rust:use} ratatui::widgets::Wrap :used_name: Wrap ::: :::{rust:use} std::time::Duration :used_name: Duration ::: :::{rust:use} std::sync::mpsc::Receiver :used_name: Receiver ::: :::{rust:use} std::io :used_name: io ::: :::{rust:use} std::sync::mpsc :used_name: mpsc ::: :::{rust:use} std::thread :used_name: thread ::: :::{rubric} Functions ::: ::::::{rust:function} paranoid_cli::tui::run :index: 0 :vis: pub :layout: [{"type":"keyword","value":"fn"},{"type":"space"},{"type":"name","value":"run"},{"type":"punctuation","value":"("},{"type":"punctuation","value":")"},{"type":"space"},{"type":"returns"},{"type":"space"},{"type":"link","value":"anyhow","target":"anyhow"},{"type":"punctuation","value":"::"},{"type":"name","value":"Result"},{"type":"punctuation","value":"<"},{"type":"punctuation","value":"("},{"type":"punctuation","value":")"},{"type":"punctuation","value":">"}] ::: ::: :::::: ::::::{rust:function} paranoid_cli::tui::run_scripted :index: 0 :vis: pub :layout: [{"type":"keyword","value":"fn"},{"type":"space"},{"type":"name","value":"run_scripted"},{"type":"punctuation","value":"("},{"type":"name","value":"terminal"},{"type":"punctuation","value":": "},{"type":"punctuation","value":"&"},{"type":"keyword","value":"mut"},{"type":"space"},{"type":"link","value":"Terminal","target":"Terminal"},{"type":"punctuation","value":"<"},{"type":"link","value":"ratatui","target":"ratatui"},{"type":"punctuation","value":"::"},{"type":"name","value":"backend"},{"type":"punctuation","value":"::"},{"type":"name","value":"TestBackend"},{"type":"punctuation","value":">"},{"type":"punctuation","value":", "},{"type":"name","value":"tokens"},{"type":"punctuation","value":": "},{"type":"punctuation","value":"&"},{"type":"punctuation","value":"["},{"type":"link","value":"crate","target":"crate"},{"type":"punctuation","value":"::"},{"type":"name","value":"scripted"},{"type":"punctuation","value":"::"},{"type":"name","value":"ScriptToken"},{"type":"punctuation","value":"]"},{"type":"punctuation","value":")"},{"type":"space"},{"type":"returns"},{"type":"space"},{"type":"link","value":"anyhow","target":"anyhow"},{"type":"punctuation","value":"::"},{"type":"name","value":"Result"},{"type":"punctuation","value":"<"},{"type":"link","value":"String","target":"String"},{"type":"punctuation","value":">"}] ::: Drives a fresh generator wizard `App` through a pre-parsed key script against an in-memory `TestBackend`, returning the final rendered frame as text. This is the entry point both `run()` (via `PARANOID_TUI_SCRIPT`) and integration tests use to exercise the real `App`, including its background audit worker thread, without a PTY. The wizard always starts from `App::default()`, matching the real `run()` entry point, so scripts drive the whole flow from the initial `Configure` screen. ::: :::::: :::::::