| 109 | // ── App state ────────────────────────────────────────────────────────────── |
| 110 | |
| 111 | struct App { |
| 112 | // Tab |
| 113 | tab: Tab, |
| 114 | // Chat state |
| 115 | messages: Vec<ChatMessage>, |
| 116 | input: String, |
| 117 | cursor_pos: usize, |
| 118 | scroll_offset: u16, |
| 119 | total_lines: u16, |
| 120 | streaming: bool, |
| 121 | waiting: bool, // true after send, before first token |
| 122 | thinking: bool, // true while inside <think>...</think> |
| 123 | // Cluster state |
| 124 | topology: Option<TopologyResponse>, |
| 125 | cluster_scroll: u16, |
| 126 | cluster_total_lines: u16, |
| 127 | // Common |
| 128 | server: String, |
| 129 | status: String, |
| 130 | should_quit: bool, |
| 131 | auto_scroll: bool, |
| 132 | } |
| 133 | |
| 134 | impl App { |
| 135 | fn new(server: &str) -> Self { |
nothing calls this directly
no outgoing calls
no test coverage detected