Commit Graph

12047 Commits

Author SHA1 Message Date
Michael Grant
48658fd659 Merge branch 'master' into 4902-image-support 2026-08-17 21:39:27 +01:00
Michael Grant
1962365106 Cleanup and simplification. 2026-08-17 08:42:29 +01:00
Michael Grant
870dba6664 Fix indents. 2026-08-17 07:19:56 +01:00
Michael Grant
6ef98552da Readability and clarity. 2026-08-16 17:09:11 +01:00
Michael Grant
a4abd61663 image: add manual visual checks 2026-08-10 15:46:47 +01:00
Michael Grant
b263d13df0 image: preserve fractional cell extents 2026-08-10 15:08:26 +01:00
Michael Grant
dadc6ef69f image: select backend after terminal setup 2026-08-10 14:34:16 +01:00
Michael Grant
001b10f2b3 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.
2026-08-10 12:04:37 +01:00
Michael Grant
a5808bf868 Change some names of things for clarity. 2026-08-09 22:13:15 +01:00
Michael Grant
e97c3d697d Redraw SIXEL images before or after text depending on which was placed first in the cell. 2026-08-09 08:32:25 +01:00
Michael Grant
c6a59c29ae 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. 2026-08-08 22:35:10 +01:00
Michael Grant
0ac7289c48 Cleanup. 2026-08-08 22:16:24 +01:00
Michael Grant
7dfd835c3f Update Kitty image names 2026-08-08 10:58:15 +01:00
Michael Grant
bbcccee9fc More cleanup of "histogram" name. 2026-08-08 10:51:33 +01:00
Michael Grant
4819dc34df Shorten image and SIXEL names 2026-08-08 10:51:17 +01:00
Michael Grant
6535274d98 Avoid overflow in image cell size calculation 2026-08-08 10:34:00 +01:00
Michael Grant
9a3b71ac64 Move image cell drawing into image.c 2026-08-08 10:27:31 +01:00
Michael Grant
4c9523c814 Expose image backend flags 2026-08-08 10:22:05 +01:00
Michael Grant
7e6c49b5a5 Do not enable sync for SIXEL 2026-08-08 09:14:07 +01:00
Michael Grant
468259933f Comment sixel_from_image(). 2026-08-07 22:42:22 +01:00
Michael Grant
4380fceb2b Add comments to image functions 2026-08-07 22:16:16 +01:00
Michael Grant
08c237f0cb Preserve text behind transparent Kitty images. 2026-08-07 22:06:09 +01:00
Michael Grant
5d0d6c29b4 Revert "Clear text beneath SIXEL image placements."
This reverts commit 64cea48f91.
2026-08-07 19:14:46 +01:00
Michael Grant
64cea48f91 Clear text beneath SIXEL image placements. 2026-08-07 16:39:28 +01:00
Michael Grant
bc998ede98 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
2026-08-07 16:13:07 +01:00
Michael Grant
5c496c765a Preserve Kitty image crop width after cell rounding. 2026-08-07 16:09:00 +01:00
Michael Grant
3cd6526d46 Fix underlay bookkeeping bug. 2026-08-07 11:34:16 +01:00
Michael Grant
1dacc18ce0 Dither alpha in SIXEL output 2026-08-07 11:21:10 +01:00
tmux update bot
851c5a933d Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'
* refs/remotes/tmux-openbsd/master:
  Only unzoom in the floating-split case, modal panes take care of themselves.
2026-08-07 09:33:41 +00:00
nicm
10048f6579 Only unzoom in the floating-split case, modal panes take care of themselves. 2026-08-07 09:33:39 +00:00
Michael Grant
e3f6c1849d Revert "Clear text beneath graphical images"
This reverts commit fb589fd9f9.
2026-08-07 09:27:20 +01:00
tmux update bot
a598b2a910 Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'
* refs/remotes/tmux-openbsd/master:
  Always unzoom before splitting window, for floating panes also. We already unzoomed for tiled panes and this does the same for floating panes (until we support having them float over a zoomed pane). From Éric NICOLAS.
2026-08-07 03:40:47 +00:00
nicm
2ec1038ffd Always unzoom before splitting window, for floating panes also. We
already unzoomed for tiled panes and this does the same for floating
panes (until we support having them float over a zoomed pane). From Éric
NICOLAS.
2026-08-07 03:40:45 +00:00
Michael Grant
a8dfb979e6 Use compact image references in grid cells 2026-08-06 22:36:46 +01:00
Michael Grant
fb589fd9f9 Clear text beneath graphical images 2026-08-06 22:17:19 +01:00
Michael Grant
945152029d Pass through wrapped Kitty graphics 2026-08-06 19:08:59 +01:00
Michael Grant
8536e26517 Simplify image support terminology 2026-08-06 16:17:25 +01:00
Nicholas Marriott
cbb1da66c3 Merge pull request #5471 from mathstuf/actions-only-on-main-repo
ci: only run `lock` and `regress` workflows on the main repo
2026-08-06 15:44:32 +01:00
Ben Boeckel
35ab660042 ci: only run lock and regress workflows on the main repo
Forks are just wasting CI cycles spinning actions which are probably not
looked at. Also avoid locking issues and PRs on any forks with
upstream's policies.
2026-08-06 10:23:46 -04:00
Michael Grant
01d5c9f420 Use one image support switch 2026-08-06 14:27:33 +01:00
tmux update bot
40a485db9c Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'
* refs/remotes/tmux-openbsd/master:
  Add T key to change pane title, from Fouad Wahabi in GitHub issue 5461.
2026-08-06 11:42:00 +00:00
nicm
641e75e6e2 Add T key to change pane title, from Fouad Wahabi in GitHub issue 5461. 2026-08-06 11:41:58 +00:00
Michael Grant
a35871110f Make image types opaque 2026-08-06 12:24:10 +01:00
Michael Grant
cdff709ab3 Inline basic image fallback renderer 2026-08-06 10:25:29 +01:00
Michael Grant
2788616b6f Add bptato's test to the regression test script. 2026-08-06 09:11:45 +01:00
Michael Grant
51f1c0de51 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.
2026-08-06 00:06:59 +01:00
Michael Grant
045a25c89a 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.
2026-08-05 23:26:11 +01:00
Michael Grant
abfd8cee51 Fix SIXEL median-cut palette generation 2026-08-05 21:44:25 +01:00
Michael Grant
ccc90ea220 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 ab591ae430.
2026-08-05 21:38:28 +01:00
tmux update bot
2e394bef11 Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'
* refs/remotes/tmux-openbsd/master:
  Add a refresh-now command and change the r binding back to it in copy mode.
2026-08-05 15:40:06 +00:00