Release highlights: https://junegunn.github.io/fzf/releases/0.71.0/
- Added
--popupas a new name for--tmuxwith Zellij support--popupstarts fzf in a tmux popup or a Zellij floating pane--tmuxis now an alias for--popup- Requires tmux 3.3+ or Zellij 0.44+
- Cross-reload item identity with
--id-nth- Added
--id-nth=NTHto define item identity fields for cross-reload operations - When a
reloadis triggered with tracking enabled, fzf searches for the tracked item by its identity fields in the new list.--track --id-nth ..tracks by the entire line--track --id-nth 1tracks by the first field--trackwithout--id-nthretains the existing index-based tracking behavior- The UI is temporarily blocked (prompt dimmed, input disabled) until the item is found or loading completes.
- Press
EscapeorCtrl-Cto cancel the blocked state without quitting - Info line shows
+T*/+t*while searching
- Press
- With
--multi, selected items are preserved acrossreload-syncby matching their identity fields
- Added
- Performance improvements
- The search performance now scales linearly with the number of CPU cores, as we dropped static partitioning to allow better load balancing across threads.
=== query: 'linux' === [all] baseline: 21.95ms current: 17.47ms (1.26x) matches: 179966 (12.79%) [1T] baseline: 179.63ms current: 180.53ms (1.00x) matches: 179966 (12.79%) [2T] baseline: 97.38ms current: 90.05ms (1.08x) matches: 179966 (12.79%) [4T] baseline: 53.83ms current: 44.77ms (1.20x) matches: 179966 (12.79%) [8T] baseline: 41.66ms current: 22.58ms (1.84x) matches: 179966 (12.79%) - Improved the cache structure, reducing memory footprint per entry by 86x.
- With the reduced per-entry cost, the cache now has broader coverage.
- The search performance now scales linearly with the number of CPU cores, as we dropped static partitioning to allow better load balancing across threads.
- Shell integration improvements
GET /HTTP endpoint now includespositionsfield in each match entry, providing the indices of matched characters for external highlighting (#4726)- Allow adaptive height with negative value (
--height=~-HEIGHT) (#4682) - Bug fixes
--walker=followno longer follows symlinks whose target is an ancestor of the walker root, avoiding severe resource exhaustion when a symlink points outside the tree (e.g. Wine'sz:→/) (#4710)- Fixed AWK tokenizer not treating a new line character as whitespace
- Fixed
--{accept,with}-nthremoving trailing whitespaces with a non-default--delimiter - Fixed OSC8 hyperlinks being mangled when the URL contains unicode characters (#4707)
- Fixed
--with-shellnot handling quoted arguments correctly (#4709) - Fixed child processes not being terminated on Windows (#4723) (@pjeby)
- Fixed preview scrollbar not rendered after
toggle-preview - Fixed preview follow/scroll with long wrapped lines
- Fixed tab width when
--frozen-leftis used - Fixed preview mouse events being processed when no preview window exists
- zsh: Fixed history widget when
sh_globoption is on (#4714) (@EvanHahn)