aether-wisp 0.1.5

A terminal UI for AI coding agents via the Agent Client Protocol (ACP)
Documentation
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`](crate::run_with_state) feeds three event sources into `App`:

- **Terminal events** — keystrokes and resizes, dispatched through [`Component::on_event`]tui::Component::on_event.
- **ACP events** — streamed text chunks, tool calls, plans, and session lifecycle updates, dispatched through [`on_acp_event`]App::on_acp_event.
- **Ticks** — 100 ms heartbeats for animations (spinners, progress bars), gated by [`wants_tick`]App::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 UI
- [`RuntimeState`]crate::runtime_state::RuntimeState — ACP session bootstrap that produces the inputs for `App::new`
- [`Keybindings`]crate::keybindings::Keybindings — all keyboard shortcuts