# Yazi: what changed from 25 to 26 - Product: Yazi (https://whatsnew.fyi/product/yazi) - Vendor: yazi-rs - Range: changelog entries numbered after v25.12.29 up to and including v26.9.1, stable releases only - Entries below: 5 releases (newest first) - Resolved: 25 is v25.12.29 and 26 is v26.9.1, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 2 - Page: https://whatsnew.fyi/product/yazi/compare/25...26 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (99 changes, grouped by kind) ### Added #### v26.8.15 (2026-08-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 (2026-05-05) - 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 (2026-01-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 (2026-01-04) - Support VFS for preset previewers that rely on external commands - Support 8-bit images in RGB, CIELAB, and GRAY color spaces ### Changed #### v26.9.1 (2026-09-01) - Improve Kitty graphics over shared memory - Send terminal probe requests immediately at startup - Tune light/dark theme detection #### v26.8.15 (2026-08-15) - Rename SFTP sections in vfs.toml from [services.domain] to [sftp.domain] - Rename to - 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 (2026-05-05) - Upgrade Lua to 5.5 - Change preset t for creating tabs to tt to avoid conflict with new tr 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 #### v26.9.1 (2026-09-01) - 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 (2026-08-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 (2026-05-05) - 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 (2026-01-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 (2026-01-04) - 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 #### v26.8.15 (2026-08-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 (2026-05-05) - Deprecate `fs.unique_name()` in favor of `fs.unique()` to fix a TOCTOU race condition ## Release notes ### v26.9.1 - Date: 2026-09-01 - Version: v26.9.1 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v26.9.1 - Permalink: https://whatsnew.fyi/product/yazi/releases/v26.9.1 - Labels: Platforms: Desktop - **fixed** — Assertion failure on expanding URLs with variables containing absolute paths - **fixed** — Correct open rule matching for trashed directories - **fixed** — Lock directories under timeless mounts on first peek - **fixed** — Honor associated text when matching character keybindings - **fixed** — Materialize Git symlinks for consistent hashes - **fixed** — Prune stale backstack entries on file invalidation - **fixed** — Wait for terminal probe echo back before stopping instance - **fixed** — Avoid flicker caused by screen clear on final response from terminal - **fixed** — Fall back when vergen cannot determine Git SHA - **changed** — Improve Kitty graphics over shared memory - **changed** — Send terminal probe requests immediately at startup - **changed** — Tune light/dark theme detection ###### 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]) ### v26.8.15 - Date: 2026-08-15 - Version: v26.8.15 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v26.8.15 - Permalink: https://whatsnew.fyi/product/yazi/releases/v26.8.15 - Labels: Platforms: Desktop - **added** — Drag and drop support - **added** — Trash bin functionality - **added** — Bulk create operation - **added** — Help menu converted to command palette - **added** — Input history - **added** — Automatic dark/light theme switching - **added** — Experimental %y, %Y, %t, %T, %yN, %YN, %tN, %TN shell formatting parameters - **added** — Custom VFS provider - **added** — Visual mode support for wraparound scrolling - **added** — H/M/L Vim-like motion for moving cursor relative to viewport - **added** — Context-aware icons for inputs - **added** — Show file icons in trash/delete/overwrite confirmations - **added** — Dynamic keymap Lua API - **added** — Dynamic Lua API for preloader, spotter, fetcher - **added** — Configurable border for the which component - **added** — Official APT repository for Debian and Ubuntu - **added** — New --follow option for the link action - **added** — New ui.Input element - **added** — New theme DDS event for plugins to watch theme reloads - **added** — Preview images in Zellij via kitty graphics protocol - **added** — Image preview with Überzug++ on Niri - **changed** — Rename SFTP sections in vfs.toml from [services.domain] to [sftp.domain] - **changed** — Rename to - **changed** — Make rt.term.light a function that returns the latest color scheme on each call - **changed** — Remove Url.is_archive - archive:// is no longer built in and can now be registered by plugins - **changed** — Make mgr::Yanked, tab::Selected, and the @yank DDS event return File instead of Url from __pairs() - **changed** — Remove help:filter action since the filter input is now always available - **changed** — Update [help] of theme.toml: supersede on with chord, supersede run and desc with action, remove footer - **changed** — Remove Legacy Console Mode on Windows - **deprecated** — Deprecate copy dirname in favor of copy dirpath - **deprecated** — Deprecate backward --far and forward --far in favor of backward wide and forward wide - **deprecated** — Deprecate tab::Mode.is_visual in favor of the new tab::Mode.is_normal - **deprecated** — 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 - **fixed** — Refresh file list after deleting a file from search view - **fixed** — Work around image previews broken by a tmux 3.7b redraw bug - **fixed** — Normalize \?\-prefixed Verbatim paths when creating relative symlinks on Windows - **fixed** — Keep package hashes indifferent to line endings when ya pkg pulls packages - **fixed** — Use WebP as magick preset preloader cache format to keep image transparency - **fixed** — Use cleaned and normalized $PWD as startup CWD to avoid MSYS2/git-bash path quirks ###### 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 `` to `` ([#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]) ### v26.5.6 - Date: 2026-05-05 - Version: v26.5.6 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v26.5.6 - Permalink: https://whatsnew.fyi/product/yazi/releases/v26.5.6 - Labels: Platforms: Desktop - **added** — Custom tab name - **added** — New `--in` for `search` action to set search directory - **added** — Hover cursor over the new file after copying/cutting/linking/hardlinking/extracting - **added** — Drag-resize panes with mouse - **added** — Multi-file spotter - **added** — New `app:theme` action that hot-reload user themes/flavors - **added** — Dynamic open/opener Lua API - **added** — Dynamic previewer Lua API - **added** — Custom styles for plugins - **added** — Vim-like `lua` action that runs an inline Lua snippet - **added** — Certificate authentication for SFTP VFS provider - **added** — New `hovered` condition specifying different icons for hovered files - **added** — Allow using `ps.sub()` in `init.lua` directly without a plugin - **added** — New `ya.exec()` API and `ya exec` subcommand to execute an action and await its result - **added** — New `sort_fallback` option to control fallback sorting behavior - **added** — New `fs.access()` API to access the filesystem - **added** — New `relay-notify-push` DDS event to customize the notification handler - **added** — New `ind-app-title` DDS event to customize the app title - **added** — New `ind-hidden` and `key-hidden` DDS events to change hidden status in Lua - **added** — New `marker_symbol` option to specify the symbol used for marking files - **added** — New `--discard` for `ya pkg` that discard local changes made to packages - **changed** — Upgrade Lua to 5.5 - **changed** — Change preset t for creating tabs to tt to avoid conflict with new tr for renaming tabs - **changed** — Make `ui.Style` immutable - **changed** — Remove `title_format` in favor of new `ind-app-title` DDS event for flexible title customization - **changed** — Remove `micro_workers` and `macro_workers` in favor of finer control over concurrent workers - **changed** — Rename `id` of the fetcher rule to `group` - **deprecated** — Deprecate `fs.unique_name()` in favor of `fs.unique()` to fix a TOCTOU race condition - **fixed** — Chafa v1.18.1 causes random ghost keypresses when previewing images - **fixed** — `paste --force` doesn't work on existing read-only files with the same name - **fixed** — Be a little defensive while parsing the output of `7zz -ba` - **fixed** — Make `ya pkg` ignore default remote name in user Git config - **fixed** — Archive extraction fails for target paths with non-ASCII characters on Windows - **fixed** — Escape backslashes in ImageMagick font path parameter ###### 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]) ### v26.1.22 - Date: 2026-01-22 - Version: v26.1.22 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v26.1.22 - Permalink: https://whatsnew.fyi/product/yazi/releases/v26.1.22 - Labels: Platforms: Desktop - **added** — Tree view for the preset archive previewer - **added** — Support compressed tarballs (.tar.gz, .tar.bz2, etc.) in the preset archive previewer - **added** — Check and refresh the file list when the terminal gains focus - **added** — Experimental module-level async support - **added** — Disable ANSI escape sequences in ya pkg when stdout is not a TTY - **added** — New Path.os() API creates an OS-native Path - **fixed** — Smart-case in interactive cd broken due to a typo - **fixed** — Fix shell formatting for non-spread opener rules - **fixed** — sort extension excludes directories since only files have extensions - **fixed** — 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]) ### v26.1.4 - Date: 2026-01-04 - Version: v26.1.4 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v26.1.4 - Permalink: https://whatsnew.fyi/product/yazi/releases/v26.1.4 - Labels: Platforms: Desktop - **added** — Support VFS for preset previewers that rely on external commands - **added** — Support 8-bit images in RGB, CIELAB, and GRAY color spaces - **fixed** — ya pkg fails to write package.toml when the config directory does not exist - **fixed** — 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])