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.
- 2 remove or deprecate something
99 changes across 5 releases
Added 50
- 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
- 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
- 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
- Support VFS for preset previewers that rely on external commands
- Support 8-bit images in RGB, CIELAB, and GRAY color spaces
Changed 17
- Improve Kitty graphics over shared memory
- Send terminal probe requests immediately at startup
- Tune light/dark theme detection
- 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
- 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
- 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
- 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
- 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
- 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()
- 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
- 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
- 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
vergencannot 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])
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,%TNshell 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
--followoption for thelinkaction ([#4184]) - New
ui.Inputelement ([#4040]) - New
themeDDS 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, andsearchactions ([#4177]) - New gait for input
backwardandforwardactions ([#4012])
Changed
- Rename SFTP sections in
vfs.tomlfrom[services.domain]to[sftp.domain]([#4120]). - Rename
<BackTab>to<S-Tab>([#3989]) - Make
rt.term.lighta 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@yankDDS event returnFileinstead ofUrlfrom__pairs()([#4096]) - Remove
help:filteraction since the filter input is now always available ([#4074]) [help]oftheme.toml: supersedeonwithchord, supersederunanddescwithaction, removefooter([#4074])- Remove Legacy Console Mode on Windows ([#3989])
Deprecated
- Deprecate
copy dirnamein favor ofcopy dirpath([#4169]) - Deprecate
backward --farandforward --farin favor ofbackward wideandforward wide, respectively ([#4012]) - Deprecate
tab::Mode.is_visualin favor of the newtab::Mode.is_normal([#4101]) - Deprecate
Url.is_regular,Url.is_search, andUrl.domainin favor ofUrl.spec.is_regular,Url.spec.is_search, andUrl.spec.domain, respectively ([#4118])
Fixed
- Refresh file list after deleting a file from search view ([#4174])
- Work around image previews broken by a
tmux3.7b redraw bug ([#4195]) - Normalize
\\?\-prefixed Verbatim paths when creating relative symlinks on Windows ([#4067]) - Keep package hashes indifferent to line endings when
ya pkgpulls packages ([#4064]) - Use WebP as
magickpreset preloader cache format to keep image transparency ([#4065]) - Use cleaned and normalized
$PWDas 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])
v26.5.6
Added
- Custom tab name ([#3666])
- New
--inforsearchaction 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:themeaction 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
luaaction that runs an inline Lua snippet ([#3813]) - Certificate authentication for SFTP VFS provider ([#3716])
- New
hoveredcondition specifying different icons for hovered files ([#3728]) - Allow using
ps.sub()ininit.luadirectly without a plugin ([#3638]) - New
ya.exec()API andya execsubcommand to execute an action and await its result ([#3780]) - New
sort_fallbackoption to control fallback sorting behavior ([#3077]) - New
fs.access()API to access the filesystem ([#3668]) - New
relay-notify-pushDDS event to customize the notification handler ([#3642]) - New
ind-app-titleDDS event to customize the app title ([#3684]) - New
ind-hiddenandkey-hiddenDDS events to change hidden status in Lua ([#3748]) - New
marker_symboloption to specify the symbol used for marking files ([#3689]) - New
--discardforya pkgthat discard local changes made to packages ([#3781]) - New
bulk_exitaction that customizes the prompt for bulk operations ([#3792]) - New
fs.unique()creates a unique file or directory ([#3677]) - New
downloadDDS event fires when remote files are downloaded ([#3687]) - New
ind-which-activateDDS event to change the which component behavior ([#3608]) - New
heyDDS event fires when static messages are restored from persistence ([#3725]) - New
cx.whichAPI 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 t ⇒ t to avoid conflict with new t ⇒ r for renaming tabs ([#3666])
- Make
ui.Styleimmutable ([#3862]) - Remove
title_formatin favor of newind-app-titleDDS event for flexible title customization ([#3684]) - Remove
micro_workersandmacro_workersin favor of finer control over concurrent workers ([#3661]) - Rename
idof the fetcher rule togroup([#3943])
Deprecated
- Deprecate
fs.unique_name()in favor offs.unique()to fix a TOCTOU race condition ([#3677])
Fixed
- Chafa v1.18.1 causes random ghost keypresses when previewing images ([#3678])
paste --forcedoesn'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 pkgignore 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])
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 pkgwhen stdout is not a TTY ([#3566]) - New
Path.os()API creates an OS-nativePath([#3541])
Fixed
- Smart-case in interactive
cdbroken due to a typo ([#3540]) - Fix shell formatting for non-spread opener rules ([#3532])
sort extensionexcludes directories since only files have extensions ([#3582])- Account for URL covariance in
Url:join()([#3514])
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 pkgfails to writepackage.tomlwhen the config directory does not exist ([#3482])- A race condition generating unique filenames for concurrent file operations ([#3494])