feat(ui): show images from PR and issue bodies in kitty-graphics terminals #60
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Images in PR and issue bodies (screenshots) can't be seen in the terminal.
Idea
Render them inline, in the scrolling body, in terminals that speak the kitty graphics protocol; elsewhere show the alt text as a link (today's behavior). (PM: inline in the scrolling body, not a separate view.)
Plan (tracking issue; decided by Opus)
Kitty Unicode placeholders, so images scroll and clip like text. Delivered as:
<img>, WebP, external hosts.Open product questions are in the 🤖 comment on this ticket.
🤖 PM answered: images render inline in the scrolling body (yazi does it), not in a separate view. Still needs a spike for authenticated image URLs and scrolling. Depends on #59.
🤖 Engineering is settled (Opus; details in #65 and #66). Defaults below apply unless you say otherwise. #65 and #66 proceed now; only the final integration ticket waits on these.
🖼 altlink.set -g allow-passthrough on. Recommend: without it, silent fallback to the link; we never change tmux settings.🤖 PM answered: 1) only images on our own forge; 2) fit pane width, capped at visible height; 3) auto-detect any capable terminal if possible, else kitty and Ghostty; 4) Settings toggle 'Show images', default on; 5) tmux without allow-passthrough falls back silently; 6) link while loading or on failure, no error. On 3: the protocol query tells us a terminal speaks kitty graphics, but nothing tells us it supports the placeholder method (WezTerm answers yes to the query and lacks placeholders). So detection is automatic, but the placeholder-capable list is an allowlist (kitty, Ghostty) that grows as terminals are verified. The integration MR records these answers in docs/design.md.
🤖 #65 (merged, PR 69) and #66 (merged, PR 70) are done. The last piece is filed as #71 (Details pane integration), with acceptance criteria taken from your six answers. #60 stays open as the tracking issue until #71 merges.
🤖 done: #65 (PR 69), #66 (PR 70) and #71 (PR 78) are merged. Real-terminal check (kitty, Ghostty, tmux) is still manual.