Reviewed-on: #7 Co-authored-by: Drew Galbraith <drew@tiramisu.one> Co-committed-by: Drew Galbraith <drew@tiramisu.one>
1.4 KiB
1.4 KiB
UI Sync
- Keep UI and orchestrator in sync (i.e. messages display out of order if you queue up many.)
:clearclears TUI state immediately but sendsClearHistoryto orchestrator async. A mid-stream response can ghost back in after clear. Need synchronization (e.g. clear onTurnComplete, 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_scrollauto-follows in Insert mode, yanking viewport to bottom on mode switch. Only auto-follow when new content arrives (indrain_ui_events), not every frame.Gsets scroll tou16::MAXand relies onupdate_scrollclamping. Compute actual max_scroll inline, or document the contract thatupdate_scrollmust 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 refactoringOrchestratorto use&self+ interior mutability (Arc<Mutex<...>>aroundevent_tx,action_rx,history) so multiple futures can borrow self simultaneously viafutures::future::join_all.