Charlie Marsh
eceb3eeaf3
Cache TUI flex heights across frame passes ( #34348 )
...
## Why
Sizing, rendering, and cursor placement can query the same chat widget layout
multiple times in one frame, repeatedly measuring active transcript cells.
## What changed
- Build one chat widget renderable tree per frame and reuse it for sizing,
rendering, and cursor placement.
- Cache each flex child's desired height by width for the lifetime of that tree.
- Reuse the bottom pane's renderable directly instead of forwarding each
renderable operation through a wrapper.
## Testing
- Verify flex layouts measure a child once across frame passes and remeasure it
when the width changes.
- Verify a chat widget frame measures its active transcript cell once.
GitOrigin-RevId: 5ad1a6711f4011c699b5d002b13dc3319cb4db8e
2026-07-20 13:58:17 +00:00
..
2026-07-20 13:58:17 +00:00
2026-06-11 22:26:31 -07:00
2026-03-28 11:23:07 -06:00
2026-07-20 13:58:17 +00:00
2026-07-20 13:58:17 +00:00
2026-07-19 19:44:10 +00:00
2026-07-15 21:03:49 +00:00
2026-07-20 13:45:29 +00:00
2026-07-11 01:15:48 +00:00
2026-07-17 23:19:12 +00:00
2026-05-29 14:01:27 -07:00
2026-07-18 18:00:51 +00:00
2026-04-21 17:10:36 +00:00
2026-07-08 15:45:57 -07:00
2026-05-18 20:24:09 -03:00
2026-04-07 08:03:35 -07:00
2026-07-20 13:58:17 +00:00
2026-07-19 21:34:05 +00:00
2026-07-19 21:34:05 +00:00
2026-07-20 13:50:06 +00:00
2026-07-18 18:19:39 +00:00
2026-05-15 17:10:15 -07:00
2026-07-15 02:35:49 +00:00
2026-07-15 01:36:44 +00:00
2026-07-15 01:07:29 +00:00
2026-07-17 23:19:12 +00:00
2026-06-24 13:25:44 -07:00
2026-06-15 19:25:54 -07:00
2026-07-19 16:59:12 +00:00
2026-07-20 13:58:17 +00:00
2026-06-17 19:52:43 +02:00
2026-04-13 18:27:00 -07:00
2026-05-07 20:31:41 -07:00
2026-05-04 16:11:15 -03:00
2026-07-18 18:19:39 +00:00
2026-05-14 18:51:36 -07:00
2026-05-05 16:18:02 +00:00
2026-06-01 18:01:52 +02:00
2026-05-13 15:40:37 -07:00
2026-03-28 11:23:07 -06:00
2026-06-05 08:32:07 -07:00
2026-06-05 08:32:07 -07:00
2026-07-20 13:45:29 +00:00
2026-07-18 03:58:20 +00:00
2026-07-16 16:08:43 +00:00
2026-04-30 10:52:19 -07:00
2026-07-19 20:20:23 +00:00
2026-03-28 11:23:07 -06:00
2026-07-15 22:49:52 +00:00
2026-07-15 22:49:52 +00:00
2026-07-15 22:49:52 +00:00
2026-07-15 21:03:49 +00:00
2026-07-15 21:03:49 +00:00
2026-07-15 22:49:52 +00:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-06-08 21:32:46 -07:00
2026-06-05 08:34:34 -07:00
2026-06-05 08:32:53 -07:00
2026-06-12 17:14:27 -07:00
2026-05-09 21:17:30 +00:00
2026-05-01 09:39:48 -07:00
2026-07-19 21:34:05 +00:00
2026-07-18 18:00:51 +00:00
2026-07-19 17:32:53 +00:00
2026-05-13 15:33:27 +00:00
2026-05-31 15:42:39 -03:00
2026-06-03 20:28:31 -03:00
2026-07-18 03:58:20 +00:00
2026-03-28 11:23:07 -06:00
2026-07-20 13:45:29 +00:00
2026-06-24 03:10:20 +00:00
2026-06-11 09:56:09 -07:00
2026-06-26 19:27:31 +00:00
2026-06-26 19:27:31 +00:00
2026-06-08 17:02:36 -07:00
2026-07-19 19:33:31 +00:00
2026-07-19 16:50:54 +00:00
2026-06-08 17:02:36 -07:00
2026-07-18 18:00:51 +00:00
2026-07-12 19:18:37 +00:00
2026-04-29 17:22:41 -07:00
2026-04-25 22:00:32 -03:00
2026-05-01 09:07:56 -07:00
2026-07-17 23:07:40 +00:00
2026-04-25 17:09:29 -07:00
2026-05-25 09:53:39 -07:00
2026-07-19 21:34:05 +00:00
2026-05-15 17:10:15 -07:00
2026-04-25 22:00:32 -03:00
2026-07-19 16:46:58 +00:00
2026-03-28 11:23:07 -06:00
2026-05-20 15:57:50 -07:00
2026-06-24 13:08:14 -07:00
2026-05-22 17:19:51 +00:00
2026-07-18 03:58:20 +00:00
2026-06-18 15:06:23 -07:00
2026-03-28 11:23:07 -06:00
2026-07-11 21:03:12 +00:00
2026-07-17 20:46:18 +00:00
2026-06-10 11:24:29 -07:00
2026-06-05 15:32:43 -04:00
2026-07-18 18:19:39 +00:00
2026-05-27 16:18:24 -03:00
2026-05-10 20:42:11 +00:00
2026-07-19 19:33:31 +00:00
2026-06-12 17:33:43 -07:00
2026-06-16 09:09:24 -07:00
2026-04-17 08:39:37 -07:00
2026-06-05 17:23:45 -07:00
2026-03-28 11:23:07 -06:00
2026-06-10 17:55:49 -07:00
2026-05-26 20:59:47 -07:00
2026-05-26 20:59:47 -07:00
2026-07-19 16:46:58 +00:00
2026-05-08 07:56:13 -07:00
2026-07-17 20:46:18 +00:00
2026-06-15 08:23:02 -07:00
2026-07-19 17:32:53 +00:00
2026-07-06 16:33:13 -04:00
2026-07-08 12:17:58 -04:00
2026-07-20 13:45:29 +00:00
2026-04-25 17:09:29 -07:00
2026-06-12 09:26:08 -07:00
2026-06-12 09:26:08 -07:00
2026-07-08 12:17:58 -04:00
2026-03-28 11:23:07 -06:00
2026-04-25 22:00:32 -03:00
2026-06-11 09:23:08 -07:00
2026-06-11 18:16:39 -07:00
2026-06-22 04:25:07 -07:00
2026-06-22 04:25:07 -07:00
2026-07-19 19:33:31 +00:00