- Add `MessageState` trait defining UI reaction callbacks for generation lifecycle, model updates, provider status, resize, and tick events. - Implement `App::handle_message` to route `AppMessage` variants to the provided `MessageState` and determine exit condition. - Add `handler.rs` module with the trait and dispatch logic; re-export `MessageState` in `app/mod.rs`. - Extend `ActiveGeneration` with a public `request_id` getter and clean up dead code annotations. - Implement empty `MessageState` for `ChatApp` to integrate UI handling. - Add `log` crate dependency for warning messages.
Owlen TUI
This crate contains all the logic for the terminal user interface (TUI) of Owlen.
It is built using the excellent ratatui library and is responsible for rendering the chat interface, handling user input, and managing the application state.
Features
- Chat View: A scrollable view of the conversation history.
- Input Box: A text input area for composing messages.
- Model Selection: An interface for switching between different models.
- Event Handling: A system for managing keyboard events and asynchronous operations.