Branch: refs/heads/4902-image-support
Home: https://github.com/tmux/tmux
Commit: f72e789240f1f1383a06bc680f7217879aad20ef
https://github.com/tmux/tmux/commit/f72e789240f1f1383a06bc680f7217879aad20ef
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M Makefile.am
M configure.ac
M format.c
M grid.c
M image-sixel.c
M image.c
M input.c
M options-table.c
M screen-redraw.c
M screen-write.c
M screen.c
M style.c
M tmux.h
M tty-draw.c
M tty-features.c
M tty.c
M window-copy.c
Log Message:
-----------
Initial commit. Implement generalised image support.
Commit: d601d0d8c567a30274e3efdcfcbd8d405ee2137f
https://github.com/tmux/tmux/commit/d601d0d8c567a30274e3efdcfcbd8d405ee2137f
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M screen-redraw.c
M tmux.h
M tty-draw.c
M tty-features.c
M tty.c
Log Message:
-----------
Fix image flickering.
Commit: 3e6e0a286085e0474a507e706d0a114fd513bab4
https://github.com/tmux/tmux/commit/3e6e0a286085e0474a507e706d0a114fd513bab4
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A image-ascii.c
A image-kitty.c
Log Message:
-----------
New image related files.
Commit: 80f2ab72377aeaa4ccf9e75e6562f9d1c45e8fd6
https://github.com/tmux/tmux/commit/80f2ab72377aeaa4ccf9e75e6562f9d1c45e8fd6
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A image-diacritics.h
Log Message:
-----------
Add missing .h file.
Commit: 825b2c39b8f8fb7b34a85baaf72dd4d6edbe9906
https://github.com/tmux/tmux/commit/825b2c39b8f8fb7b34a85baaf72dd4d6edbe9906
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-ascii.c
M image-kitty.c
M image-sixel.c
M image.c
Log Message:
-----------
Fix copyrights.
Commit: 0852a39e31f18a5b44224567809c6312e2420a72
https://github.com/tmux/tmux/commit/0852a39e31f18a5b44224567809c6312e2420a72
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
R image-diacritics.h
M image-kitty.c
Log Message:
-----------
Move image-diacritics.h into image-kitty.c.
Commit: 8fc9c3a5f946f2d354e25e015eb358794af2ff73
https://github.com/tmux/tmux/commit/8fc9c3a5f946f2d354e25e015eb358794af2ff73
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A regress/image-support.sh
A regress/monkey-2.sixel.txt
Log Message:
-----------
Add missing regression test files.
Commit: 5432f2ef0a42945ef66ad7209d36f3edb20e5452
https://github.com/tmux/tmux/commit/5432f2ef0a42945ef66ad7209d36f3edb20e5452
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A tools/generate-image-diacritics.sh
Log Message:
-----------
Add tool to generate the kitty diacritics directly from the public
UnicodeData.txt file.
Commit: d8da5278822783ed05635685e75b636f3877c07d
https://github.com/tmux/tmux/commit/d8da5278822783ed05635685e75b636f3877c07d
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .gitignore
M Makefile.am
M image-ascii.c
M image-kitty.c
M image-sixel.c
M image.c
M input.c
M regress/image-support.sh
M screen-redraw.c
M screen-write.c
M screen.c
M tmux.h
M tty-draw.c
M tty.c
Log Message:
-----------
Refactor to centralize image-specific rendering and lifecycle code in image.c
and the image-* backends.
Commit: 4e379f38d683eeab237bd81343b03ae445976ed4
https://github.com/tmux/tmux/commit/4e379f38d683eeab237bd81343b03ae445976ed4
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .gitignore
M Makefile.am
Log Message:
-----------
Remove local image ASCII test tool references
Commit: 4e7f3d5520fbb472f47a17fd58c5188e927f6739
https://github.com/tmux/tmux/commit/4e7f3d5520fbb472f47a17fd58c5188e927f6739
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tmux.1
M tty-features.c
Log Message:
-----------
Use sixel images for WezTerm
Enable the sixel feature when WezTerm is detected and clarify that the kitty
terminal feature requires Unicode placeholder support rather than only the
basic graphics protocol.
Commit: 52863f0fe963e23ef293cf39210d9bb5902cb991
https://github.com/tmux/tmux/commit/52863f0fe963e23ef293cf39210d9bb5902cb991
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tty.c
Log Message:
-----------
Redraw images after pixel geometry changes
A resize may temporarily leave the terminal cell pixel dimensions unknown while
tmux queries the terminal. Schedule another client redraw when the pixel
geometry response arrives so the graphical backend replaces the temporary text
fallback.
Commit: 9731adb30062fd156c1b666d166506e4f32ed5ca
https://github.com/tmux/tmux/commit/9731adb30062fd156c1b666d166506e4f32ed5ca
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Correct SIXEL HLS colour conversion
Use the DEC hue origin and channel order, and round percentage and HLS
conversions to the nearest byte value.
Commit: 643bb662a00d1a851e438776d6491e5e7abb18fc
https://github.com/tmux/tmux/commit/643bb662a00d1a851e438776d6491e5e7abb18fc
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M image.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
Preserve SIXEL pixel dimensions
Retain the padded canonical pixel canvas separately from the image content.
Scale only the populated portion of partial edge cells so an image keeps its
exact raster size on the originating terminal while retaining its cell
footprint.
Commit: 2c7a5f73c4aa3afe5ae1f0b7c42818159c554065
https://github.com/tmux/tmux/commit/2c7a5f73c4aa3afe5ae1f0b7c42818159c554065
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Improve SIXEL colour quantization
Build an adaptive 256-colour palette with median cut instead of using a fixed
colour cube. Apply Floyd-Steinberg error diffusion while mapping pixels to
reduce banding and preserve image detail.
Commit: c8fe307682a107ba96fd9f7e5781155d856cae2e
https://github.com/tmux/tmux/commit/c8fe307682a107ba96fd9f7e5781155d856cae2e
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
Support Kitty source rectangle placements
Commit: 260cde9f48c3521a04a5c5deddaa9cea79956f30
https://github.com/tmux/tmux/commit/260cde9f48c3521a04a5c5deddaa9cea79956f30
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
Log Message:
-----------
Remove obsolete Kitty diacritics comment
Commit: a4d6004d40196aceb8137ead7fb3c6e6f44b7a9d
https://github.com/tmux/tmux/commit/a4d6004d40196aceb8137ead7fb3c6e6f44b7a9d
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M image.c
Log Message:
-----------
Correct image copyrights
Commit: 5fc24e373a91f2b5acfabaf74b0ae4cca5e52ae2
https://github.com/tmux/tmux/commit/5fc24e373a91f2b5acfabaf74b0ae4cca5e52ae2
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
M screen-write.c
M tmux.h
Log Message:
-----------
Rename image damage functions to redraw
Commit: e602dfa771d36388af8ba80c408a645b8048b296
https://github.com/tmux/tmux/commit/e602dfa771d36388af8ba80c408a645b8048b296
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M image.c
M screen-write.c
M tmux.h
Log Message:
-----------
Keep SIXEL palettes across redraw spans
Commit: 52e2e2b0c05e556fbd6f24b3b3102a29675f3f33
https://github.com/tmux/tmux/commit/52e2e2b0c05e556fbd6f24b3b3102a29675f3f33
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
C=1 is parsed and stored as an image-placement flag, suppressing cursor
movement and scrolling as required by the Kitty protocol.
Commit: cc4a76d0be6b333d64812b0c4b1b1bf5cfb48544
https://github.com/tmux/tmux/commit/cc4a76d0be6b333d64812b0c4b1b1bf5cfb48544
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M regress/image-support.sh
Log Message:
-----------
Removed unconditional Floyd–Steinberg dithering from image-sixel.c:1077.
Kitty images now use the adaptive 256-colour median-cut palette with direct
nearest-colour mapping.
Commit: f81c41929bc9c9921b109bdd5539c0d0fc114d77
https://github.com/tmux/tmux/commit/f81c41929bc9c9921b109bdd5539c0d0fc114d77
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M grid.c
M regress/image-support.sh
Log Message:
-----------
Fix kitty image resize issue when the kitty image resized smaller than the
image, the image was overflowing lines and banding.
Commit: c0ab9b7b3fe778ccfbeb69001afe25797b9d3f96
https://github.com/tmux/tmux/commit/c0ab9b7b3fe778ccfbeb69001afe25797b9d3f96
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M regress/image-support.sh
Log Message:
-----------
Revert "Removed unconditional Floyd–Steinberg dithering from
image-sixel.c:1077. Kitty images now use the adaptive 256-colour median-cut
palette with direct nearest-colour mapping."
This reverts commit ab591ae4302f52f6a9775dce4965419f16dd7ea6.
Commit: 8b44703b41d88ea626b91c3c42e065ae207be08f
https://github.com/tmux/tmux/commit/8b44703b41d88ea626b91c3c42e065ae207be08f
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M regress/image-support.sh
Log Message:
-----------
Fix SIXEL median-cut palette generation
Commit: d674f34f253583a6fa91579993d6f41738cc5006
https://github.com/tmux/tmux/commit/d674f34f253583a6fa91579993d6f41738cc5006
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image.c
M input.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
Support Kitty Unicode placeholder image transmission
- Parse Kitty graphics commands wrapped in tmux passthrough sequences.
- Accept unpadded base64 payloads emitted by icat.
- Handle chunked transfers whose final chunk omits m.
- Track virtual image placements.
- Convert Unicode placeholders into shared image cells for Kitty and SIXEL
clients.
- Add regression coverage for wrapped, chunked, unpadded input.
Commit: 75b606c3df81a458051879d683fb32fe37ac008f
https://github.com/tmux/tmux/commit/75b606c3df81a458051879d683fb32fe37ac008f
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M input.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
The two Chawan symptoms now have matching fixes:
- Layout corruption: C=1 is respected.
- Lingering remnants: tmux now tracks Kitty’s (image ID, placement ID)
identity, replaces moved placements, and honors
placement-specific d=i,...,p=... deletion.
Commit: 674cdd94f58a83d99e5d21116f5e483bb49bc4f6
https://github.com/tmux/tmux/commit/674cdd94f58a83d99e5d21116f5e483bb49bc4f6
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M regress/image-support.sh
Log Message:
-----------
Add bptato's test to the regression test script.
Commit: 7d2d187db4990a93e057fee0f7704e3b99f7036e
https://github.com/tmux/tmux/commit/7d2d187db4990a93e057fee0f7704e3b99f7036e
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M Makefile.am
R image-ascii.c
M image.c
M tmux.h
M tty-draw.c
M tty.c
Log Message:
-----------
Inline basic image fallback renderer
Commit: 596de59d118bfa421f9c0e1814b8675fb09bcee2
https://github.com/tmux/tmux/commit/596de59d118bfa421f9c0e1814b8675fb09bcee2
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image-sixel.c
M image.c
M input.c
M screen-write.c
M tmux.h
Log Message:
-----------
Make image types opaque
Commit: 0b2739c62c520a48d6d821203f60bae21092e7ab
https://github.com/tmux/tmux/commit/0b2739c62c520a48d6d821203f60bae21092e7ab
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M configure.ac
M input.c
M screen-write.c
M tmux.h
Log Message:
-----------
Use one image support switch
Commit: 95b6adbd61ec37f064beffcf85457cdae8d7db08
https://github.com/tmux/tmux/commit/95b6adbd61ec37f064beffcf85457cdae8d7db08
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M configure.ac
M image-sixel.c
M image.c
Log Message:
-----------
Simplify image support terminology
Commit: 628acfd802ba2422c98a343ff96587fee75489b9
https://github.com/tmux/tmux/commit/628acfd802ba2422c98a343ff96587fee75489b9
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M input.c
M regress/image-support.sh
Log Message:
-----------
Pass through wrapped Kitty graphics
Commit: ba2dc2cfb6f5c716e2670be84e815959079b7062
https://github.com/tmux/tmux/commit/ba2dc2cfb6f5c716e2670be84e815959079b7062
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tty-draw.c
Log Message:
-----------
Clear text beneath graphical images
Commit: fb931f167619ce6c79380bdfa28c1b35860f7af9
https://github.com/tmux/tmux/commit/fb931f167619ce6c79380bdfa28c1b35860f7af9
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M grid.c
M image.c
M tmux.h
Log Message:
-----------
Use compact image references in grid cells
Commit: 002d38cb6b1bc6838389bbad24d791c1b119e11c
https://github.com/tmux/tmux/commit/002d38cb6b1bc6838389bbad24d791c1b119e11c
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tty-draw.c
Log Message:
-----------
Revert "Clear text beneath graphical images"
This reverts commit fb589fd9f92d23e97dbaf59149b0a41d7862c78c.
Commit: b6c709307ee363e259300a04c50af6fea0abdf4d
https://github.com/tmux/tmux/commit/b6c709307ee363e259300a04c50af6fea0abdf4d
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Dither alpha in SIXEL output
Commit: 3442c1f26f3113a3df29da871e7ec1bc2a4945cf
https://github.com/tmux/tmux/commit/3442c1f26f3113a3df29da871e7ec1bc2a4945cf
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
M regress/image-support.sh
M tty-draw.c
Log Message:
-----------
Fix underlay bookkeeping bug.
Commit: ae0fa8068c3d729531dd53a15ed721ea0894bc8c
https://github.com/tmux/tmux/commit/ae0fa8068c3d729531dd53a15ed721ea0894bc8c
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
Log Message:
-----------
Preserve Kitty image crop width after cell rounding.
Commit: 69ee9cf7f4b8bdb984eca8b52dafa15af8cd6a3c
https://github.com/tmux/tmux/commit/69ee9cf7f4b8bdb984eca8b52dafa15af8cd6a3c
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M grid.c
M regress/image-support.sh
M screen-write.c
Log Message:
-----------
Ordinary text writes replaced the entire grid cell, dropping GRID_FLAG_IMAGE
and releasing the
mage reference. Deferred pane redraws explain the intermittent “image never
appears” behavior.
Fixed:
- Preserves image metadata while updating the text underlay in the collected
ASCII path: grid.c:779
- Handles the single-cell/non-ASCII path and schedules an image redraw:
screen-write.c:2631
- Uses the requested if/else for new_id.
- Adds a deterministic regression reproducing point (2):
regress/image-support.sh:240
This matches Kitty’s requirement that normal text operations must not affect
graphics; graphics require
explicit deletion. Kitty graphics protocol
Commit: e5bcf59768bc029293a7068b738b574ff017404f
https://github.com/tmux/tmux/commit/e5bcf59768bc029293a7068b738b574ff017404f
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Clear text beneath SIXEL image placements.
Commit: 2603f84b0a26acd4f68889b54c65d0581f255d54
https://github.com/tmux/tmux/commit/2603f84b0a26acd4f68889b54c65d0581f255d54
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Revert "Clear text beneath SIXEL image placements."
This reverts commit 64cea48f915df041503281046ed15638aafa1142.
Commit: 03efb5e293808ebae346cfc2bb99555592b5ac25
https://github.com/tmux/tmux/commit/03efb5e293808ebae346cfc2bb99555592b5ac25
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image.c
M screen-redraw.c
M tmux.h
Log Message:
-----------
Preserve text behind transparent Kitty images.
Commit: d53f8eff9e53a3b7584e38a73938f55e5c0c25cc
https://github.com/tmux/tmux/commit/d53f8eff9e53a3b7584e38a73938f55e5c0c25cc
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image-sixel.c
M image.c
M tty-term.c
Log Message:
-----------
Add comments to image functions
Commit: 04644c726741ed92aa8a4282eea4cd78ad7ea77f
https://github.com/tmux/tmux/commit/04644c726741ed92aa8a4282eea4cd78ad7ea77f
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Comment sixel_from_image().
Commit: db7ec915eaa6a5c994cdbe1250b7ff467d3f6f43
https://github.com/tmux/tmux/commit/db7ec915eaa6a5c994cdbe1250b7ff467d3f6f43
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tty-features.c
Log Message:
-----------
Do not enable sync for SIXEL
Commit: 5c9ae058bfd10eb053fc2368428a07109b59583a
https://github.com/tmux/tmux/commit/5c9ae058bfd10eb053fc2368428a07109b59583a
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
M tmux.h
M tty-draw.c
M tty.c
Log Message:
-----------
Expose image backend flags
Commit: 37b71800b59a34a23983dc8a01c524f90f92998e
https://github.com/tmux/tmux/commit/37b71800b59a34a23983dc8a01c524f90f92998e
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
M tmux.h
M tty-draw.c
M tty.c
Log Message:
-----------
Move image cell drawing into image.c
Commit: 48b6641d97209bb1cc3eb39c2790e631daf570d3
https://github.com/tmux/tmux/commit/48b6641d97209bb1cc3eb39c2790e631daf570d3
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
Log Message:
-----------
Avoid overflow in image cell size calculation
Commit: 89a7dcc8ab0878336f319f4c69f97d2a0b7461f5
https://github.com/tmux/tmux/commit/89a7dcc8ab0878336f319f4c69f97d2a0b7461f5
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M image.c
M tmux.h
Log Message:
-----------
Shorten image and SIXEL names
Commit: c1cab6ea34ecb2d76265782406dcb326cedc7947
https://github.com/tmux/tmux/commit/c1cab6ea34ecb2d76265782406dcb326cedc7947
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
More cleanup of "histogram" name.
Commit: b89f8b062473846e2b6e70e2783996640e82dd7c
https://github.com/tmux/tmux/commit/b89f8b062473846e2b6e70e2783996640e82dd7c
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image.c
M tmux.h
Log Message:
-----------
Update Kitty image names
Commit: ed63826b151e40c718c8833b97c090d70a5b77f6
https://github.com/tmux/tmux/commit/ed63826b151e40c718c8833b97c090d70a5b77f6
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M input.c
Log Message:
-----------
Cleanup.
Commit: 54d3f77c2c938ec0a63e7f40b1563d91a1829f49
https://github.com/tmux/tmux/commit/54d3f77c2c938ec0a63e7f40b1563d91a1829f49
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M grid.c
M image.c
M screen-write.c
M tmux.h
Log Message:
-----------
The implementation now distinguishes a newly placed image cell from one later
overwritten by text. On a SIXEL terminal, damaged cells are omitted from image
output; on Kitty they remain ordinary positional placements.
Commit: b6dbf10057236eb8bb840fe1f879b496181cf978
https://github.com/tmux/tmux/commit/b6dbf10057236eb8bb840fe1f879b496181cf978
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
M image.c
M input.c
M resize.c
M screen-redraw.c
M tmux.h
M tty-keys.c
Log Message:
-----------
Redraw SIXEL images before or after text depending on which was placed first
in the cell.
Commit: cf80845be7426486767f4c8934ad4aa115bca5f9
https://github.com/tmux/tmux/commit/cf80845be7426486767f4c8934ad4aa115bca5f9
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image-sixel.c
M image.c
M tmux.h
Log Message:
-----------
Change some names of things for clarity.
Commit: 047308b156190ac037339e29a018ed814b770832
https://github.com/tmux/tmux/commit/047308b156190ac037339e29a018ed814b770832
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M grid.c
M image-kitty.c
M image-sixel.c
M image.c
M input.c
M regress/image-support.sh
M screen-redraw.c
M screen-write.c
M style.c
M tmux.h
M tty-draw.c
M tty.c
M window-copy.c
Log Message:
-----------
image: retain ordered placements in the grid
Replace the per-cell image marker with sparse placement spans attached to
grid lines. A placement owns all of its spans and records the input
protocol, application image and placement IDs, z-index, and creation order.
This retains overlapping image layers without storing a list in every grid
cell. Grid operations move, split, clip, and remove only the affected spans.
Use the input protocol to determine image/text interaction: later text
damages SIXEL spans, while Kitty placements remain and are ordered by their
z-index. Rendering then adapts that one logical scene for each client,
rather than changing its semantics according to whether the outer terminal
uses Kitty or SIXEL.
Commit: c97ceaffe89b9f9a6fba4efbdb71cd144a8ec4c6
https://github.com/tmux/tmux/commit/c97ceaffe89b9f9a6fba4efbdb71cd144a8ec4c6
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M tty.c
Log Message:
-----------
image: select backend after terminal setup
Commit: c2426fcf083ff8d160bc8f81eadabc7a40f96c34
https://github.com/tmux/tmux/commit/c2426fcf083ff8d160bc8f81eadabc7a40f96c34
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image-sixel.c
M image.c
M regress/image-support.sh
M tmux.h
Log Message:
-----------
image: preserve fractional cell extents
Commit: 4c3983e286a4484eb13a50c3948492f9ae0958ba
https://github.com/tmux/tmux/commit/4c3983e286a4484eb13a50c3948492f9ae0958ba
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A tools/image-edge-test.sh
A tools/image-visual-test.sh
Log Message:
-----------
image: add manual visual checks
Commit: 40cd869d770732fb4f7aad705360600ae6dc9b43
https://github.com/tmux/tmux/commit/40cd869d770732fb4f7aad705360600ae6dc9b43
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
Readability and clarity.
Commit: 45f32d71efd9fa407ff2f81fb0fdf5c27cca6a75
https://github.com/tmux/tmux/commit/45f32d71efd9fa407ff2f81fb0fdf5c27cca6a75
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
Log Message:
-----------
Fix indents.
Commit: c0e38f3748b2162aaa8722d3e55f32f5175a64be
https://github.com/tmux/tmux/commit/c0e38f3748b2162aaa8722d3e55f32f5175a64be
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-kitty.c
M image-sixel.c
M image.c
M tmux.h
Log Message:
-----------
Cleanup and simplification.
Commit: b094564203899688004f7bb1ae81505c0de3f40c
https://github.com/tmux/tmux/commit/b094564203899688004f7bb1ae81505c0de3f40c
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M configure.ac
Log Message:
-----------
build: rename image support option
Commit: a80e2d1af7a49af2767e76467764bf3fdb7de659
https://github.com/tmux/tmux/commit/a80e2d1af7a49af2767e76467764bf3fdb7de659
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image-sixel.c
Log Message:
-----------
sixel: preserve image aspect across client geometries
Scale SIXEL rasters uniformly when clients have different cell dimensions,
while retaining the original logical cell canvas as blank padding.
Map crops using real cell boundaries so partial final cells are not stretched
or compressed.
Commit: 56e9ca2dbefabe648037ab469462fde617858be0
https://github.com/tmux/tmux/commit/56e9ca2dbefabe648037ab469462fde617858be0
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A regress/image-floating-content-wipe.sh
M screen-redraw.c
Log Message:
-----------
screen-redraw: erase only cells a pane owns, not its raw rectangle
image_redraw_start() was called with a pane's full nominal geometry
rather than the cells it actually owns in the current scene. When a
floating pane occluded part of that rectangle, the erase blanked the
floating pane's on-screen content, and the following text redraw
correctly skipped those cells (not owned by this pane), leaving them
blank with nothing to restore them.
Commit: f42cc5d95612d6f15f78809e5c73a66a2a9a5f42
https://github.com/tmux/tmux/commit/f42cc5d95612d6f15f78809e5c73a66a2a9a5f42
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M regress/image-support.sh
Log Message:
-----------
regress: fix contradictory terminal-features assertions in image-support.sh
Three adjacent blocks shared one 'set -as terminal-features' setting
with contradictory requirements - fallback text, then real SIXEL, then
fallback text again in a single client attach. terminal-features is
only detected at client attach, not live, so this needs detach/reattach
between blocks rather than toggling the option in place.
Commit: e63e4fe0d068e6ef0eca493a594b8f971390eed2
https://github.com/tmux/tmux/commit/e63e4fe0d068e6ef0eca493a594b8f971390eed2
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A regress/image-border-status-wipe.sh
Log Message:
-----------
regress: add failing test for border-status redraw bug
window_make_pane_status() gates physical redraw of border-status text on
a logical content diff, not physical damage - if something else disturbs
those cells, the text stays blank because tmux believes nothing changed.
This test currently fails and is expected to keep failing until the
general damage-tracking redraw work lands (see IMAGE-REDRAW-PLAN.md).
Commit: ebb44d47157363a113fa437e2c0e0eaf25de610d
https://github.com/tmux/tmux/commit/ebb44d47157363a113fa437e2c0e0eaf25de610d
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
Log Message:
-----------
image: report damage narrowly instead of flagging the whole pane for redraw
image_redraw_area() used to unconditionally flag the whole pane
(PANE_REDRAW) whenever any part of it needed an image recomposited - a
pane can be much taller than the area actually disturbed (a small scroll
region, or a single line insert/delete far from where an image sits), so
this erased and retransmitted every image anywhere in the pane regardless
of proximity to the affected area. Report damage for just the area via
redraw_damage_window() instead.
image_redraw_scroll() similarly now scopes to the current scroll region
rather than redrawing the whole pane via image_redraw_all().
Commit: e40ef98b1ea8b8bfd7152cb55b20cfffc539ec46
https://github.com/tmux/tmux/commit/e40ef98b1ea8b8bfd7152cb55b20cfffc539ec46
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
A regress/image-resize-width-recovery.sh
M tmux.h
M window.c
Log Message:
-----------
image: extend existing placements when a pane grows wider
image_write() only ever creates spans for as much of an image as fit in
the pane at the time it was placed - the rest of the image's pixels are
still retained (struct image is immutable and kept for as long as any
placement references it), but nothing revisited that clipping decision,
so a pane that was too narrow when an image was displayed stayed clipped
forever, even after growing wide enough to fit the rest. Unlike height,
which recovers via ordinary scrollback, there is no equivalent "scroll
right" - this is the only way the extra width is ever recovered.
image_grid_resize_width() finds every placement referenced in a grid's
rows, works out how far its spans already reach and its origin column,
and extends them (via a new image_extend_row(), factored out of
image_write()'s own span-building loop) up to whichever is smaller: the
image's own full width or the new pane width. window_pane_resize() calls
it after a pane grows wider.
Commit: 4e2abff2d67d229c9ef4778924fed3f79b325274
https://github.com/tmux/tmux/commit/4e2abff2d67d229c9ef4778924fed3f79b325274
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
A regress/image-selection-noflash.sh
M window-copy.c
Log Message:
-----------
window-copy: avoid erasing and needlessly re-flashing images during copy-mode
redraws
window_copy_write_one() used to write text/highlight styling directly
over image-covered cells via the normal path, which - since a character
write typically clears whatever pixel content a terminal was showing
there - erased the image with nothing to redraw it back in. Image-covered
cells now bypass styling and go straight into the grid instead (a
non-graphical client's ASCII fallback for the image still depends on this
same write, so it can't just be skipped).
window_copy_write_line()'s call to image_redraw_area() used to fire
unconditionally on every redraw, needlessly recompositing (and briefly
flashing) the image on every single cursor step even after the erasure
above was fixed, even though nothing about the image had changed. It now
only fires when window_copy_update_image_refresh() (new) determines the
view's underlying history position actually moved since the last redraw.
Also adds window_copy_visible_has_images(), used by a later commit's
scroll-region fix as a bypass to a full redraw when the visible range
carries image data - line insert/delete only shifts character cells, not
already-sent image pixels, so scroll's normal fast path leaves stale or
missing image content behind.
Commit: 2a535f7d82bccc16121eb0b2df547dcb152ceee0
https://github.com/tmux/tmux/commit/2a535f7d82bccc16121eb0b2df547dcb152ceee0
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M image.c
A regress/image-scroll-off-recovery.sh
Log Message:
-----------
image: keep the scrolled-off portion of a placement instead of discarding it
image_write() handles an image taller than the pane by scrolling the
screen up to make room, but only ever created spans for the rows that
ended up on screen afterwards - the rows immediately scrolled off (up to
origin_y of them) were pushed into history as blank, spanless rows and
that part of the image was permanently discarded. Unlike width, which has
no "scroll right" to recover a permanent clip, height already has
ordinary scrollback, so this was pure waste: scrolling back up just
showed empty space where part of the image used to be.
image_write() now also calls image_extend_row() for those origin_y rows,
capped to however many real history rows screen_write_scrollup() actually
created (it clamps its own request to one scroll-region height per call,
so a single call may not push everywhere origin_y implies - looping it
until the full amount is pushed, done here too, makes that gap rare, but
the cap keeps the fill-in safe even if it isn't).
Commit: 87400d67b0fc6a28eedad2ef28e237aa19c9a746
https://github.com/tmux/tmux/commit/87400d67b0fc6a28eedad2ef28e237aa19c9a746
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M Makefile.am
A image-fallback.c
M image.c
M tmux.1
M tmux.h
M tty-acs.c
M tty-features.c
Log Message:
-----------
Improve image fallback rendering
Commit: 84a2ccdbcb6bf95117eacd4b4343bbaf2a97d0dc
https://github.com/tmux/tmux/commit/84a2ccdbcb6bf95117eacd4b4343bbaf2a97d0dc
Author: Michael Grant <[email protected]>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M configure.ac
Log Message:
-----------
build: warn that --enable-sixel is deprecated
Compare: https://github.com/tmux/tmux/compare/67f671b345f1...84a2ccdbcb6b
To unsubscribe from these emails, change your notification settings at
https://github.com/tmux/tmux/settings/notifications
--
You received this message because you are subscribed to the Google Groups
"tmux-git" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion, visit
https://groups.google.com/d/msgid/tmux-git/tmux/tmux/push/refs/heads/4902-image-support/67f671-84a2cc%40github.com.