v0.74.4
fregante/GhostTextv0.74.4Sep 12, 2026by junegunn
Upgrading?
AI Summary
This release focuses on fixing critical parsing bugs and the `--listen` status payload, while introducing a major architectural update to the Vim plugin to make it non-blocking with floating pane support for tmux and Zellij.
Key Highlights
- Vim plugin is now non-blocking, allowing live previews to work while fzf is open.
- New floating pane layout support for tmux and Zellij, with a new `popup` configuration key.
- Fixed `--listen` status payload `progress` staying at 100% during new searches.
- Fixed escape sequence parsing leaks caused by data split across reads.
- Fixed `--tiebreak=pathname` detection when lines contain non-ASCII characters.
Breaking Changes
- Vim plugin: `fzf#run` now returns an empty list when running asynchronously; users must use `sink`, `sinklist`, or `exit` to retrieve results.
New Features
- Added `popup` as a synonym for the `tmux` layout key in Vim.
- Added key bindings for Helix editing modes in nushell (requires version 0.115.0+).
Full Release Notes
### Demo: Non-blocking fzf vim plugin on tmux floating pane
https://github.com/user-attachments/assets/77f3e303-e230-4669-ae05-08a19fa84ea3
---
- Fixed an escape sequence split across reads being parsed as a fragment, which leaked the rest into the query (#4899)
- e.g. A terminal answering the startup `DECRQM` query late left `?2004;2$y`, CTRL-UP left `5A`, and SGR mouse input left `0;1;1M`
- Fixed `--tiebreak=pathname` not detecting the last path separator when the line contains a non-ASCII character before it (#4902)
- Fixed `progress` in the `--listen` status payload staying at 100 while a new search was running, which made a snapshot with a new query and the previous result set look complete (#4903)
- It is now reset when a search starts and reaches 100 on the final result, so `progress` of 100 means the matches belong to the query reported next to them
- Fixed adaptive height not reserving a line for the divider of an inline header or footer border, so the list came up one line short for each of them (#4904)
- e.g. `seq 10 | fzf --height=~100% --list-border --header-lines=1 --header-lines-border=inline`
- Fixed fzf erasing the line the prompt was on when it exits, which made the last line of the prompt flicker in fish, bash, and nushell (#4913)
- Fixed fzf exiting with status 2 while waiting for a key, when `--listen` is used and 100+ signals interrupt the wait (#4917)
- Vim plugin
- fzf no longer blocks the editor, so live previews keep working while fzf is open
- `fzf#run` returns an empty list when it runs fzf asynchronously. Use `sink`, `sinklist`, or `exit` to get the result
- The popup layout now works under Zellij
- Added `popup` as a synonym of the `tmux` layout key
```vim
let g:fzf_layout = { 'popup': '90%,70%' }
```
- fzf now opens in a tmux or Zellij floating pane by default, so the window it was started from stays visible and can be used while fzf is running
- Requires tmux 3.7+ or Zellij 0.44+
- Set `g:fzf_layout` to pick a different layout
- fish
- Fixed custom CTRL-T command not using the prefixed target directory in some cases (#4498) (@bitraid)
- Optimized description alignment of completion items (#4910) (@bitraid)
- nushell
- Added key bindings for Helix editing modes, on nushell 0.115.0 or above (#4914) (@sim590)
- Fixed CTRL-T inserting the selected paths unquoted
- p4p3r (@P4P3R-HAK) reported the security vulnerability and suggested the fix
Related Repositories
affaan-m/ECC★ 285,717
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
react/react★ 251,622
The library for web and native user interfaces.
nodejs/node★ 122,511
Node.js JavaScript runtime ✨🐢🚀✨
Leonxlnx/taste-skill★ 100,567
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
louislam/uptime-kuma★ 92,731
A fancy self-hosted monitoring tool