Skip to content

Sync blocklist image extensions with is_binary_file#9397

Merged
zachbai merged 1 commit into
warpdotdev:masterfrom
anshul-garg27:fix/blocklist-image-extensions
May 1, 2026
Merged

Sync blocklist image extensions with is_binary_file#9397
zachbai merged 1 commit into
warpdotdev:masterfrom
anshul-garg27:fix/blocklist-image-extensions

Conversation

@anshul-garg27
Copy link
Copy Markdown
Contributor

Description

Follow-up to #9395 in a different file. While auditing image-extension lists across the repo I found a third copy in is_supported_blocklist_image_source (app/src/ai/blocklist/block/view_impl/common.rs) that suffers from the exact same drift: it only matches jpg | jpeg | png | gif | webp | svg, missing .bmp, .tiff / .tif, and .ico. So inline references to local .bmp / .tiff / .ico images in agent block output fail the support check and don't render as the inline image — they silently fall back to plain text — even though the same files do route to the system viewer once #9395 lands.

-                "jpg" | "jpeg" | "png" | "gif" | "webp" | "svg"
+                "jpg" | "jpeg" | "png" | "gif" | "bmp" | "tiff" | "tif" | "webp" | "ico" | "svg"

The full picture, for context:

Location What it does Pre-fix
crates/warp_util/src/file_type.rs (is_binary_file) Canonical binary-file extension list 9 image formats
app/src/util/openable_file_type.rs (is_supported_image_file) Routes click-to-open to FileTarget::SystemGeneric 6 formats — fixed in #9395
This PRapp/src/ai/blocklist/block/view_impl/common.rs (is_supported_blocklist_image_source) Gates inline rendering of agent block image references 6 formats
crates/warpui_core/src/platform/file_picker.rs (FileType::Image) Theme-creator file-picker filter 3 formats — left for a separate PR; the right "what should be selectable as a theme background" set is more subjective

Testing

Related

Changelog Entries for Stable

CHANGELOG-BUG-FIX: Inline .bmp, .tiff / .tif, and .ico images in agent block output now render correctly instead of falling back to plain text.

@cla-bot cla-bot Bot added the cla-signed label Apr 29, 2026
@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented Apr 29, 2026

@anshul-garg27

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I approved this pull request. No matching stakeholder was found for the changed files, so no human reviewers were requested.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR syncs the blocklist inline image support check with the common local image extensions handled elsewhere by adding bmp, tiff, tif, and ico, and adds targeted unit coverage for the accepted extensions, case-insensitivity, HTTP/HTTPS rejection, and non-image rejection.

Concerns

  • No blocking correctness or security concerns found in the changed lines.

Verdict

Found: 0 critical, 0 important, 0 suggestions

Approve

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@captainsafia
Copy link
Copy Markdown
Contributor

@zachbai Handing this over to you for review since you're list in the STAKEHOLDERS for blocklist. Feel free to delegate.

@captainsafia captainsafia requested a review from zachbai April 30, 2026 14:09
@captainsafia captainsafia added the external-contributor Indicates that a PR has been opened by someone outside the Warp team. label Apr 30, 2026 — with Warp Dev Github Integration
@anshul-garg27
Copy link
Copy Markdown
Contributor Author

Update — also confirmed locally with cargo nextest:

Starting 1 test across 1 binary (3611 tests skipped)
    PASS [0.023s] (1/1) warp ai::blocklist::block::view_impl::common::tests::is_supported_blocklist_image_source_covers_common_local_formats
────────────
     Summary [0.025s] 1 test run: 1 passed, 3611 skipped

Command: cargo nextest run --features=gui -p warp -E 'test(is_supported_blocklist_image_source_covers_common_local_formats)'

@zachbai
Copy link
Copy Markdown
Contributor

zachbai commented May 1, 2026

Thanks for the fix!

@zachbai zachbai merged commit 709fdc2 into warpdotdev:master May 1, 2026
35 checks passed
sypsyp97 added a commit to sypsyp97/warp that referenced this pull request May 2, 2026
…rpdotdev#9397)

`is_supported_blocklist_image_source` now matches the extension list in
`warp_util::file_type::is_binary_file`, so inline references to local
.bmp / .tiff / .tif / .ico images render as images instead of silently
falling back to plain text. Also adds the upstream test that locks the
behavior in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
zerx-lab pushed a commit to zerx-lab/zap that referenced this pull request May 3, 2026
## Description

Follow-up to warpdotdev#9395 in a different file. While auditing image-extension
lists across the repo I found a third copy in
`is_supported_blocklist_image_source`
(`app/src/ai/blocklist/block/view_impl/common.rs`) that suffers from the
exact same drift: it only matches `jpg | jpeg | png | gif | webp | svg`,
missing `.bmp`, `.tiff` / `.tif`, and `.ico`. So inline references to
local `.bmp` / `.tiff` / `.ico` images in agent block output fail the
support check and don't render as the inline image — they silently fall
back to plain text — even though the same files do route to the system
viewer once warpdotdev#9395 lands.

```diff
-                "jpg" | "jpeg" | "png" | "gif" | "webp" | "svg"
+                "jpg" | "jpeg" | "png" | "gif" | "bmp" | "tiff" | "tif" | "webp" | "ico" | "svg"
```

The full picture, for context:

| Location | What it does | Pre-fix |
|---|---|---|
| `crates/warp_util/src/file_type.rs` (`is_binary_file`) | Canonical
binary-file extension list | 9 image formats |
| `app/src/util/openable_file_type.rs` (`is_supported_image_file`) |
Routes click-to-open to `FileTarget::SystemGeneric` | 6 formats — fixed
in warpdotdev#9395 |
| **This PR** — `app/src/ai/blocklist/block/view_impl/common.rs`
(`is_supported_blocklist_image_source`) | Gates inline rendering of
agent block image references | 6 formats |
| `crates/warpui_core/src/platform/file_picker.rs` (`FileType::Image`) |
Theme-creator file-picker filter | 3 formats — left for a separate PR;
the right "what should be selectable as a theme background" set is more
subjective |

## Testing

- Added
`is_supported_blocklist_image_source_covers_common_local_formats` in
`common_tests.rs`. Asserts every supported extension passes (10 cases),
case-insensitivity (`PHOTO.PNG`, `scan.TIFF`), and that HTTP / HTTPS
sources and non-image extensions still return false. Fails on master for
the four new extensions, passes after the change.
- `cargo fmt -p warp -- --check` passes locally.
- Couldn't run `cargo nextest` locally because the Metal toolchain isn't
installed (same caveat as warpdotdev#9277, warpdotdev#9345, warpdotdev#9346, warpdotdev#9395) — relying on CI
for the full clippy / nextest pass.

## Related

- warpdotdev#9395 — same fix for `is_supported_image_file` (file-open routing
path).

## Changelog Entries for Stable

CHANGELOG-BUG-FIX: Inline `.bmp`, `.tiff` / `.tif`, and `.ico` images in
agent block output now render correctly instead of falling back to plain
text.

Co-authored-by: anshul-garg27 <anshul-garg27@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed external-contributor Indicates that a PR has been opened by someone outside the Warp team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants