Skip to content

Kitty graphics: app-placed images grey — 45MB frames dropped by 32MB cap, small images silently not painted #3946

Description

@milimat0810

Summary

Images placed by a TUI app (opencode) render as grey boxes in herdr panes, while the same files render fine in bare Ghostty. There are two distinct failure modes:

  1. Large images: frame dropped by the 32MB cap. opencode's fullscreen viewer transmits ~45MB per frame; herdr logs dropping oversized graphics payload ... graphics_bytes=45360361 max=33554432 and the image never reaches the host terminal. This retried ~15x/sec (114 drops in ~7 min), so the viewer just sits grey.
  2. Small images: silently not painted. A 2KB 400x300 PNG opened fullscreen in the same viewer produces no dropping oversized line and no other WARN/ERROR/GRAPHICS line at all — yet stays grey.

Environment

  • herdr 0.8.2, stable channel, server + client same version
  • macOS, Ghostty outer terminal (Kitty-graphics capable)
  • ~/.config/herdr/config.toml contains [experimental] kitty_graphics = true; server fully restarted (herdr server stop + start) after setting it
  • Plain herdr pane: chafa -f kitty <file> renders fine, so the flag is active and dumb-blast transport works
  • Same opencode build + same files in bare Ghostty (no herdr): fullscreen viewer renders correctly

Repro

  1. Enable [experimental] kitty_graphics = true, restart the herdr server.
  2. In a herdr pane, run opencode, attach any PNG, open it fullscreen.
  3. 4K image: grey box; ~/.config/herdr/herdr-server.log fills with herdr::server::headless: dropping oversized graphics payload for client frame ... graphics_bytes=45360361 max=33554432.
  4. 2KB image: grey box; no related log output whatsoever.

Notes / suspected causes

Expected

  • Don't silently drop: chunk oversized graphics across frames (the kitty_graphics.rs continuation machinery suggests this was anticipated), or at minimum surface a visible "image too large" state instead of grey.
  • Small forwarded placements should paint (same as shell-pane icat path).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkitty-protocolKitty keyboard or graphics protocol behaviormacosaffects macOS-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionp2valid narrow or ordinary defect with limited impact or a practical workaroundrenderingterminal emulation, reflow, layout, graphics, or output rendering

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions