## Summary - Closes #128. - Chat composer accepts PNG, JPEG, WebP, and GIF along with existing documents. - Selected image shows a thumbnail before send. Filename stays hidden for images. Documents still show the filename. - User turn keeps the image after reload, from the prompt `image` field the backend returns. - Oversized or unsupported images show the websocket error on the assistant bubble. - Landing copy and `llms.txt` no longer list vision as roadmap-only. Needs the matching `chat_backend` branch `feat/128-vision-image-prompt` so the model actually reads the image. ## Test plan - [ ] Attach a PNG with a prompt that asks to read text in the image. Answer uses the picture. - [ ] Thumbnail shows before send, with no filename. - [ ] Reload the conversation. The image is still on the user turn. - [ ] CSV/PDF attach still works. - [ ] Text-only prompt unchanged. - [ ] A BMP or an image over 8 MB shows an error instead of a silent failure. Reviewed-on: #129