Commit Graph

43 Commits

Author SHA1 Message Date
Ogulcan Celik 169a4fd90c fix: answer XTWINOPS size queries in panes
refs #835
2026-07-24 02:39:51 +03:00
akbash 503613c8ec
fix: inherit host palette in pane queries (#1759)
refs #1752

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24 01:28:35 +03:00
Ogulcan Celik 1d238bc9a3 refactor: replace pane mouse and clipboard internals
replaces contributions from othavi0
2026-07-22 18:59:01 +03:00
Ogulcan Celik 8d2af4e046 perf: adopt libghostty integration improvements
refs #276
2026-07-17 03:26:33 +03:00
Ogulcan Celik 4a3302d19a chore: update vendored libghostty-vt
refs #276
2026-07-16 23:29:28 +03:00
Ogulcan Celik c8850a2e3e feat: add copy mode search and tmux word motions
refs #1230
2026-07-10 04:22:10 +03:00
Gabriel 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 5abdae1ac7 fix: restore windows recent pane reads
refs #962
2026-07-04 02:15:23 +03:00
Ogulcan Celik b7015f17a4 fix: render ansi undercurl styles
refs #895
2026-06-30 15:55:13 +03:00
Ogulcan Celik 292a98a91e fix: answer osc 12 cursor color queries
refs #806
2026-06-25 22:08:11 +03:00
Ogulcan Celik 4846cb1324 fix: skip wide spacer cells in pane reads
refs #698
2026-06-22 14:30:16 +03:00
Ogulcan Celik afc56d5668 fix: enable kitty file media
refs #732
2026-06-22 00:59:55 +03:00
Ogulcan Celik acfbb7c85a fix: enable grapheme clusters in panes
refs #243
2026-06-05 00:42:14 +03:00
Ogulcan Celik 3cbe4ec793 fix: avoid ghostty utf8 grapheme buffer crash
refs #453
2026-06-04 00:56:07 +03:00
Ogulcan Celik b695d7cbc0 fix: forward any-motion pane mouse events
refs #419
2026-06-03 02:03:44 +03:00
Ogulcan Celik 0da26639e9 test: speed up ghostty scrollback limit test 2026-06-02 23:13:08 +03:00
Ogulcan Celik cc527d45fe perf: retain terminal render updates 2026-06-02 02:31:12 +03:00
Ogulcan Celik 5bd21b7ed4 chore: update libghostty vendor
refs #276
2026-06-01 23:05:51 +03:00
Ogulcan Celik 53e4b27165 fix: answer osc 4 palette queries
refs #387
2026-06-01 18:17:11 +03:00
Ogulcan Celik bf9cc20124 fix: preserve live handoff terminal state 2026-05-28 04:12:53 +03:00
Ogulcan Celik 38a3c3c5cd fix: support kitty unicode placeholders
refs #136
2026-05-20 03:47:29 +03:00
Ogulcan Celik 73dba97521 fix: forward pane cursor shape
fixes #116
2026-05-15 20:53:55 +03:00
Ogulcan Celik 7c636e97f4 fix: refresh and reuse kitty graphics placements 2026-05-15 03:53:37 +03:00
Ogulcan Celik c542fc8717 fix: gate kitty graphics behind config 2026-05-13 18:53:53 +03:00
Ogulcan Celik 4600309051 feat: support kitty graphics in attached clients 2026-05-13 14:15:26 +03:00
Ogulcan Celik fb9aff5408 feat: render kitty graphics in local panes 2026-05-13 14:15:26 +03:00
Ogulcan Celik e201a64763 fix: preserve indexed terminal colors
fixes #74
2026-05-11 02:10:05 +03:00
Ogulcan Celik 9f210e9738 chore: enable clippy linting 2026-05-09 23:16:24 +03:00
Ogulcan Celik 3a9888cd56 feat: add ansi pane read format 2026-05-09 22:07:52 +03:00
Ogulcan Celik b0aa7b2cdd fix: preserve osc8 hyperlinks in client rendering
fixes #73
2026-05-07 21:48:50 +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 ddb3e04f92 test: add libghostty upgrade contract coverage 2026-04-25 04:16:44 +03:00
Ogulcan Celik bc410c4261 perf: reduce headless server render overhead 2026-04-21 18:00:59 +03:00
Ogulcan Celik 2ff1718213 fix: persist ghostty key encoders per pane 2026-04-07 03:23:13 +03:00
Ogulcan Celik 5e05460816 docs: clarify herdr pane split and wait output usage 2026-04-07 02:48:13 +03:00
Ogulcan Celik a51902ede9 fix: use byte-based pane scrollback limit 2026-04-07 00:04:32 +03:00
Ogulcan Celik 6ccf156a3d refactor: use libghostty-native selection text reading 2026-04-06 22:56:01 +03:00
Ogulcan Celik aea908a7cf fix: respect synchronized terminal output batches 2026-04-05 21:03:17 +03:00
Can Celik b2e6929aa8 refactor: remove vt100 backend and make ghostty default 2026-04-05 16:38:50 +03:00
Can Celik 46c6572503 fix: prevent ghostty pane redraw corruption on wide cells 2026-04-05 15:37:01 +03:00
Can Celik 8525503dba fix: match ghostty pane default colors to host terminal theme 2026-04-05 03:46:16 +03:00
Can Celik a08dfaef2f feat: forward ghostty pane focus events on focus changes 2026-04-05 02:32:00 +03:00
Can Celik 41dd733ca7 feat: finish ghostty pane backend integration 2026-04-05 01:23:06 +03:00