morgmart 905c85775f feat: add image paste support to chat input (#68)
* feat: add image paste support to chat input

Users can now paste screenshots and images directly into the chat input with Cmd+V. Pasted images show as thumbnails with a click-to-expand lightbox and a hover-reveal remove button. Images are forwarded to the ACP agent as base64 content blocks alongside the text prompt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: update ChatInput tests for new images argument

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: scope object URL cleanup to unmount only

Revoke only runs on component unmount (via a ref to latest images),
not on every add/remove. Previously the effect's cleanup re-ran on
every images state change, revoking URLs that were still in use.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: render image content blocks in message timeline

Add 'image' case to renderContentBlock in MessageBubble so pasted
images appear in the chat history after sending. Base64 sources are
rendered as data: URLs; URL sources rendered directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: handle image-only sends and clean up debug logs

- Pass a single space as prompt when images are present but text is empty,
  preventing goose from rejecting empty-text ACP content blocks
- Make images in the message timeline clickable via lightbox (ClickableImage)
- Suppress Radix Dialog aria-describedby warning in ImageLightbox
- Remove temporary debug console.logs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add drag-and-drop image support to chat input

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: extract ClickableImage to fix file-size lint limit

MessageBubble.tsx was 516 lines (limit 500). Moves ClickableImage
into its own file to bring it under the limit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 17:10:09 -07:00
S
Description
an open-source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM
Apache-2.0 2 GiB
Languages
Rust 63.6%
TypeScript 29.6%
JavaScript 1.7%
Shell 1.6%
Python 1.5%
Other 1.8%