diff --git a/crates/tui/src/app.rs b/crates/tui/src/app.rs index 1489953a..eba58534 100644 --- a/crates/tui/src/app.rs +++ b/crates/tui/src/app.rs @@ -16,7 +16,7 @@ use crate::command::{ use crate::input::InputBuffer; use crate::scroll::Scroll; use crate::task::TaskStore; -use crate::ui::Mode; +use crate::view_mode::Mode; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum CommandCompletionApply { diff --git a/crates/tui/src/lib.rs b/crates/tui/src/lib.rs index 16e76e4a..a92543f9 100644 --- a/crates/tui/src/lib.rs +++ b/crates/tui/src/lib.rs @@ -12,6 +12,7 @@ mod spawn; mod task; mod tool; mod ui; +mod view_mode; use std::future::Future; use std::io; diff --git a/crates/tui/src/tool.rs b/crates/tui/src/tool.rs index 78cbd209..e74fc8b1 100644 --- a/crates/tui/src/tool.rs +++ b/crates/tui/src/tool.rs @@ -12,7 +12,7 @@ use unicode_width::{UnicodeWidthChar, UnicodeWidthStr}; use crate::block::{Block, ToolCallBlock, ToolCallState}; use crate::cache::FileCache; -use crate::ui::Mode; +use crate::view_mode::Mode; /// Maximum body lines in normal mode for tool output previews. const NORMAL_MAX_BODY: usize = 5; diff --git a/crates/tui/src/ui.rs b/crates/tui/src/ui.rs index 61706e74..5442bb95 100644 --- a/crates/tui/src/ui.rs +++ b/crates/tui/src/ui.rs @@ -31,36 +31,7 @@ use crate::app::{ActionbarNoticeLevel, App, CompletionState, alert_source_label, use crate::block::{Block, CompactEvent, ThinkingBlock, ThinkingState}; use crate::command::CommandCandidate; use crate::task::{TaskCounts, TaskEntry, TaskStatus, TaskStore}; - -/// Display density for the history view. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum Mode { - /// Every block fully expanded. - Detail, - /// Completed blocks compressed to roughly 5–6 lines; in-progress - /// tool blocks stay in detail. - Normal, - /// Each block rendered as a single line. - Overview, -} - -impl Mode { - pub fn cycle(self) -> Self { - match self { - Mode::Detail => Mode::Normal, - Mode::Normal => Mode::Overview, - Mode::Overview => Mode::Detail, - } - } - - pub fn label(self) -> &'static str { - match self { - Mode::Detail => "detail", - Mode::Normal => "normal", - Mode::Overview => "overview", - } - } -} +use crate::view_mode::Mode; pub fn draw(frame: &mut Frame, app: &mut App) { let area = frame.area(); diff --git a/crates/tui/src/view_mode.rs b/crates/tui/src/view_mode.rs new file mode 100644 index 00000000..ca0877ab --- /dev/null +++ b/crates/tui/src/view_mode.rs @@ -0,0 +1,29 @@ +/// Display density for the history view. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Mode { + /// Every block fully expanded. + Detail, + /// Completed blocks compressed to roughly 5–6 lines; in-progress + /// tool blocks stay in detail. + Normal, + /// Each block rendered as a single line. + Overview, +} + +impl Mode { + pub fn cycle(self) -> Self { + match self { + Mode::Detail => Mode::Normal, + Mode::Normal => Mode::Overview, + Mode::Overview => Mode::Detail, + } + } + + pub fn label(self) -> &'static str { + match self { + Mode::Detail => "detail", + Mode::Normal => "normal", + Mode::Overview => "overview", + } + } +}