What changed in Yazi from 25 to 26

5 releases numbered after v25.12.29 up to and including v26.9.1, stable releases only. v25.12.29 and v26.9.1 are the newest stable releases of 25 and 26 we track; this page follows them as new ones ship.

99 changes across 5 releases

Added 50

v26.8.15

  • Drag and drop support
  • Trash bin functionality
  • Bulk create operation
  • Help menu converted to command palette
  • Input history
  • Automatic dark/light theme switching
  • Experimental %y, %Y, %t, %T, %yN, %YN, %tN, %TN shell formatting parameters
  • Custom VFS provider
  • Visual mode support for wraparound scrolling
  • H/M/L Vim-like motion for moving cursor relative to viewport
  • Context-aware icons for inputs
  • Show file icons in trash/delete/overwrite confirmations
  • Dynamic keymap Lua API
  • Dynamic Lua API for preloader, spotter, fetcher
  • Configurable border for the which component
  • Official APT repository for Debian and Ubuntu
  • New --follow option for the link action
  • New ui.Input element
  • New theme DDS event for plugins to watch theme reloads
  • Preview images in Zellij via kitty graphics protocol
  • Image preview with Überzug++ on Niri

v26.5.6

  • 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
  • Dynamic open/opener Lua API
  • Dynamic previewer Lua API
  • Custom styles for plugins
  • Vim-like `lua` action that runs an inline Lua snippet
  • Certificate authentication for SFTP VFS provider
  • New `hovered` condition specifying different icons for hovered files
  • Allow using `ps.sub()` in `init.lua` directly without a plugin
  • New `ya.exec()` API and `ya exec` subcommand to execute an action and await its result
  • New `sort_fallback` option to control fallback sorting behavior
  • New `fs.access()` API to access the filesystem
  • New `relay-notify-push` DDS event to customize the notification handler
  • New `ind-app-title` DDS event to customize the app title
  • New `ind-hidden` and `key-hidden` DDS events to change hidden status in Lua
  • New `marker_symbol` option to specify the symbol used for marking files
  • New `--discard` for `ya pkg` that discard local changes made to packages

v26.1.22

  • 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

v26.1.4

  • Support VFS for preset previewers that rely on external commands
  • Support 8-bit images in RGB, CIELAB, and GRAY color spaces
Changed 17

v26.9.1

  • Improve Kitty graphics over shared memory
  • Send terminal probe requests immediately at startup
  • Tune light/dark theme detection

v26.8.15

  • 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

v26.5.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 27

v26.9.1

  • Assertion failure on expanding URLs with variables containing absolute paths
  • Correct open rule matching for trashed directories
  • Lock directories under timeless mounts on first peek
  • Honor associated text when matching character keybindings
  • Materialize Git symlinks for consistent hashes
  • Prune stale backstack entries on file invalidation
  • Wait for terminal probe echo back before stopping instance
  • Avoid flicker caused by screen clear on final response from terminal
  • Fall back when vergen cannot determine Git SHA

v26.8.15

  • 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

v26.5.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

v26.1.22

  • 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()

v26.1.4

  • ya pkg fails to write package.toml when the config directory does not exist
  • A race condition generating unique filenames for concurrent file operations
Deprecated 5

v26.8.15

  • 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

v26.5.6

  • Deprecate `fs.unique_name()` in favor of `fs.unique()` to fix a TOCTOU race condition

Original release notes, newest first

The list above is our reading of these notes; the originals from yazi-rs are here, one fold per release.

v26.9.1
Fixed
  • Assertion failure on expanding URLs with variables containing absolute paths ([#4256])
  • Correct open rule matching for trashed directories ([#4268])
  • Lock directories under timeless mounts on first peek ([#4306])
  • Honor associated text when matching character keybindings ([#4279])
  • Materialize Git symlinks for consistent hashes ([#4276])
  • Prune stale backstack entries on file invalidation ([#4309])
  • Wait for terminal probe echo back before stopping instance ([#4271])
  • Avoid flicker caused by screen clear on final response from terminal ([#4250])
  • Fall back when vergen cannot determine Git SHA ([#4252])
Improved
  • Kitty graphics over shared memory ([#4294])
  • Send terminal probe requests immediately at startup ([#4260])
  • Tune light/dark theme detection ([#4265])

View originalPermalink

v26.8.15
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

v26.5.6
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

v26.1.22
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

v26.1.4
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