skate/TODO.md
Drew Galbraith af080710cc Fix some issues with UI getting out of sync. (#7)
Reviewed-on: #7
Co-authored-by: Drew Galbraith <drew@tiramisu.one>
Co-committed-by: Drew Galbraith <drew@tiramisu.one>
2026-03-11 06:53:49 +00:00

1.4 KiB

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.