1.2 KiB
1.2 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).
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.