# Yazi v25.12.29 - Product: Yazi (https://whatsnew.fyi/product/yazi) - Vendor: yazi-rs - Date: 2025-12-29 - Version: v25.12.29 - Original notes: https://github.com/sxyazi/yazi/releases/tag/v25.12.29 - Permalink: https://whatsnew.fyi/product/yazi/releases/v25.12.29 - Labels: Platforms: Desktop 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'. --- - **added** — Remote file management - **added** — Virtual file system - **added** — Shell formatting - **added** — Multi-entry support for plugin system - **added** — Zoom in or out of the preview image - **added** — Improve the UX of the pick and input components - **added** — Show progress of each task in task manager - **added** — New fs.copy() and fs.rename() APIs - **added** — New experimental ya.async() API - **added** — New overall option to set the overall background color - **added** — Rounded corners for indicator bar - **added** — New bulk_rename action always renames files with the editor - **added** — key-* DDS events to allow changing or canceling user key events - **added** — New --bg flag specifying image background color in the preset SVG and ImageMagick previewers - **added** — Filter by full path in search view instead of just filename - **added** — New casefy action for case conversion of the input content - **added** — Allow dynamic adjustment of layout ratio via rt.mgr.ratio - **added** — Support .deb packages - **added** — Support invalid UTF-8 paths throughout the codebase - **added** — Allow upgrading only specific packages with ya pkg - **added** — New duplicate DDS event for copying files - **added** — New ind-sort and key-sort DDS events to change sorting in Lua - **changed** — Rename name to url for open, fetchers, spotters, preloaders, previewers, filetype, and globs icon rules to support virtual file system - **changed** — Rename mime fetcher to mime.local, and introduce mime.dir fetcher to support folder MIME types - **changed** — Reclassify hovered and preview_hovered under [mgr] of theme.toml into [indicator] as current and preview, respectively - **removed** — Remove $0 parameter in opener rules to make the open action work under empty directories - **changed** — Return Path instead of Url from Url:strip_prefix() and File.link_to to enforce type safety - **deprecated** — Deprecate $n, $@ (*nix) and %n, %* (Windows) in shell action and opener rules in favor of new shell formatting - **deprecated** — Deprecate ya.hide, ya.render, and ya.truncate in favor of ui.hide, ui.render, and ui.truncate - **deprecated** — Deprecate position property of ya.input() in favor of pos to align with ya.confirm() and its type ui.Pos - **deprecated** — Deprecate cx.tasks.progress in favor of cx.tasks.summary - **deprecated** — Deprecate frag property of Url in favor of domain - **deprecated** — Deprecate ui.Rect.default in favor of ui.Rect {} - **fixed** — User-prepended open rules do not override presets - **fixed** — Respect user's system media opener instead of hardcoding mpv - **fixed** — Incorrect $0 and $@ parameters in shell action under empty directories - **fixed** — Avoid appending a newline when reading clipboard contents ###### 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 ([#32 _[Truncated at 4000 characters — full notes: https://github.com/sxyazi/yazi/releases/tag/v25.12.29]_