Send a photo or a file with your message
The + under the composer attaches a screenshot. Hold it and you get the
whole file browser instead. On a desktop you can also paste an image straight
into the box.
Why you would use it
The fastest way to show an agent a broken screen is the screenshot you just took.
On a phone that is two taps: +, then the newest photo.
How to use it
Tap
+(#attach), at the left end of the row under the box. Android Chrome opens its photo picker with the newest screenshot first, because the input (#photo-input) accepts images only.
To attach anything else, hold
+— a long press on a phone, a right click on a desktop. That opens the file browser (#file-input), which also takestext/*,application/pdfandapplication/json.
On a desktop, paste an image into the box (
#draft) instead.Type your message, or do not — an attachment on its own is a complete message.
Send.
What you see
- Each staged file appears as a chip above the box, in the strip
#drafts. Images show a thumbnail; everything else shows its name and size. - Each chip has an × to remove it, labelled
Remove <name>. - Online, the file uploads as soon as you pick it, so the send itself is fast.
- Offline, the bytes stay on the phone and you get the toast
<name> queued on this device. The message goes to the outbox with the file, and both go up when the connection comes back. - A queued message's card in the transcript shows its attachments too, so you can see what is waiting.
+is disabled with no tab open; attaching without one fails withstart a thread first.
Options and settings
| Option | Default | What it changes |
|---|---|---|
VCODE_MAX_ATTACHMENT_BYTES |
12582912 (12 MB) | the largest file the server will take |
#photo-input accept |
image/* |
what the + tap offers |
#file-input accept |
image/png,image/jpeg,image/gif,image/webp,image/*,text/*,application/pdf,application/json |
what holding + offers |
Files the models can read as images are image/png, image/jpeg, image/gif
and image/webp. Anything else is classified as a file and passed to the agent
by path.
Limits and known gaps
- Over the size limit the upload is refused, not truncated:
attachment too large: <n> > <limit> bytes. An empty file is refused too. - Attachments are staged per tab. A send takes the attachments of the tab it was sent from and no others.
- Editing a queued message loses its attachments; re-attach before sending again.
- Picking the same file twice in a row works — the input is reset before the files are read, because otherwise no change event fires and the button looks broken.
- An image type outside the four the models take (for example
image/bmp) is still accepted; it is classified as a file rather than an image.
Related
- send-a-message — the send path
- drafts-kept-per-tab — why the chips follow the tab
- manage-queued-messages — what happens to files on a queued message
- open-an-attachment — opening a file the transcript carries
- inline-screenshots — an image an agent puts in the transcript
- queue-a-message-offline — where the bytes wait when the send is offline