Pre-submit Checks
Describe the solution you'd like?
When clicking an image file in the File Tree (Project Explorer), open it in an Image Preview tab in the Code Editor instead of a text editor tab. The preview should behave as a lightweight photo browser.
Main view
- Fit-to-pane by default, preserving aspect ratio; no upscale beyond 100% by default.
- Cmd+= / Cmd+- / Cmd+0 for zoom in / out / reset; trackpad pinch zoom; click-and-drag pans when zoomed.
- Status footer always visible: filename, pixel dimensions, file size, format.
- Animated GIF, animated WebP, and animated AVIF auto-play and loop, with a play/pause toggle that persists across navigation.
- SVG renders as vector (re-rasterized at the current zoom level), sharp at any zoom.
- EXIF orientation honored for both the main view and thumbnails.
Thumbnail strip below the image
- Horizontal, virtualized strip listing supported images in the same directory, sorted by case-insensitive natural filename order (so
img2 precedes img10).
- Current image highlighted; strip auto-scrolls to keep it visible.
- Left and Right arrows navigate previous and next; Home and End jump to first and last; navigation stops at the ends, no wrap.
- Click swaps the preview in place (single-tab photo-browser feel); Cmd+click opens the thumbnail in a new tab.
- Thumbnails decoded on a background thread pool, cached on disk keyed by (canonical path, mtime, size, target dimension); LRU eviction with a configurable cap (proposed default 256 MB).
Supported formats: .png, .jpg, .jpeg, .gif, .webp, .svg, .heic, .heif, .bmp, .tiff, .tif, .avif, .ico. Magic-byte sniff overrides the extension when they disagree.
Reuse: the existing Agent-context image pipeline (drag-drop, paste, decode, EXIF, downscale, shipped throughout the 2025-07 and 2025-08 changelog) already does the heavy lifting. This feature is largely a new view, a thumbnail-cache layer, and a router from File Tree click to view kind.
Out of scope (explicit non-goals): terminal-grid inline rendering (#1693, #5286), editing / cropping / annotation, RAW formats (CR2, NEF, ARW, DNG), PDFs, network or remote URLs, slideshow / full-screen presentation mode, image diffs across git revisions.
Sketch of the layout:
┌─────────── Code Editor tab: "logo@2x.png" ─────────────┐
│ │
│ [ image content ] │
│ │
│ Fit 100% - + logo@2x.png 1024x1024 124 KB PNG │
├──────────────────────────────────────────────────────────┤
│ [thumb] [thumb] [THUMB*] [thumb] [thumb] [thumb] [thumb] │
└──────────────────────────────────────────────────────────┘
Is your feature request related to a problem? Please describe.
Today, clicking a .png, .jpg, .svg, .heic, or similar in the File Tree opens it as a text file in the Code Editor and shows binary bytes (or, for SVG, raw XML). To actually look at an image asset the user has to leave Warp for Finder, Files, or an external viewer, which breaks flow inside the agentic development environment Warp positions itself as.
This affects practically every front-end, mobile, design-systems, docs, and ML repo. A developer hits this within minutes of using the File Tree on any real project.
The terminal-grid image protocol path (iTerm2 / Kitty) does not solve it: that path only renders when a CLI tool emits escape sequences inside a shell, and a GUI File Tree click never goes through a shell. The "Open with" external-app route was closed as not planned in #2206. The remaining gap is an in-app preview in the Code Editor, and the Markdown viewer already establishes the precedent for a non-text view in the same tab system.
Additional context
Behavior invariants and a tech sketch are pre-drafted. I have a product.md (numbered testable behavior invariants covering format support, magic-byte routing, zoom/pan/fit math, thumbnail strip ordering and virtualization, animation, EXIF and color profiles, drag-and-drop into Agent prompts, error states, performance budget, accessibility, and tab-system integration) and a tech.md (MediaTypeRouter, ImagePreviewView, ZoomPanController, ThumbnailStripController, ThumbnailCache, settings additions, keybindings, file-touch list, testing matrix, risks around HEIC on Linux and animated AVIF). Both are ready to drop into specs/GH<issue-number>/ as soon as ready-to-spec is applied; happy to open the spec PR immediately after labeling.
Proposed performance budget. Thumbnail strip first paint under 100 ms with a cold cache for 50 images. Strip virtualized for directories with more than 500 images. Decoded full-size image memory dropped on tab close. Concurrent full-size decodes capped at one per tab. Thumbnail decode thread pool capped at min(num_cpus, 4).
Cross-platform notes.
- HEIC on Linux requires libheif. Needs a packaging and licensing note before commit.
- Color profile fidelity outside macOS documented as best-effort sRGB for v1.
- Animated AVIF may fall back to first-frame for v1 if the existing decoder lacks frame iteration; static AVIF stays in scope.
Reuse and integration.
- Decode, EXIF, downscale, color resample: existing Agent-context image pipeline.
- Tab system, drag-split-close, session restore: existing Code Editor tab controller.
- Directory change notifications: existing File Tree watcher (do not instantiate a second one).
- Drag from preview into Agent prompt: emit the same payload type as the existing Agent context attach drag; sink unchanged.
Related issues: #1693, #5286, #3953, #3035 (terminal-grid surface, different problem), #2206 (Open with, closed as not planned). Reference precedent: docs.warp.dev/terminal/more-features/markdown-viewer for a non-text view inside the Code Editor tab system.
Operating system (OS)
macOS (with Linux and Windows explicitly in scope per the proposed spec).
How important is this feature to you?
4
Pre-submit Checks
Describe the solution you'd like?
When clicking an image file in the File Tree (Project Explorer), open it in an Image Preview tab in the Code Editor instead of a text editor tab. The preview should behave as a lightweight photo browser.
Main view
Thumbnail strip below the image
img2precedesimg10).Supported formats:
.png,.jpg,.jpeg,.gif,.webp,.svg,.heic,.heif,.bmp,.tiff,.tif,.avif,.ico. Magic-byte sniff overrides the extension when they disagree.Reuse: the existing Agent-context image pipeline (drag-drop, paste, decode, EXIF, downscale, shipped throughout the 2025-07 and 2025-08 changelog) already does the heavy lifting. This feature is largely a new view, a thumbnail-cache layer, and a router from File Tree click to view kind.
Out of scope (explicit non-goals): terminal-grid inline rendering (#1693, #5286), editing / cropping / annotation, RAW formats (CR2, NEF, ARW, DNG), PDFs, network or remote URLs, slideshow / full-screen presentation mode, image diffs across git revisions.
Sketch of the layout:
Is your feature request related to a problem? Please describe.
Today, clicking a
.png,.jpg,.svg,.heic, or similar in the File Tree opens it as a text file in the Code Editor and shows binary bytes (or, for SVG, raw XML). To actually look at an image asset the user has to leave Warp for Finder, Files, or an external viewer, which breaks flow inside the agentic development environment Warp positions itself as.This affects practically every front-end, mobile, design-systems, docs, and ML repo. A developer hits this within minutes of using the File Tree on any real project.
The terminal-grid image protocol path (iTerm2 / Kitty) does not solve it: that path only renders when a CLI tool emits escape sequences inside a shell, and a GUI File Tree click never goes through a shell. The "Open with" external-app route was closed as not planned in #2206. The remaining gap is an in-app preview in the Code Editor, and the Markdown viewer already establishes the precedent for a non-text view in the same tab system.
Additional context
Behavior invariants and a tech sketch are pre-drafted. I have a
product.md(numbered testable behavior invariants covering format support, magic-byte routing, zoom/pan/fit math, thumbnail strip ordering and virtualization, animation, EXIF and color profiles, drag-and-drop into Agent prompts, error states, performance budget, accessibility, and tab-system integration) and atech.md(MediaTypeRouter, ImagePreviewView, ZoomPanController, ThumbnailStripController, ThumbnailCache, settings additions, keybindings, file-touch list, testing matrix, risks around HEIC on Linux and animated AVIF). Both are ready to drop intospecs/GH<issue-number>/as soon asready-to-specis applied; happy to open the spec PR immediately after labeling.Proposed performance budget. Thumbnail strip first paint under 100 ms with a cold cache for 50 images. Strip virtualized for directories with more than 500 images. Decoded full-size image memory dropped on tab close. Concurrent full-size decodes capped at one per tab. Thumbnail decode thread pool capped at
min(num_cpus, 4).Cross-platform notes.
Reuse and integration.
Related issues: #1693, #5286, #3953, #3035 (terminal-grid surface, different problem), #2206 (Open with, closed as not planned). Reference precedent: docs.warp.dev/terminal/more-features/markdown-viewer for a non-text view inside the Code Editor tab system.
Operating system (OS)
macOS (with Linux and Windows explicitly in scope per the proposed spec).
How important is this feature to you?
4