pub struct App { /* private fields */ }Expand description
Main application component that orchestrates the entire Wisp TUI.
App owns two screens — a ConversationScreen for chat and a ScreenRouter for navigating to the git diff viewer — plus an optional SettingsOverlay.
§Event routing
The parent event loop in run_with_state feeds three event sources into App:
- Terminal events — keystrokes and resizes, dispatched through
Component::on_event. - ACP events — streamed text chunks, tool calls, plans, and session lifecycle updates, dispatched through
on_acp_event. - Ticks — 100 ms heartbeats for animations (spinners, progress bars), gated by
wants_tick.
§Screen management
ScreenRouter tracks whether the user is viewing the conversation or the git diff. Ctrl+G toggles between them. The settings overlay floats above whichever screen is active.
§See also
ConversationScreen— the main chat UIRuntimeState— ACP session bootstrap that produces the inputs forApp::newKeybindings— all keyboard shortcuts
Implementations§
Source§impl App
impl App
pub fn new( session_id: SessionId, agent_name: String, prompt_capabilities: PromptCapabilities, config_options: &[SessionConfigOption], auth_methods: Vec<AuthMethod>, working_dir: PathBuf, prompt_handle: AcpPromptHandle, ) -> Self
pub fn exit_requested(&self) -> bool
pub fn has_settings_overlay(&self) -> bool
pub fn needs_mouse_capture(&self) -> bool
pub fn wants_tick(&self) -> bool
pub fn on_acp_event(&mut self, event: AcpEvent)
Trait Implementations§
Source§impl Component for App
impl Component for App
Source§type Message = RendererCommand
type Message = RendererCommand
The message type emitted by this widget.
Source§async fn on_event(&mut self, event: &Event) -> Option<Vec<RendererCommand>>
async fn on_event(&mut self, event: &Event) -> Option<Vec<RendererCommand>>
Process an event and return the outcome. Read more
Source§fn render(&mut self, ctx: &ViewContext) -> Frame
fn render(&mut self, ctx: &ViewContext) -> Frame
Render the current state to a frame.
Auto Trait Implementations§
impl Freeze for App
impl !RefUnwindSafe for App
impl Send for App
impl Sync for App
impl Unpin for App
impl UnsafeUnpin for App
impl !UnwindSafe for App
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more