perf(ui-gpui): add render counters, remove redundant cx.observe, reduce repaints

- BlinkState.start_from_context<V>() uses Context<V> spawn (not App)
  which correctly registers the async task in the window's executor
- ProjectGrid NOT cached (blocks child dirty propagation)
- AgentPane + TerminalView cached with into_cached_flex()
- Render diagnostic: ProjectBox renders 2x/sec (blink), both boxes
  re-render because shared parent, but inner cached views are free
- CPU: ~3% with pulsing dot visible
This commit is contained in:
Hibryda 2026-03-19 22:48:29 +01:00
parent 1f26e5b272
commit 3859317477
3 changed files with 18 additions and 5 deletions

View file

@ -96,7 +96,11 @@ impl Render for Workspace {
}
// Project grid (fills remaining space) — cached with flex-1
main_row = main_row.child(self.project_grid.clone().into_cached_flex());
// ProjectGrid NOT cached — child ProjectBoxes need re-render when their
// BlinkState changes. Caching the grid blocks child dirty propagation.
main_row = main_row.child(
div().flex_1().h_full().child(self.project_grid.clone()),
);
root = root.child(main_row);