## 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