Commit Graph
16 Commits
Author SHA1 Message Date
Ogulcan Celik b44b5b1013 chore: finish repository organization migration 2026-07-30 02:45:05 +03:00
Can Celik 8afd52ae57 fix: bundle modern ConPTY on Windows (#1828)
refs #1533
refs #1644
2026-07-25 02:40:14 +03:00
Ogulcan Celik 4a3302d19a chore: update vendored libghostty-vt
refs #276
2026-07-16 23:29:28 +03:00
Ogulcan Celik 220b99a9fa fix: support custom command keybindings on windows
refs #1041
2026-07-05 20:19:13 +03:00
GabrielandCan Celik 4eceb75d8a fix: kitty graphics streams freeze on partial updates and leak host images (#948)
* fix: request a render on kitty graphics writes

pty output containing a kitty graphics sequence only scheduled the
deferred settle render. that render's wake-up notifies the render loop
only when the dirty flag was not already set, so under a continuous
stream of image updates the notify can be dropped and the pane keeps
showing an old frame until something else forces a full render.

request an immediate render like any other output. the dirty flag and
the minimum render interval still coalesce chunked writes, and the
settle render stays as a backstop.

refs #947

* fix: fingerprint kitty images exactly across retransmissions

the image fingerprint hashed only the first, middle, and last 4096
bytes of pixel data. a program that streams updates by retransmitting
one image id keeps the length and dimensions constant, so a frame whose
changed pixels all fall outside those three windows gets the same
fingerprint as the frame before it. the encoder then treats the image
as already uploaded, emits no graphics bytes, and the frame is dropped
as identical to the previous render. the pane stays stuck on the last
uploaded image until a resize resets the graphics surface.

hash the full payload instead. to keep that off the render hot path,
cache the fingerprint per image id and recompute it only when the
image's transmit time changes. libghostty-vt already refreshes the
transmit time on every transmission; vendor patch 0002 exposes it
through a new GHOSTTY_KITTY_IMAGE_DATA_TRANSMIT_TIME_NS accessor. a
static image costs one map lookup per render and a streaming image one
hash per transmitted frame.

refs #947

* fix: delete superseded host kitty images

host image ids derive from image content, so a pane image whose pixels
change maps to a new host id on every update. nothing deleted the host
image it replaced, and a streaming pane left one full-size image behind
in the host terminal per changed frame until the graphics surface was
reset. track which host image backs each pane image and delete the
replaced one once no source references it.

refs #947

* fix: prune stale kitty graphics source entries

a source entry whose pane closed or whose placement disappeared stayed
in the cache forever. through the shared-reference check it could keep
an old host image alive that nothing visible used anymore, and the
entries themselves accumulated without bound. prune sources against
the visible set at the start of every encode pass.

refs #947

* docs: link issue and upstream discussion for vendor patch 0002

the transmit time accessor now has a removal path: the ghostty
discussion proposing it upstream is linked in the patch ledger.

refs #947

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-04 02:49:15 +03:00
Ogulcan Celik a66f4c64e9 fix: force system conpty on windows
refs #761
2026-06-23 21:43:23 +03:00
Ogulcan Celik acfbb7c85a fix: enable grapheme clusters in panes
refs #243
2026-06-05 00:42:14 +03:00
Ogulcan Celik 648afa1fd5 fix: backport libghostty resize overflow fix
refs #465
2026-06-04 16:32:43 +03:00
Ogulcan Celik 5bd21b7ed4 chore: update libghostty vendor
refs #276
2026-06-01 23:05:51 +03:00
Ogulcan Celik dcfe11a758 build: update libghostty-vt vendor
vendor ghostty 063ac3e and remove the musl libc++ link workaround.

expose the new selection formatter and hyperlink uri apis for follow-up rendering work.

add manual artifact validation for static linux builds.
2026-05-07 18:29:21 +03:00
Ogulcan Celik 6ccf156a3d refactor: use libghostty-native selection text reading 2026-04-06 22:56:01 +03:00
Can Celik b2e6929aa8 refactor: remove vt100 backend and make ghostty default 2026-04-05 16:38:50 +03:00
Can Celik 26ec677193 fix: silence embedded libghostty-vt logs 2026-04-05 03:54:46 +03:00
Can Celik 41dd733ca7 feat: finish ghostty pane backend integration 2026-04-05 01:23:06 +03:00
Ogulcan Celik e857710d73 fix: align pane scrolling with tmux and ghostty 2026-03-31 23:03:11 +03:00
Ogulcan Celik 41e009f9b7 fix alt-screen scrollback handling 2026-03-31 20:49:05 +03:00