From c1da01601383c6ead7ed1e3b84c0c1b327577415 Mon Sep 17 00:00:00 2001 From: Mason Palmer <97921708+mason-palmer@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:13:14 -0700 Subject: [PATCH] agent: Patch image format bug (#45978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #44694 Release Notes: - Fixed images being converted to png but retaining old format ## Before: Screenshot 2026-01-02 at 5 34 24 PM ## After: Screenshot 2026-01-02 at 5 34 36 PM --------- Co-authored-by: versecafe <147033096+versecafe@users.noreply.github.com> Co-authored-by: MrSubidubi --- crates/agent_ui/src/mention_set.rs | 6 ++---- crates/language_model/src/request.rs | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/agent_ui/src/mention_set.rs b/crates/agent_ui/src/mention_set.rs index 92a9751706debc03abcb819ceabc0dcb3a780e26..ef229e0bb53e91703d75c59a928e999ca6708fb7 100644 --- a/crates/agent_ui/src/mention_set.rs +++ b/crates/agent_ui/src/mention_set.rs @@ -297,14 +297,13 @@ impl MentionSet { return cx.spawn(async move |_, cx| { let image = task.await?; let image = image.update(cx, |image, _| image.image.clone()); - let format = image.format; let image = cx .update(|cx| LanguageModelImage::from_image(image, cx)) .await; if let Some(image) = image { Ok(Mention::Image(MentionImage { data: image.source, - format, + format: LanguageModelImage::FORMAT, })) } else { Err(anyhow!("Failed to convert image")) @@ -672,7 +671,6 @@ pub(crate) fn paste_images_as_context( }; let task = cx .spawn(async move |cx| { - let format = image.format; let image = cx .update(|_, cx| LanguageModelImage::from_image(image, cx)) .map_err(|e| e.to_string())? @@ -681,7 +679,7 @@ pub(crate) fn paste_images_as_context( if let Some(image) = image { Ok(Mention::Image(MentionImage { data: image.source, - format, + format: LanguageModelImage::FORMAT, })) } else { Err("Failed to convert image".into()) diff --git a/crates/language_model/src/request.rs b/crates/language_model/src/request.rs index 72dcfaf1c7b435c12bd7235f2199f51118364388..1d0b536ec43bd9e930c24e3a733448ae12a8d65b 100644 --- a/crates/language_model/src/request.rs +++ b/crates/language_model/src/request.rs @@ -92,6 +92,9 @@ const DEFAULT_IMAGE_MAX_BYTES: usize = 5 * 1024 * 1024; const MAX_IMAGE_DOWNSCALE_PASSES: usize = 8; impl LanguageModelImage { + // All language model images are encoded as PNGs. + pub const FORMAT: ImageFormat = ImageFormat::Png; + pub fn empty() -> Self { Self { source: "".into(),