The TUI is not active during tool execution. The flow becomes:
1. leave_for_turn() — exit alt screen, enable raw mode
2. cli.run_turn_to() — stdout/stderr goes to normal terminal
3. wait_to_return() — 'Press any key to return to TUI...'
4. reenter_after_turn() — re-enter alt screen, redraw
This guarantees zero output bleeding. Replaces suspend/resume approach.
- Add dependency for safe stdout/stderr capture during turns
- Replace unsafe libc::dup/dup2 stdout suppression with capture_output()
- Tool stdout/stderr is now captured and rendered inside conversation pane
- Add compact StatusBar component for focused layout
- Redraw layout: status bar top, large conversation, compact input,
optional dashboard on the right for wide terminals
- Eliminates output bleeding onto the TUI frame
- 321 tests pass
The Component trait's render(&self) couldn't mutate the cache.
Switched to RefCell<RenderCache> for interior mutability so the
word-wrapped line cache rebuilds on dirty during render().
Also adds Dashboard::clear_dirty() and marks components clean
after each draw_screen() cycle.