24 lines
1.4 KiB
Markdown
24 lines
1.4 KiB
Markdown
# UI Sync
|
|
|
|
- Keep UI and orchestrator in sync (i.e. messages display out of order if you queue up many.)
|
|
- `:clear` clears TUI state immediately but sends `ClearHistory` to orchestrator async. A mid-stream response can ghost back in after clear. Need synchronization (e.g. clear on `TurnComplete`, or have orchestrator ack the clear).
|
|
|
|
# UX Improvements
|
|
|
|
- Start tool uses collapsed.
|
|
- Allow traversing blocks with [, ] short cuts.
|
|
- Allow expanding and closing blocks with o (expand all with Ctrl+o)
|
|
|
|
- Allow moving inside the text area with the arrows (and ctrl arrows)
|
|
|
|
# Scroll
|
|
|
|
- `update_scroll` auto-follows in Insert mode, yanking viewport to bottom on mode switch. Only auto-follow when new content arrives (in `drain_ui_events`), not every frame.
|
|
- `G` sets scroll to `u16::MAX` and relies on `update_scroll` clamping. Compute actual max_scroll inline, or document the contract that `update_scroll` must always run before render.
|
|
|
|
# Cleanups
|
|
|
|
- Move keyboard/event reads in the TUI to a separate thread or async/io loop
|
|
- When a permission is denied, output a useful tools message to the agent (i.e. searching the internet is not enabled).
|
|
- Parallelize tool-use execution in `run_turn` -- requires refactoring `Orchestrator` to use `&self` + interior mutability (`Arc<Mutex<...>>` around `event_tx`, `action_rx`, `history`) so multiple futures can borrow self simultaneously via `futures::future::join_all`.
|
|
|