Repository navigation
fix(images): preserve cross-client attachments and image understanding - #2946
Merged
bobleer merged 3 commits intoSep 10, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and behavior
Inline images from mobile and CLI could reach a text-only primary model without a path that
analyze_imagecould read. Context persistence also stripped the only copy of those pixels, while some native send/retry paths discarded attachments before the host acknowledged them. CLI Peer submissions silently omittedimageContexts.The receiving Runtime now saves inline attachments atomically under a content-addressed runtime artifact path before turn admission or steering. Native multimodal models receive pixels on every round; text-only models receive the exact tool-readable path and require the configured image-understanding model and enabled image tool. Canonical image messages remain intact for retries and restoration. SSH workspace reads use workspace services, with no fallback to same-named controller files.
Mobile web, Android, iOS and HarmonyOS prepare supported image payloads within their transport budgets, preserve attachments until acknowledgement, and retain newer drafts on success or failure. Native retries include the original images. CLI Peer accepts image inputs; a negotiated inline-attachment capability preserves the old upload path for older hosts. Web payloads retain pixels for Detached Dispatch.
Validation
analyze_imagetests: 26 passed on the final revision. Provider projection covers OpenAI, Anthropic, Responses and Gemini, including steering.Remote evidence uses simulated SSH filesystem ports and Peer/Dispatch/RemoteCommand contracts. No live provider, actual SSH connection, or physical phone end-to-end run was performed. Shared TUI keeps its explicit image-unsupported response because its existing bounded IPC transport does not carry these attachments.
Two unchanged account declarations fail the local native architecture default-argument audit; the minimal Core image filter also encounters an unchanged catalog test that assumes a product tool plan. Focused owner tests pass; upstream CI results are tracked on this PR.