Eric Traut
d38b5260a1
Send local TUI images as portable attachments to remote app servers ( #45499 )
...
## Why
Remote app servers cannot read image paths on the TUI host. Image attachments need to carry their contents when submitting to a remote workspace.
## What changed
- Prepare local images as data URLs off the event loop for new turns and steers, preserving source pixels for model-specific resizing and enforcing a 32 MiB image transport budget.
- Show preparation progress, preserve queued message order, and recover drafts on preparation failures, cancellation, disconnects, or thread switches. Ignore stale preparation completions.
- Avoid duplicate user messages from server receipts and duplicate image labels in history.
## Testing
Add regression tests for portable image contents, receipt deduplication, draft restoration, responsive input during preparation, and cancellation across thread and connection changes.
GitOrigin-RevId: 6404615eae0b06c141af96b4229501c61f7fcfee
2026-09-14 19:21:08 +00:00
..
2026-07-29 13:53:15 +00:00
2026-09-05 18:06:26 +00:00
2026-08-24 22:40:35 +00:00
2026-09-14 15:30:22 +00:00
2026-07-29 13:53:15 +00:00
2026-09-14 19:11:29 +00:00
2026-09-07 19:34:23 +00:00
2026-09-09 20:39:33 +00:00
2026-09-14 19:11:29 +00:00
2026-07-30 19:47:30 +00:00
2026-09-03 06:02:25 +00:00
2026-09-10 13:02:57 +00:00
2026-08-20 08:10:08 +00:00
2026-09-11 20:10:02 +00:00
2026-08-31 13:44:12 +00:00
2026-09-03 23:20:54 +00:00
2026-09-09 03:17:48 +00:00
2026-09-02 21:50:51 +00:00
2026-09-07 16:55:06 +00:00
2026-08-14 05:03:39 +00:00
2026-08-17 22:37:14 +00:00
2026-09-14 16:30:00 +00:00
2026-09-10 21:41:39 +00:00
2026-09-03 01:46:37 +00:00
2026-08-28 19:44:50 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-14 09:29:51 +00:00
2026-09-14 15:13:13 +00:00
2026-08-18 23:47:00 +00:00
2026-08-13 23:13:37 +00:00
2026-09-14 19:12:59 +00:00
2026-09-14 16:30:00 +00:00
2026-09-05 01:25:06 +00:00
2026-09-14 19:11:29 +00:00
2026-08-31 21:27:51 +00:00
2026-09-14 15:06:28 +00:00
2026-09-12 18:16:17 +00:00
2026-09-14 18:57:52 +00:00
2026-09-11 01:57:54 +00:00
2026-09-14 16:30:00 +00:00
2026-08-07 11:30:17 +00:00
2026-09-05 12:17:32 +00:00
2026-09-14 15:30:22 +00:00
2026-09-13 06:07:03 +00:00
2026-09-13 06:07:03 +00:00
2026-08-17 04:37:50 +00:00
2026-09-14 18:57:52 +00:00
2026-09-10 18:24:13 +00:00
2026-09-12 22:28:41 +00:00
2026-09-10 18:10:26 +00:00
2026-07-31 21:37:56 +00:00
2026-08-27 20:44:47 +00:00
2026-09-06 20:52:29 +00:00
2026-09-14 12:52:16 +00:00
2026-09-09 23:23:59 +00:00
2026-09-10 00:26:30 +00:00
2026-09-11 21:59:24 +00:00
2026-09-11 21:59:24 +00:00
2026-09-13 06:07:03 +00:00
2026-09-14 19:11:29 +00:00
2026-09-09 20:32:57 +00:00
2026-09-10 03:18:28 +00:00
2026-09-10 21:41:39 +00:00
2026-09-12 00:22:04 +00:00
2026-09-13 06:07:03 +00:00
2026-09-14 16:51:56 +00:00
2026-07-30 04:26:36 +00:00
2026-09-09 15:48:39 +00:00
2026-09-01 17:17:45 +00:00
2026-09-10 21:51:34 +00:00
2026-08-25 15:50:19 +00:00
2026-09-14 15:30:22 +00:00
2026-09-11 03:16:01 +00:00
2026-08-26 17:45:42 +00:00
2026-08-21 16:45:05 +00:00
2026-09-10 20:50:10 +00:00
2026-09-14 16:37:47 +00:00
2026-08-28 01:14:02 +00:00
2026-09-13 06:07:03 +00:00
2026-08-10 15:43:10 +00:00
2026-09-09 06:04:59 +00:00
2026-09-09 04:00:10 +00:00
2026-09-05 05:21:42 +00:00
2026-09-09 23:23:59 +00:00
2026-09-02 18:34:27 +00:00
2026-09-14 16:30:00 +00:00
2026-09-14 18:40:02 +00:00
2026-09-14 15:05:16 +00:00
2026-09-14 19:21:08 +00:00
2026-09-02 18:42:06 +00:00
2026-09-08 00:13:28 +00:00
2026-09-14 17:36:11 +00:00
2026-09-11 22:09:02 +00:00
2026-09-03 20:01:07 +00:00
2026-09-14 16:05:40 +00:00
2026-09-14 16:05:40 +00:00
2026-08-15 14:31:04 +00:00
2026-09-13 18:53:06 +00:00
2026-09-08 21:19:02 +00:00
2026-09-14 19:12:59 +00:00
2026-09-14 18:56:43 +00:00
2026-07-29 13:53:15 +00:00
2026-09-11 06:45:09 +00:00