- Create custom search engines via Lua API for plugins to serve as search view file list sources
- Add optional `for` field to key bindings to specify platform applicability
- Allow selecting multiple files in `fzf` with selection synchronized in Yazi
- View, navigate, and deselect file selection list from Yazi within `fzf`
- Support running Yazi directly in Helix with `:insert-output` without Zellij or tmux
- Add new `arrow prev` and `arrow next` commands for wraparound navigation
- Add new `follow` command to follow files pointed to by symlinks
- Allow initializing input when opening it with commands like `rename`, `create`, `find`, `filter`
- Add `<C-A>` and `<C-E>` keybindings to select entire line in input component
- Export terminal emulator information via `rt.term`
- Enable wraparound navigation by default
- Replace `tasks_show` and `close_input` with `tasks:show` and `input:close`
- Convert `frag`, `name`, `stem`, `ext`, and `parent` on Url, `name` on tab::Tab, and `is_hovered` on fs::File to properties
- Swap default key bindings for `z` (zoxide) and `Z` (fzf)
- Use new `@sync peek` annotation instead of previewer's `sync = true`
- Switch SVG preview backend from ImageMagick to resvg with new `svg` previewer
- Rewrite configuration parser to double startup speed
- Significantly improve performance of AVIF, HEIF, and JPEG XL previews
- Compile and cache Lua bytecode to enhance plugin system performance
- `ui.Padding` and `ui.Rect:padding()` are deprecated
Breaking Changes
- Supported wraparound navigation and enabled it by default. https://github.com/sxyazi/yazi/pull/2485
- Replaced
tasks_showandclose_inputwithtasks:showandinput:close. https://github.com/sxyazi/yazi/pull/2530 frag,name,stem,ext, andparentonUrl,nameontab::Tab, andis_hoveredonfs::Fileare now properties. https://github.com/sxyazi/yazi/pull/2572- Swapped the default key bindings for
z(zoxide) andZ(fzf). https://github.com/sxyazi/yazi/issues/2546 - Used the new
@sync peekannotation instead of the previewer'ssync = true. https://github.com/sxyazi/yazi/pull/2487
Deprecated
ui.Paddingandui.Rect:padding()are deprecated. https://github.com/sxyazi/yazi/pull/2574
Packaging
- SVG preview backend switched from ImageMagick to
resvgand implemented as a newsvgpreviewer. https://github.com/sxyazi/yazi/pull/2533, https://github.com/sxyazi/yazi/pull/2581
Custom Search Engine Lua API
With https://github.com/sxyazi/yazi/pull/2452, you can create custom search engines via the Lua API, meaning that plugins can serve as the source for search view file lists.
A new plugin vcs-files.yazi is available to display the list of files changed in Git within Yazi:
https://github.com/user-attachments/assets/ca6f7d55-002b-4933-b8e8-41f335b96a2b
Platform-Specific Key Binding
https://github.com/sxyazi/yazi/pull/2526 adds a new optional for field to key bindings to specify the platform the key binding applies to.
For example:
{ on = [ 'g', 'd' ], run = 'cd ~/dev', desc = 'Go dev', for = 'unix' },
{ on = [ 'g', 'd' ], run = 'cd C:\dev', desc = 'Go C:\dev', for = 'windows' },
Performance Improvements
This version brings several performance enhancements:
- Configuration parser has been rewritten to double the startup speed. https://github.com/sxyazi/yazi/pull/2508
- AVIF, HEIF, and JPEG XL previews have seen significant performance improvements. https://github.com/sxyazi/yazi/pull/2533, thanks @ze0987
- Compiled and cached the Lua bytecode to enhance the overall performance of the plugin system. https://github.com/sxyazi/yazi/pull/2490
Enhance fzf Integration
Now, you can select multiple files in fzf, and the selected files will also be selected in Yazi.
Also, you can now view, navigate, and deselect the file selection list from Yazi within fzf.
https://github.com/user-attachments/assets/f7b175a3-fa73-4128-8239-f90e45f13ab3
See https://github.com/sxyazi/yazi/issues/2546 for more details.
Use Yazi File Manager Directly in Helix, Without Zellij or tmux
https://github.com/sxyazi/yazi/pull/2461 adapted Yazi to support Helix's :insert-output, which means you can now run Yazi directly within Helix – it even supports image and video previews!
https://github.com/user-attachments/assets/9dbf7aca-fc4e-4f9e-b554-70cadedf0484
New prev and next Arguments to arrow for Wraparound Navigation
Circular navigation is one of the long-requested features, and is now supported via the new arrow prev and arrow next commands in https://github.com/sxyazi/yazi/pull/2485.
New follow Command to Follow Files Pointed to by Symlinks
https://github.com/sxyazi/yazi/pull/2543 adds support for following files pointed to by symlinks.
A new key binding, g => f (follow hovered symlink), has been added to use this feature.
Allow Initializing Input When Opening It with Commands Like rename, create, find, filter, etc.
With https://github.com/sxyazi/yazi/pull/2578, you can now customize the input box opened by commands such as create, rename, cd, filter, find, search, and shell. For example:
{ on = "r", run = [ "rename", "input:escape" ] }
This will open the rename input box and exit insert mode, meaning that the default state will be normal mode.
What's Changed
- feat: new
<C-A>and<C-E>keybindings to select entire line for the input component by @sxyazi in https://github.com/sxyazi/yazi/pull/2439 - fix: reserve a hack for Zellij to force an image adapter by @sxyazi in https://github.com/sxyazi/yazi/pull/2441
- feat: new
rt.termexports terminal emulator information by @sxyazi in https://github.com/sxyazi/yazi/pull/2442 - fix: always show the size in the status bar even in empty directories by @sxyazi in https://github.com/sxyazi/yazi/pull/2449
- feat: allow
tab_swapto cycle tabs by @sxyazi in https://github.com/sxyazi/yazi/pull/2456 - feat: support using Yazi in Helix directly without Zellij or tmux by @sxyazi in https://github.com/sxyazi/yazi/pull/2461
- refactor: prefer
WriteConsoleWfor Windows console output by @sxyazi in https://github.com/sxyazi/yazi/pull/2464 - ci: add label only if not removed manually by @sxyazi in https://github.com/sxyazi/yazi/pull/2470
- fix: force ANSI for keyboard progressive enhancement on Windows by @sxyazi in https://github.com/sxyazi/yazi/pull/2474
- feat: new
fs.expand_urlAPI by @sxyazi in https://github.com/sxyazi/yazi/pull/2476 - feat!: file navigation wraparound with new
arrow prevandarrow nextcommands by @sxyazi in https://github.com/sxyazi/yazi/pull/2485 - feat!: new
@sync peekannotation for sync previewers by @sxyazi in https://github.com/sxyazi/yazi/pull/2487 - perf: lazy compile and cache lua plugins as binary bytecode by @sxyazi in https://github.com/sxyazi/yazi/pull/2490
- feat: new
basefield for theUrluserdata by @sxyazi in https://github.com/sxyazi/yazi/pull/2492 - feat: allow repositioning the cursor in the
renameDDS event by @sxyazi in https://github.com/sxyazi/yazi/pull/2521 - feat: new
symlink_targetto style the target of symbolic links by @sxyazi in https://github.com/sxyazi/yazi/pull/2522 - feat: platform-specific key binding by @sxyazi in https://github.com/sxyazi/yazi/pull/2526
- feat: show error message when directory fails to load by @sxyazi in https://github.com/sxyazi/yazi/pull/2527
- feat: allow bulk renaming to include trailing content in addition to the required new names by @MikuGeek in https://github.com/sxyazi/yazi/pull/2494
- refactor!: remove unnecessary
tasks_showandclose_inputcommands by @sxyazi in https://github.com/sxyazi/yazi/pull/2530 - perf!: faster image preview with optimized
magickarguments by @ze0987 in https://github.com/sxyazi/yazi/pull/2533 - feat!: support
arrow prevandarrow nextfor more components by @XOR-op in https://github.com/sxyazi/yazi/pull/2540 - feat: clear terminal before displaying EXIF data by @Integral-Tech in https://github.com/sxyazi/yazi/pull/2541
- feat: new
followcommand to follow files pointed to by symlinks by @sxyazi in https://github.com/sxyazi/yazi/pull/2543 - fix: always check whether the cursor exceeds the upper bound to guard against unexpected values by @sxyazi in https://github.com/sxyazi/yazi/pull/2551
- feat!: enhance
fzfintegration by @sxyazi in https://github.com/sxyazi/yazi/pull/2553 - feat: support Warp terminal image preview by @sxyazi in https://github.com/sxyazi/yazi/pull/2571
- feat: allow initializing input when opening it with commands like
rename,create,find,filter, etc. by @sxyazi in https://github.com/sxyazi/yazi/pull/2578 - fix: ignore XQuartz
$DISPLAYvariable by @sxyazi in https://github.com/sxyazi/yazi/pull/2586 - fix: don't fail on videos with embedded images by @ze0987 in https://github.com/sxyazi/yazi/pull/2590
New Contributors
- @MikuGeek made their first contribution in https://github.com/sxyazi/yazi/pull/2494
- @ze0987 made their first contribution in https://github.com/sxyazi/yazi/pull/2533
Full Changelog: https://github.com/sxyazi/yazi/compare/v25.3.2...v25.4.8