Yazi

Developer ToolsDesktop

A blazing-fast terminal file manager written in Rust, with async I/O and rich previews.

Latest v26.8.15 · · Desktopby yazi-rsWebsitesxyazi/yazi

Release activity

Release activity — 5 releases across 5 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026
MondayNo releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
Tuesday1 release on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026
ThursdayNo releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026
FridayNo releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026
SaturdayNo releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 20261 release on Aug 15, 2026

5 releases in the last year

Changelog

v26.8.15

Latest
Added 21
  • Drag and drop support
  • Trash bin functionality
  • Bulk create operation
  • Help menu converted to command palette
  • Input history
  • Automatic dark/light theme switching
Changed 8
  • Rename SFTP sections in vfs.toml from [services.domain] to [sftp.domain]
  • Rename <BackTab> to <S-Tab>
  • Make rt.term.light a function that returns the latest color scheme on each call
  • Remove Url.is_archive - archive:// is no longer built in and can now be registered by plugins
  • Make mgr::Yanked, tab::Selected, and the @yank DDS event return File instead of Url from __pairs()
  • Remove help:filter action since the filter input is now always available
  • Update [help] of theme.toml: supersede on with chord, supersede run and desc with action, remove footer
  • Remove Legacy Console Mode on Windows
Fixed 6
  • Refresh file list after deleting a file from search view
  • Work around image previews broken by a tmux 3.7b redraw bug
  • Normalize \?\-prefixed Verbatim paths when creating relative symlinks on Windows
  • Keep package hashes indifferent to line endings when ya pkg pulls packages
  • Use WebP as magick preset preloader cache format to keep image transparency
  • Use cleaned and normalized $PWD as startup CWD to avoid MSYS2/git-bash path quirks
Deprecated 4
  • Deprecate copy dirname in favor of copy dirpath
  • Deprecate backward --far and forward --far in favor of backward wide and forward wide
  • Deprecate tab::Mode.is_visual in favor of the new tab::Mode.is_normal
  • Deprecate Url.is_regular, Url.is_search, and Url.domain in favor of Url.spec.is_regular, Url.spec.is_search, and Url.spec.domain
