Skip to content

feat: display inline images from tool results in chat buffer#221

Open
conornash wants to merge 1 commit into
dnouri:masterfrom
conornash:conornash/inline-images
Open

feat: display inline images from tool results in chat buffer#221
conornash wants to merge 1 commit into
dnouri:masterfrom
conornash:conornash/inline-images

Conversation

@conornash
Copy link
Copy Markdown
Contributor

When a tool (e.g. read) returns image content blocks alongside text, the images are now rendered inline inside the tool block overlay.

In GUI Emacs: decoded and displayed via create-image/insert-image with max-width/max-height scaling to fit the window.

In terminal Emacs: a text placeholder showing MIME type and size.

Implementation:

  • New struct slot: tool-block.image-blocks stores content for toggle
  • pi-coding-agent--mime-to-image-type: MIME string to Emacs type symbol
  • pi-coding-agent--insert-inline-image: decode + insert or placeholder
  • pi-coding-agent--insert-tool-images: iterate content, insert images
  • display-tool-end: calls insert-tool-images after text rendering
  • toggle-tool-output: re-inserts images from stored blocks after toggle

Handles: corrupt base64, unknown MIME types, empty data, vectors and lists, multiple image blocks, image-only results (no text).

12 new tests covering all paths. 942/942 full suite passes.

When a tool (e.g. read) returns image content blocks alongside text,
the images are now rendered inline inside the tool block overlay.

In GUI Emacs: decoded and displayed via create-image/insert-image with
max-width/max-height scaling to fit the window.

In terminal Emacs: a text placeholder showing MIME type and size.

Implementation:
- New struct slot: tool-block.image-blocks stores content for toggle
- pi-coding-agent--mime-to-image-type: MIME string to Emacs type symbol
- pi-coding-agent--insert-inline-image: decode + insert or placeholder
- pi-coding-agent--insert-tool-images: iterate content, insert images
- display-tool-end: calls insert-tool-images after text rendering
- toggle-tool-output: re-inserts images from stored blocks after toggle

Handles: corrupt base64, unknown MIME types, empty data, vectors and
lists, multiple image blocks, image-only results (no text).

12 new tests covering all paths. 942/942 full suite passes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant