Repository navigation
feat(composer): send images and text files with steers and follow-ups - #214
Merged
Merged
Conversation
omp's steer, follow_up and prompt+streamingBehavior RPC commands accept images, so queued messages no longer need to be text-only. Allow attaching (+ menu, paste, drag and drop) while the agent runs, fold text files into the queued message as an idle send does, and let attachments alone turn Stop into Queue. Edit no longer restores omp's "[Image]" placeholder for an image-only queued message.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (da7eb34) onto upstream/main.
…ueing A steer or follow-up omp refuses, a queued message taken back by Edit, and the queue Stop withdraws now return their images to the draft, not just their text. Draft recovery (recoverDraft) carries images; Stop reads them from abort_and_restore_queue and Edit from remove_queued_message (can1357/oh-my-pi#14179). omp's "[Image]" label is never restored as text. The stale "queued messages remain text-only" changelog note is removed.
The composer now puts a refused steer, follow-up or queued prompt back into the draft it was sent from, text and images together. The hook's insertIfEmpty only restored the text, skipped it when the composer had new typing, and could land in another session after navigation.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (453ea58) onto upstream/main.
Edit and Stop drop omp's "[Image]" label only when the entry carries images, so a message that literally reads "[Image]" survives. Recovered images are no longer truncated at the attachment cap; sending still enforces it, so the user picks which to keep.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (40683b2) onto upstream/main.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (40683b2) onto upstream/main.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (40683b2) onto upstream/main.
andrebrait
added a commit
to andrebrait/ompweb
that referenced
this pull request
Oct 5, 2026
…rs and follow-ups Squashed from origin/feat/queue-attachments (40683b2) onto upstream/main.
kahme247
added a commit
that referenced
this pull request
Oct 5, 2026
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.
Summary
omp's
steer,follow_up, andpromptwithstreamingBehaviorRPC commands acceptimages, and omp delivers them with the queued message. omp-web blocked attachments for the whole run and refused to queue a message that had any, so images could only be sent while the agent was idle.[Image]label into the composer.queueAllowsAttachmentspredicate and theattachmentsDisabled,dictationKeptWithAttachments, andimagesCannotQueuestrings.The server path needed no change:
lib/rpc-manager.tsalready validates images onsteerandfollow_up, anduseAgentSessionalready forwards them.Known limits
abort_and_restore_queue) and Edit (remove_queued_message) only with an omp carrying feat(rpc): added abort_and_restore_queue command can1357/oh-my-pi#14179, which adds both. Older omp returns only the text. A queue RPC that fails (steer, follow-up, queued slash prompt) restores its images on any omp.[Image]) are indistinguishable to Delete, Edit, and Steer. This is the existing behavior for identical texts.Testing
components/ChatInput.queue-attachments.test.mjsattaches an image and a text file during a run, then checks the steer from Enter, the follow-up from Queue with attachments only, and an expanded/goalqueued with attachments. It fails onmainbecause attaching is refused during a run.npm test: 1133 passed, 0 failed.tsc --noEmitandnpm run lintshow no errors.--mode rpc, gemini-3.5-flash-lite), using the command shapes omp-web sends: twofollow_upcommands with a red PNG (one with text, one image-only) were sent while the agent was streaming.queue_updatelisted the text and[Image]; each delivered user message containedimage/webpcontent, and the model answered "Red" both times.Follow-up commit: images come back
recoverDraftinlib/draft-store.tscarries images). omp's[Image]label is never restored as text.remove_queued_messageimages are parsed and Stop restores images fromabort_and_restore_queue.npm test: 1134 passed, 0 failed.bun packages/coding-agent/src/cli.ts --mode rpc): while streaming, queued two image follow-ups and an image steer;remove_queued_messagereturned{removed:true, images:[1 image]}, andabort_and_restore_queuereturned the steer with its image and the image-only follow-up as[Image]with its image.