Added
  • Drag and drop ([#4005], [#4225])
  • Trash bin ([#4144], [#4204], [#4212])
  • Bulk create ([#3793])
  • Make help menu a command palette ([#4074])
  • Input history ([#4104])
  • Automatic dark/light theme switching ([#4196])
  • Experimental %y, %Y, %t, %T, %yN, %YN, %tN, %TN shell formatting parameters ([#4108])
  • Custom VFS provider ([#4118])
  • Make visual mode support wraparound scrolling ([#4101])
  • H/M/L Vim-like motion for moving cursor relative to viewport ([#3970])
  • Context-aware icons for inputs ([#4080])
  • Show file icons in trash/delete/overwrite confirmations ([#4096])
  • Dynamic keymap Lua API ([#4031])
  • Dynamic Lua API for preloader, spotter, fetcher ([#4235])
  • Configurable border for the which component ([#4189])
  • Official APT repository for Debian and Ubuntu ([#4198])
  • New --follow option for the link action ([#4184])
  • New ui.Input element ([#4040])
  • New theme DDS event for plugins to watch theme reloads ([#4203])
  • Preview images in Zellij via kitty graphics protocol ([#4216])
  • Image preview with Überzug++ on Niri ([#3990])
  • Unicode normalization for user regex patterns in find, filter, and search actions ([#4177])
  • New gait for input backward and forward actions ([#4012])
Changed
  • Rename SFTP sections in vfs.toml from [services.domain] to [sftp.domain] ([#4120]).
  • Rename <BackTab> to <S-Tab> ([#3989])
  • Make rt.term.light a function that returns the latest color scheme on each call ([#4196])
  • Remove Url.is_archive - archive:// is no longer built in and can now be registered by plugins ([#4118])
  • Make mgr::Yanked, tab::Selected, and the @yank DDS event return File instead of Url from __pairs() ([#4096])
  • Remove help:filter action since the filter input is now always available ([#4074])
  • [help] of theme.toml: supersede on with chord, supersede run and desc with action, remove footer ([#4074])
  • Remove Legacy Console Mode on Windows ([#3989])
Deprecated
  • Deprecate copy dirname in favor of copy dirpath ([#4169])
  • Deprecate backward --far and forward --far in favor of backward wide and forward wide, respectively ([#4012])
  • Deprecate tab::Mode.is_visual in favor of the new tab::Mode.is_normal ([#4101])
  • Deprecate Url.is_regular, Url.is_search, and Url.domain in favor of Url.spec.is_regular, Url.spec.is_search, and Url.spec.domain, respectively ([#4118])
Fixed
  • Refresh file list after deleting a file from search view ([#4174])
  • Work around image previews broken by a tmux 3.7b redraw bug ([#4195])
  • Normalize \\?\-prefixed Verbatim paths when creating relative symlinks on Windows ([#4067])
  • Keep package hashes indifferent to line endings when ya pkg pulls packages ([#4064])
  • Use WebP as magick preset preloader cache format to keep image transparency ([#4065])
  • Use cleaned and normalized $PWD as startup CWD to avoid MSYS2/git-bash path quirks ([#4068])
Improved
  • Eliminate hacks in image and UI conflict resolution ([#4022])
  • Make terminal capability probing async ([#4194])
  • Enable SSO (small string optimization) for custom schemes and custom styles ([#4164])
  • Reduce binary size and build time ([#4228])
View originalPermalink
How v26.8.15 went

v26.5.6

Added 21
  • Custom tab name
  • New `--in` for `search` action to set search directory
  • Hover cursor over the new file after copying/cutting/linking/hardlinking/extracting
  • Drag-resize panes with mouse
  • Multi-file spotter
  • New `app:theme` action that hot-reload user themes/flavors
Changed 6
  • Upgrade Lua to 5.5
  • Change preset <kbd>t</kbd> for creating tabs to <kbd>t</kbd> ⇒ <kbd>t</kbd> to avoid conflict with new <kbd>t</kbd> ⇒ <kbd>r</kbd> for renaming tabs
  • Make `ui.Style` immutable
  • Remove `title_format` in favor of new `ind-app-title` DDS event for flexible title customization
  • Remove `micro_workers` and `macro_workers` in favor of finer control over concurrent workers
  • Rename `id` of the fetcher rule to `group`
Fixed 6
  • Chafa v1.18.1 causes random ghost keypresses when previewing images
  • `paste --force` doesn't work on existing read-only files with the same name
  • Be a little defensive while parsing the output of `7zz -ba`
  • Make `ya pkg` ignore default remote name in user Git config
  • Archive extraction fails for target paths with non-ASCII characters on Windows
  • Escape backslashes in ImageMagick font path parameter
Deprecated 1
  • Deprecate `fs.unique_name()` in favor of `fs.unique()` to fix a TOCTOU race condition
Added
  • Custom tab name ([#3666])
  • New --in for search action to set search directory ([#3696])
  • Hover cursor over the new file after copying/cutting/linking/hardlinking/extracting ([#3846], [#3854])
  • Drag-resize panes with mouse ([#3890])
  • Multi-file spotter ([#3733])
  • New app:theme action that hot-reload user themes/flavors ([#3906])
  • Dynamic open/opener Lua API ([#3901])
  • Dynamic previewer Lua API ([#3891])
  • Custom styles for plugins ([#3934])
  • Vim-like lua action that runs an inline Lua snippet ([#3813])
  • Certificate authentication for SFTP VFS provider ([#3716])
  • New hovered condition specifying different icons for hovered files ([#3728])
  • Allow using ps.sub() in init.lua directly without a plugin ([#3638])
  • New ya.exec() API and ya exec subcommand to execute an action and await its result ([#3780])
  • New sort_fallback option to control fallback sorting behavior ([#3077])
  • New fs.access() API to access the filesystem ([#3668])
  • New relay-notify-push DDS event to customize the notification handler ([#3642])
  • New ind-app-title DDS event to customize the app title ([#3684])
  • New ind-hidden and key-hidden DDS events to change hidden status in Lua ([#3748])
  • New marker_symbol option to specify the symbol used for marking files ([#3689])
  • New --discard for ya pkg that discard local changes made to packages ([#3781])
  • New bulk_exit action that customizes the prompt for bulk operations ([#3792])
  • New fs.unique() creates a unique file or directory ([#3677])
  • New download DDS event fires when remote files are downloaded ([#3687])
  • New ind-which-activate DDS event to change the which component behavior ([#3608])
  • New hey DDS event fires when static messages are restored from persistence ([#3725])
  • New cx.which API to access the which component state ([#3617])
  • New experimental ya.co() API that creates a coroutine ([#3757])
Changed
  • Upgrade Lua to 5.5 ([#3633])
  • Change preset t for creating tabs to tt to avoid conflict with new tr for renaming tabs ([#3666])
  • Make ui.Style immutable ([#3862])
  • Remove title_format in favor of new ind-app-title DDS event for flexible title customization ([#3684])
  • Remove micro_workers and macro_workers in favor of finer control over concurrent workers ([#3661])
  • Rename id of the fetcher rule to group ([#3943])
Deprecated
  • Deprecate fs.unique_name() in favor of fs.unique() to fix a TOCTOU race condition ([#3677])
Fixed
  • Chafa v1.18.1 causes random ghost keypresses when previewing images ([#3678])
  • paste --force doesn't work on existing read-only files with the same name ([#3894])
  • Be a little defensive while parsing the output of 7zz -ba ([#3744])
  • Make ya pkg ignore default remote name in user Git config ([#3648])
  • Archive extraction fails for target paths with non-ASCII characters on Windows ([#3607])
  • Escape backslashes in ImageMagick font path parameter ([#3708])
Improved
  • Reduce memory allocations by using Lua 5.5 external strings ([#3634])
  • Reuse previewed and spotted widgets when possible ([#3765])
  • Avoid unnecessary allocations in code highlighting ([#3804])
View originalPermalink
How v26.5.6 went

v26.1.22

Added 6
  • Tree view for the preset archive previewer
  • Support compressed tarballs (.tar.gz, .tar.bz2, etc.) in the preset archive previewer
  • Check and refresh the file list when the terminal gains focus
  • Experimental module-level async support
  • Disable ANSI escape sequences in ya pkg when stdout is not a TTY
  • New Path.os() API creates an OS-native Path
Fixed 4
  • Smart-case in interactive cd broken due to a typo
  • Fix shell formatting for non-spread opener rules
  • sort extension excludes directories since only files have extensions
  • Account for URL covariance in Url:join()
Added
  • Tree view for the preset archive previewer ([#3525])
  • Support compressed tarballs (.tar.gz, .tar.bz2, etc.) in the preset archive previewer ([#3518])
  • Check and refresh the file list when the terminal gains focus ([#3561])
  • Experimental module-level async support ([#3594])
  • Disable ANSI escape sequences in ya pkg when stdout is not a TTY ([#3566])
  • New Path.os() API creates an OS-native Path ([#3541])
Fixed
  • Smart-case in interactive cd broken due to a typo ([#3540])
  • Fix shell formatting for non-spread opener rules ([#3532])
  • sort extension excludes directories since only files have extensions ([#3582])
  • Account for URL covariance in Url:join() ([#3514])
View originalPermalink
How v26.1.22 went

v26.1.4

Added 2
  • Support VFS for preset previewers that rely on external commands
  • Support 8-bit images in RGB, CIELAB, and GRAY color spaces
Fixed 2
  • ya pkg fails to write package.toml when the config directory does not exist
  • A race condition generating unique filenames for concurrent file operations
Added
  • Support VFS for preset previewers that rely on external commands ([#3477])
  • Support 8-bit images in RGB, CIELAB, and GRAY color spaces ([#3358])
Fixed
  • ya pkg fails to write package.toml when the config directory does not exist ([#3482])
  • A race condition generating unique filenames for concurrent file operations ([#3494])
View originalPermalink
How v26.1.4 went

v25.12.29

Added 22
  • Remote file management
  • Virtual file system
  • Shell formatting
  • Multi-entry support for plugin system
  • Zoom in or out of the preview image
  • Improve the UX of the pick and input components
Changed 4
  • Rename name to url for open, fetchers, spotters, preloaders, previewers, filetype, and globs icon rules to support virtual file system
  • Rename mime fetcher to mime.local, and introduce mime.dir fetcher to support folder MIME types
  • Reclassify hovered and preview_hovered under [mgr] of theme.toml into [indicator] as current and preview, respectively
  • Return Path instead of Url from Url:strip_prefix() and File.link_to to enforce type safety
Fixed 4
  • User-prepended open rules do not override presets
  • Respect user's system media opener instead of hardcoding mpv
  • Incorrect $0 and $@ parameters in shell action under empty directories
  • Avoid appending a newline when reading clipboard contents
Removed 1
  • Remove $0 parameter in opener rules to make the open action work under empty directories
Deprecated 6
  • Deprecate $n, $@ (*nix) and %n, %* (Windows) in shell action and opener rules in favor of new shell formatting
  • Deprecate ya.hide, ya.render, and ya.truncate in favor of ui.hide, ui.render, and ui.truncate
  • Deprecate position property of ya.input() in favor of pos to align with ya.confirm() and its type ui.Pos
  • Deprecate cx.tasks.progress in favor of cx.tasks.summary
  • Deprecate frag property of Url in favor of domain
  • Deprecate ui.Rect.default in favor of ui.Rect {}
Added
  • Remote file management ([#3396])
  • Virtual file system ([#3034], [#3035], [#3094], [#3108], [#3187], [#3203])
  • Shell formatting ([#3232])
  • Multi-entry support for plugin system ([#3154])
  • Zoom in or out of the preview image ([#2864])
  • Improve the UX of the pick and input components ([#2906], [#2935])
  • Show progress of each task in task manager ([#3121], [#3131], [#3134])
  • New fs.copy() and fs.rename() APIs ([#3467])
  • New experimental ya.async() API ([#3422])
  • New overall option to set the overall background color ([#3317])
  • Rounded corners for indicator bar ([#3419])
  • New bulk_rename action always renames files with the editor ([#2984])
  • key-* DDS events to allow changing or canceling user key events ([#3005], [#3037])
  • New --bg specifying image background color in the preset SVG and ImageMagick previewers ([#3189])
  • filter by full path (prefix + filename) in search view instead of just filename ([#2915])
  • New casefy action for case conversion of the input content ([#3235])
  • Allow dynamic adjustment of layout ratio via rt.mgr.ratio ([#2964])
  • Support .deb packages ([#2807], [#3128], [#3209])
  • Port several widespread GUI keys to the input component ([#2849])
  • Support invalid UTF-8 paths throughout the codebase ([#2884], [#2889], [#2890], [#2895], [#3023], [#3290], [#3369])
  • Allow upgrading only specific packages with ya pkg ([#2841])
  • Respect the user's image_filter setting in the preset ImageMagick previewer ([#3286])
  • New duplicate DDS event for copying files ([#3456])
  • New ind-sort and key-sort DDS events to change sorting in Lua ([#3391])
  • Allow custom mouse click behavior for individual files ([#2925])
  • Display newlines in input as spaces to improve readability ([#2932])
  • Fill in error messages if preview fails ([#2917], [#3383], [#3387])
  • Search view shares file selection and yank state ([#2855])
  • Offload mimetype fetching on opening files to the task scheduler ([#3141])
  • Increase terminal response timeout to better tolerate slow SSH network environments ([#2843])
Changed
  • Rename name to url for open, fetchers, spotters, preloaders, previewers, filetype, and globs icon rules to support virtual file system ([#3034])
  • Rename mime fetcher to mime.local, and introduce mime.dir fetcher to support folder MIME types ([#3222])
  • Reclassify hovered and preview_hovered under [mgr] of theme.toml into [indicator] as current and preview, respectively ([#3419])
  • Remove $0 parameter in opener rules to make the open action work under empty directories ([#3226])
  • Return Path instead of Url from Url:strip_prefix() and File.link_to to enforce type safety ([#3361], [#3385])
  • Use body instead of the term content in confirmations ([#2921])
  • Use u16 instead of u32 as the type of max_width and max_height options to avoid memory exhaustion ([#3313])
  • Implement __pairs metamethod instead of __index for the callback argument of the @yank DDS event ([#2997])
Deprecated
  • Deprecate $n, $@ (*nix) and %n, %* (Windows) in shell action and opener rules in favor of new shell formatting ([#3232])
  • Deprecate ya.hide, ya.render, and ya.truncate in favor of ui.hide, ui.render, and ui.truncate ([#2939])
  • Deprecate position property of ya.input() in favor of pos to align with ya.confirm() and its type ui.Pos ([#2921])
  • Deprecate cx.tasks.progress in favor of cx.tasks.summary ([#3131])
  • Deprecate frag properly of Url in favor of domain ([#3034])
  • Deprecate ui.Rect.default in favor of ui.Rect {} ([#2927])
Fixed
  • User-prepended open rules do not override presets ([#3360])
  • Respect user's system media opener instead of hardcoding mpv ([#2959])
  • Incorrect $0 and $@ parameters in shell action under empty directories ([#3225])
  • Avoid appending a newline when reading clipboard contents ([#3059])
  • Renew package rev only when it's empty ([#3200])
  • Suspend only when there is a parent process ([#3008])
  • Preserve open order for files with post-resolved MIME types ([#2931])
  • A race condition in concurrent directory loading on a slow device ([#3271])
  • Erase overlapping image portions when previewing errors ([#3067])
  • Force Git checkout for plugin cache repositories ([#3169])
  • Check compatibility when reusing previewer bytecode cache ([#3190])
  • Disable kitty keyboard protocol on Windows due to crossterm inability to handle it ([#3250])
  • Prevent quotes in file(1) arguments from being stripped under MSYS2 ([#3364])
  • Expose ya CLI in the Snap build ([#2904])
  • Fallback to PollWatcher for file changes watching on NetBSD ([#2941])
  • Generate unique image IDs for Kgp to tolerate tmux ([#3038])
Improved
  • Make copy, cut, delete, link, hardlink, download, and upload tasks immediately cancellable ([#3429])
  • Make preload tasks discardable ([#2875])
  • Reduce file change event frequency ([#2820])
  • Upload and download of a single file over SFTP in chunks concurrently ([#3393])
  • Do not listen for file changes in inactive tabs ([#2958])
  • Switch to a higher-performance hash algorithm ([#3083])
  • Sequence-based rendering merge strategy ([#2861])
  • Store only Urn instead of full Url in find results ([#2914])
  • Zero-copy UrlBuf to Url conversion ([#3117])
  • String interning to reduce memory usage of mimetype and URL domain ([#3084], [#3091])
  • Do not pre-allocate memory for Lua tables ([#2879])
  • Copy-on-write on command data, and avoid converting primitive types to strings thereby allocating memory ([#2862])
  • Use AnyUserData::type_id() to reduce stack pushes ([#2834])
  • App data instead of Lua registry to reduce stack pushes ([#2880])
View originalPermalink
How v25.12.29 went

v25.5.31

Fixed 3
  • expose `ui.Wrap`
  • `forward --end-of-word` of the input now considers the mode's delta
  • carry hidden states for dummy files

This is a maintenance release, focusing on bug fixes.

What's Changed

Full Changelog: https://github.com/sxyazi/yazi/compare/v25.5.28...v25.5.31

View originalPermalink
How v25.5.31 went

v25.5.28

Added 3
  • Directory size calculation in spotter folder preview computed dynamically in real time and asynchronously
  • piper.yazi plugin to use output of any shell command as preview content
  • Input component now supports password mode with obscure option
Changed 5
  • tab_active and tab_inactive configuration moved under new [tabs] section
  • Redesigned tab bar as standalone single-line component decoupled from header with tab titles displayed by default and mouse tab switching support
  • Sixel image preview performance improved 9x by replacing neural network quantization with Wu's Color Quantizer
  • Directory size calculation speed doubled by dividing tasks into chunks and reusing existing threads
  • Long filenames in file list and archive preview are now truncated with file extensions displayed at the end
Removed 2
  • tab_width configuration option has been removed
  • sixel_fraction configuration option has been removed
Deprecated 8
  • [manager] configuration section is deprecated in favor of [mgr]
  • ya.mgr_emit(), ya.app_emit() and ya.input_emit() functions are deprecated
  • ya.preview_widgets() function is deprecated
  • Command:args() method is deprecated
  • ya pack subcommand is deprecated
  • LEFT, CENTER, RIGHT alignment options on ui.Line and ui.Text are deprecated
  • NONE, TOP, RIGHT, BOTTOM, LEFT, ALL options on ui.Bar and ui.Border are deprecated
  • WRAP_NO, WRAP, WRAP_TRIM wrap options on ui.Text are deprecated
Breaking Changes
Deprecated
Redesign Tabs

https://github.com/sxyazi/yazi/pull/2745 decouples tabs from the header into an independent tab bar component to enhance UX:

  • A standalone single-line component increases the available space for displaying tabs.
  • Tab titles are displayed by default to increase recognizability.
  • Supports switching tabs via mouse for easier navigation.

The new tab bar is only shown when there is more than one tab, ensuring no space is wasted for users who don't use tabs.

https://github.com/user-attachments/assets/5ca33561-7558-4b9c-8b6a-9dfbc0bc8aa4

Calculate Real-Time Directory Size in Spotter

https://github.com/sxyazi/yazi/pull/2695 adds directory sizes to the folder spotter. The size is computed dynamically in real time and asynchronously, which means:

  • Every time a user clicks <Tab> on a directory, the latest size is calculated.
  • For large directories, real-time changes in size are reported to the user, with "(?)" appended at the end to indicate that the calculation is in progress.
  • If the user closes the spotter or switches directories using the left/right arrow keys, any ongoing calculations will be canceled to avoid wasting resources.

Also, the computed directory size will be updated in the file list:

  • If the user sets linemode = size, the latest size will be shown on the right of the file line.
  • If the user sets sort_by = size, the file list will be sorted by the latest sizes (if necessary).

https://github.com/user-attachments/assets/eb2981e6-3e02-4997-abfc-83cc456a1677

9x Faster Sixel Image Preview

https://github.com/sxyazi/yazi/pull/2707 replaces the existing neural network quantization algorithm with Wu's Color Quantizer, which offers better performance while maintaining comparable quality.

Old implementation (neural network via color_quant, with default sixel_fraction = 20) – average 189.5763999ms:

time: 190.025ms
time: 191.054417ms
time: 187.696792ms
time: 188.060791ms
time: 189.381958ms
time: 191.618042ms
time: 192.383125ms
time: 190.511291ms
time: 187.8395ms
time: 187.193083ms

New implementation (Wu - sRGB via quantette) – average 20.9199916ms:

time: 21.226458ms
time: 20.719542ms
time: 21.207583ms
time: 20.815875ms
time: 21.071291ms
time: 21.273459ms
time: 20.811792ms
time: 20.723166ms
time: 20.52675ms
time: 20.824ms
piper.yazi Plugin

With piper.yazi, you can use the output of any shell command as preview content. This eliminates the need to write a separate plugin for each command, making the use of custom previewers much more convenient.

screenshot-002418

See https://github.com/yazi-rs/plugins/tree/main/piper.yazi#examples for more examples!

Double Directory Size Calculation Speed

https://github.com/sxyazi/yazi/pull/2683 greatly improves directory computation performance by dividing the task into chunks and reusing existing threads. Directory sorting and file trashing will be observably twice as fast.

Run the benchmark script against a 10.16GB folder 5 times in release mode:

Old: elapsed 759.877791ms
New: elapsed 364.802583ms

Old: elapsed 734.5155ms
New: elapsed 360.103375ms

Old: elapsed 734.124167ms
New: elapsed 365.662458ms

Old: elapsed 733.27325ms
New: elapsed 365.694042ms

Old: elapsed 743.394875ms
New: elapsed 364.455083ms
Input Component Now Supports Password Mode

With https://github.com/sxyazi/yazi/pull/2675, a new obscure = true option is available:

local value = ya.input {
  title = "Password:",
  obscure = true,
  position = { "center", w = 50 },
}

https://github.com/user-attachments/assets/ff5b21f2-977b-4e9f-a279-e4cb15b51a57

Truncate Long Items in the File List

https://github.com/sxyazi/yazi/pull/2754, https://github.com/sxyazi/yazi/pull/2759, and https://github.com/sxyazi/yazi/pull/2778 add truncation support for long filenames in the file list and archive preview, and display file extensions at the end, ensuring that even if a filename is truncated, you can still know what file type it is by its extension.

https://github.com/user-attachments/assets/0f1afbdb-17ec-410f-adea-e8b1d2ed6341

types.yazi Plugin

For a long time, Yazi lacked a type definition file, which made plugin development very painful. Now, it's here!

types.yazi provides type definitions for Yazi's Lua API, empowering an efficient plugin development experience.

Improved Built-In Previewers
Improve Path Auto-Completion Results

The auto-completion results for interactive cd (key: g => <Space>) will now more closely match the user's input keywords.

Done in https://github.com/sxyazi/yazi/pull/2765

What's Changed
New Contributors

Full Changelog: https://github.com/sxyazi/yazi/compare/v25.4.8...v25.5.28

View originalPermalink
How v25.5.28 went

v25.4.8

Added 10
  • 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
Changed 9
  • 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
Deprecated 1
  • `ui.Padding` and `ui.Rect:padding()` are deprecated
Breaking Changes
Deprecated
Packaging
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:

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
New Contributors

Full Changelog: https://github.com/sxyazi/yazi/compare/v25.3.2...v25.4.8

View originalPermalink
How v25.4.8 went

v25.3.2

Added 2
  • Expose all theme fields in Lua
  • Expose almost the entirety of the user's configuration in Lua
Fixed 3
  • windows-sys features for Win32_Storage_FileSystem and Win32_System_Threading
  • Ignore stdin redirection to ensure always accessing the real tty
  • STDIN_FILENO poll always returns 0 under SSH

This is a quick fix release that addresses the issue where, under SSH, terminal response sequences are not completely consumed and are leaked to the screen.

Thanks to @Crdr0122 and @SpookyYomo for reporting and helping reproduce the issue!

What's Changed

Full Changelog: https://github.com/sxyazi/yazi/compare/v25.2.26...v25.3.2

View originalPermalink
How v25.3.2 went
View all

Discussion

If you publish Yazi, you can claim this product by proving you administer its repository.