aboutsummaryrefslogtreecommitdiff
path: root/src/pane/terminal.rs
AgeCommit message (Collapse)Author
2026-07-10feat: add copy mode search and tmux word motionsOgulcan Celik
refs #1230
2026-07-04fix: kitty graphics streams freeze on partial updates and leak host images ↵Gabriel
(#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-04fix: restore windows recent pane readsOgulcan Celik
refs #962
2026-07-03fix: forward page keys to primary-screen pagersOgulcan Celik
refs #953
2026-07-02fix: preserve windows backspace inputOgulcan Celik
refs #907 refs #920
2026-06-30fix: render ansi undercurl stylesOgulcan Celik
refs #895
2026-06-30fix: keep powershell panes alive after agent ctrl-cOgulcan Celik
refs #860
2026-06-25fix: answer osc 12 cursor color queriesOgulcan Celik
refs #806
2026-06-24fix: prevent release key fallback from doubling inputOgulcan Celik
refs #769
2026-06-22fix: skip wide spacer cells in pane readsOgulcan Celik
refs #698
2026-06-18feat: sync theme with host appearanceOgulcan Celik
refs #675
2026-06-12fix: stabilize windows pane cursor renderingOgulcan Celik
refs #556
2026-06-10feat: add manifest-based detection engineOgulcan Celik
2026-06-08fix: reduce scroll CPU in headless serverOgulcan Celik
refs #512
2026-06-08fix: improve windows pane behaviorOgulcan Celik
2026-06-07fix: drop empty pty mouse writesOgulcan Celik
refs #496
2026-06-07feat: add native windows beta supportOgulcan Celik
2026-06-05fix: enable grapheme clusters in panesOgulcan Celik
refs #243
2026-06-04fix: forward resize terminal responsesOgulcan Celik
refs #471
2026-06-04fix: avoid ghostty utf8 grapheme buffer crashOgulcan Celik
refs #453
2026-06-03fix: forward any-motion pane mouse eventsOgulcan Celik
refs #419
2026-06-02fix: answer xtgettcap queries in panesOgulcan Celik
refs #393
2026-06-02perf: retain terminal render updatesOgulcan Celik
2026-06-01chore: update libghostty vendorOgulcan Celik
refs #276
2026-06-01fix: answer osc 4 palette queriesOgulcan Celik
refs #387
2026-05-28fix: route terminal replies outside pane inputOgulcan Celik
refs #306
2026-05-28fix: preserve live handoff terminal stateOgulcan Celik
2026-05-24feat: persist pane history across restarts (#248)zhugehyuk
refs #217 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-22fix: answer pane default color queriesOgulcan Celik
refs #253
2026-05-20fix: support kitty unicode placeholdersOgulcan Celik
refs #136
2026-05-19fix: preserve modified enter inputOgulcan Celik
refs #168
2026-05-18fix: preserve alt backspace in panes (#165)kangal-bot
refs #155 Co-authored-by: kangal-bot <kangal-bot@users.noreply.github.com>
2026-05-17feat: add direct terminal attach streamOgulcan Celik
2026-05-15fix: forward pane cursor shapeOgulcan Celik
fixes #116
2026-05-13feat: support kitty graphics in attached clientsOgulcan Celik
2026-05-13feat: render kitty graphics in local panesOgulcan Celik
2026-05-11fix: preserve indexed terminal colorsOgulcan Celik
fixes #74
2026-05-09chore: enable clippy lintingOgulcan Celik
2026-05-09feat: add ansi pane read formatOgulcan Celik
2026-05-07fix: preserve osc8 hyperlinks in client renderingOgulcan Celik
fixes #73
2026-05-02fix: anchor ime cursor to focused pane positionOgulcan Celik
2026-04-26fix: keep pane background transparent when host color is unknownOgulcan Celik
2026-04-25test: add libghostty upgrade contract coverageOgulcan Celik
2026-04-22fix: resolve transparent bg before inverse swap to prevent invisible text (#45)Yifeng He
Shells like zsh highlight pasted text using reverse video (SGR 7). The render pipeline makes the default background transparent (None) when it matches the host terminal background. When inverse swaps fg and bg, the transparent bg becomes fg=None (Color::Reset), which the host terminal renders as its default foreground — the same hue as the new bg, making the text invisible. Resolve None to the actual terminal background color before swapping so inverse produces correct contrasting colors. Fixes ogulcancelik/herdr#44 Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-04-21perf: reduce headless server render overheadOgulcan Celik
2026-04-21fix: stop headless idle spin and skip unnecessary macos probesOgulcan Celik
2026-04-21feat: add persistent server-client sessionsCan Celik
Make herdr persistent by default. Launching herdr now starts or reattaches to a background session server. Clients can detach and reattach while panes and agent processes keep running. Session mode now supports multi-client attach, auto-detect startup, and a thin-client/headless-server split. This also refactors the large app, ui, input, pane, config, workspace, and persistence modules into smaller focused submodules, while preserving behavior and colocating tests with the code they exercise. Upgrade notes: - persistence mode is now the default - in-app quit detaches the current client instead of stopping the server - use `herdr server stop` to stop the background session - use `--no-session` for the old single-process behavior - default socket paths now live under the config directory