Give each Kitty I= transmission an image of its own #102

Merged
natsukium merged 1 commit from fix/image-numbers into main 2026-10-12 01:32:03 +09:00
Owner

felis took a Kitty graphics I= image number as the image id. A second transmission with the same number replaced the first, the reply never named the id, and d=n/d=N were refused.

This follows kitty (graphics.c handle_add_command, img_by_client_number, get_free_client_id, handle_delete_command; kitty_tests/graphics.py test_load_images):

  • Every I= transmission stores a new image under the lowest free id and answers i=<id>,I=<number>.
  • a=p, a=f, a=a, a=c and d=f/F by I= act on the newest image with that number, ENOENT if none; a put's reply adds the resolved i=.
  • d=n drops the newest such image's placements; d=N also frees it once unplaced.
  • d=i/d=I match i= alone.
  • Re-sending a numbered image by its i= keeps its number.
felis took a Kitty graphics `I=` image number as the image id. A second transmission with the same number replaced the first, the reply never named the id, and `d=n`/`d=N` were refused. This follows kitty (`graphics.c` `handle_add_command`, `img_by_client_number`, `get_free_client_id`, `handle_delete_command`; `kitty_tests/graphics.py` `test_load_images`): - Every `I=` transmission stores a new image under the lowest free id and answers `i=<id>,I=<number>`. - `a=p`, `a=f`, `a=a`, `a=c` and `d=f`/`F` by `I=` act on the newest image with that number, `ENOENT` if none; a put's reply adds the resolved `i=`. - `d=n` drops the newest such image's placements; `d=N` also frees it once unplaced. - `d=i`/`d=I` match `i=` alone. - Re-sending a numbered image by its `i=` keeps its number.
grid, daemon: give each Kitty I= transmission an image of its own
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 14s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m9s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Has been cancelled
fuzz / cargo fuzz smoke (per target) (pull_request) Has been cancelled
pr / nix flake check (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / cargo nextest (Windows) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
49e7ce9ea2
felis took I= as the image id, so a second transmission with the same
number replaced the first, the reply never told the producer which id
it got, and d=n/d=N were refused as unknown. kitty stores every I=
transmission as a new image under the lowest free id, answers
i=<id>,I=<number>, resolves any other command's I= to the newest image
with that number, and deletes by number with d=n/d=N; felis now does
the same. d=i/d=I match i= alone, as kitty's id filter does.

Assisted-by: Claude Code
natsukium force-pushed fix/image-numbers from 49e7ce9ea2
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 14s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m9s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Has been cancelled
fuzz / cargo fuzz smoke (per target) (pull_request) Has been cancelled
pr / nix flake check (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / cargo nextest (Windows) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
to 3a6a091765
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m8s
windows / detect relevant changes (pull_request) Successful in 8s
windows / windows docs-only no-op (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / cargo nextest (Windows) (pull_request) Successful in 4m5s
fuzz / cargo fuzz smoke (per target) (pull_request) Has been cancelled
pr / nix flake check (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
bench / Criterion regression gate (pull_request) Has been cancelled
2026-10-12 00:58:11 +09:00
Compare
natsukium force-pushed fix/image-numbers from 3a6a091765
Some checks failed
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m8s
windows / detect relevant changes (pull_request) Successful in 8s
windows / windows docs-only no-op (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / cargo nextest (Windows) (pull_request) Successful in 4m5s
fuzz / cargo fuzz smoke (per target) (pull_request) Has been cancelled
pr / nix flake check (pull_request) Has been cancelled
pr / cargo build / clippy / test / deny (pull_request) Has been cancelled
pr / wire schema is compatible with the base (pull_request) Has been cancelled
pr / frontend smoke (x86_64-linux) (pull_request) Has been cancelled
windows / cargo clippy (Windows cross) (pull_request) Has been cancelled
windows / frontend smoke (Windows) (pull_request) Has been cancelled
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been cancelled
bench / Criterion regression gate (pull_request) Has been cancelled
to 59b0a33fe6
All checks were successful
windows / detect relevant changes (pull_request) Successful in 7s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m8s
windows / cargo nextest (Windows) (pull_request) Successful in 4m12s
bench / Criterion regression gate (pull_request) Successful in 2m30s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m54s
pr / nix flake check (pull_request) Successful in 41s
windows / frontend smoke (Windows) (pull_request) Successful in 36s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m21s
pr / wire schema is compatible with the base (pull_request) Successful in 2s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 36s
windows / cargo clippy (Windows cross) (pull_request) Successful in 14s
2026-10-12 01:14:44 +09:00
Compare
natsukium deleted branch fix/image-numbers 2026-10-12 01:32:03 +09:00
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
felis-terminal/felis!102
No description provided.