Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v0.3.3
->v0.4.0
Release Notes
sxyazi/yazi (sxyazi/yazi)
v0.4.0
Compare Source
This is the biggest release ever, with 53 new features, 41 fixes, and 12 performance optimizations.
The main focus of this release is improving the plugin system, and we’ve made some adjustments to certain APIs based on real-world usage to better support future extensibility. This release is a key step in moving the plugin system from BETA to stable!
This is a breaking change release, so please make sure to read: Migrating to Yazi v0.4.0
Spotter
https://github.com/sxyazi/yazi/pull/1802 introduces the concept of "spotter". When you "spot" a file, a popup will show up with metadata about that file.
For example, it can display the mime type and size of a regular file, the dimensions and color space of an image, the duration and resolution of a video, or the line count of a code file, etc.
You can easily copy this info with a simple keystroke or quickly swipe through files in the spot window.
What's even cooler is that users can set custom spotters for different file types, and plugin developers can use Lua APIs to build various spotters, just like with previewers!
output.mp4
Support for Transparent Image Preview
Transparent image previews are now supported in https://github.com/sxyazi/yazi/pull/1556 (Thanks to @diegodorado), and it works across all 4 image backends Yazi supports (kitty graphics-protocol, Inline images protocol, Sixel graphics format, Überzug++).
Auto Switch Between Dark and Light Icons/Flavors Based on Terminal Background
https://github.com/sxyazi/yazi/pull/1946 adds dark/light mode support — Yazi will automatically detect your terminal's color scheme and choose the appropriate icon color and flavor.
In
theme.toml
, the[flavor]
section now includes two new attributes,dark
andlight
, to allow setting different flavors for light and dark modes:New
ya emit
andya emit-to
Subcommands to Emit Commands to a Specific InstanceTwo new subcommands,
ya emit
andya emit-to
, have been added to theya
CLI tool in https://github.com/sxyazi/yazi/pull/1946.They allow you to send commands from outside Yazi (e.g., from your shell) to run on a specific Yazi instance for better interactivity.
The new
ya emit
subcommand allows users to send a command to the current Yazi instance. The format is:For example:
ya emit cd /tmp ya emit reveal /tmp/foo
Just like you would write them in your
keymap.toml
file! You can also send commands to a specific remote instance usingya emit-to
:For example:
Support Passing Arguments to Previewer/Preloader/Spotter/Fetcher
With https://github.com/sxyazi/yazi/pull/1979, you can now pass arguments to previewers, preloaders, spotters, and fetchers when configuring them:
This makes them much more flexible, meaning the same plugin can behave differently based on different arguments, tailored to the user's preferences!
Suggest Keywords in the Header When a Finder Is Active
A new keyword indicator has been added to the header, in https://github.com/sxyazi/yazi/pull/1847, letting users know the current finding state with real-time feedback:
screenshot-002086.mp4
Allow Disabling Certain Preset Keybinds with the New
noop
Virtual CommandA new
noop
command has been introduced in https://github.com/sxyazi/yazi/pull/1882:This allows users to disable specific default keybindings, and the disabled keys won’t appear in the "which key" component or the help menu.
Make the Built-in
extract
Plugin Support Compressed Tarballs (*.tar.gz
,*.tar.bz2
, etc.)The built-in extract plugin now has experimental support for extracting compressed tarballs, making it more convenient for users who frequently work with
.tar
files.Thanks to @DirkFi for his excellent work on https://github.com/sxyazi/yazi/pull/1583
Prioritize Paths That Need to Be Processed First During Bulk Renaming
The bulk renaming feature now has smart conflict resolution, done in https://github.com/sxyazi/yazi/pull/1801 (thanks to @yw1ee).
For example, if you’re renaming a list of files:
And renaming them to:
Previously, Yazi would stop with an error when trying to rename
1 -> 2
because2
already exists.Now, it will intelligently pick files that won’t conflict and process them in order, so in this case, it will rename them like this:
Fallback to
CSI 16 t
for Terminals That Don’t SupportTIOCGWINSZ
All terminals on Windows (MS Terminal, WezTerm for Windows) do not support
TIOCGWINSZ
because Windows doesn't haveioctl
.Some terminals based on
node-pty
also don't support it (like Tabby, VSCode, Hyper, etc.).https://github.com/sxyazi/yazi/pull/2004 falls back to
CSI 16 t
whenTIOCGWINSZ
is unavailable to provide better image size calculation for previews.screenshot-002175.mp4
Launch From Preset Settings If the User’s Config Cannot Be Parsed
Now, if Yazi can’t parse your config file because of invalid values, it will ask if you want to launch with the default settings instead of failing to start.
This improves the user experience. Done in https://github.com/sxyazi/yazi/pull/1832
Other improvements
These are a few of my favorite features. For a complete list of improvements in Yazi 0.4, check out the full changelog below.
What's Changed
url
of theFile
by @sxyazi in https://github.com/sxyazi/yazi/pull/1619allow-passthrough
always toall
instead ofon
to prevent overriding a user setting with a higher priorityall
by @sxyazi in https://github.com/sxyazi/yazi/pull/1626Mimetype
agency to reconcile regular files and search results by @sxyazi in https://github.com/sxyazi/yazi/pull/1627extract
plugin support compressed tarballs (*.tar.gz
,*.tar.bz2
, etc.) by @DirkFi in https://github.com/sxyazi/yazi/pull/1583create --dir
by @Tyarel8 in https://github.com/sxyazi/yazi/pull/1650Url
contains the full location information by @sxyazi in https://github.com/sxyazi/yazi/pull/1659self
can now be omitted) by @sxyazi in https://github.com/sxyazi/yazi/pull/1666area()
API for renderable elements by @sxyazi in https://github.com/sxyazi/yazi/pull/1667enter
andleave
commands should treat the search results as regular entities by @sxyazi in https://github.com/sxyazi/yazi/pull/1687magick
previewer for multi-layered image files with-flatten
argument by @v3natio in https://github.com/sxyazi/yazi/pull/1684Urn
on updating by @sxyazi in https://github.com/sxyazi/yazi/pull/1691backspace
command not close the input even when value is empty by @XYenon in https://github.com/sxyazi/yazi/pull/1680code
previewer seeking behavior forjson
,archive
, andempty
by @sxyazi in https://github.com/sxyazi/yazi/pull/1721RectRef
,PaddingRef
,PositionRef
intoRect
,Padding
,Position
by @sxyazi in https://github.com/sxyazi/yazi/pull/1730Kgp
instead ofKitty
since "Kitty" is a terminal emulator not a protocol name by @sxyazi in https://github.com/sxyazi/yazi/pull/1732-1
and1
by @sxyazi in https://github.com/sxyazi/yazi/pull/1736Into<Opt>
trait with procedural macros to avoid bloat by @sxyazi in https://github.com/sxyazi/yazi/pull/1742btime
term to alignctime
with Unix by @sxyazi in https://github.com/sxyazi/yazi/pull/1761yazi --debug
supports detecting whethertmux
is built with--enable-sixel
by @sxyazi in https://github.com/sxyazi/yazi/pull/1762select
totoggle
to reserveselect
for future use by @sxyazi in https://github.com/sxyazi/yazi/pull/1773ui.Text
,ui.Table
, removeui.Paragraph
andui.ListItem
by @sxyazi in https://github.com/sxyazi/yazi/pull/1776ui.List
,ui.Bar
,ui.Border
, andui.Gauge
from coordinates by @sxyazi in https://github.com/sxyazi/yazi/pull/1782file
command by @gaesa in https://github.com/sxyazi/yazi/pull/1783Metadata
withCha
in the file scheduler to improve interoperability withyazi-fs
by @sxyazi in https://github.com/sxyazi/yazi/pull/1785ui.Paragraph
to help users transition more smoothly to the newui.Text
by @sxyazi in https://github.com/sxyazi/yazi/pull/1794confirm
component by @GrzegorzKozub in https://github.com/sxyazi/yazi/pull/1789YAZI_ZOXIDE_OPTS
by @sxyazi in https://github.com/sxyazi/yazi/pull/1822Id
for each tab by @sxyazi in https://github.com/sxyazi/yazi/pull/1826Pattern::match_path
by @sxyazi in https://github.com/sxyazi/yazi/pull/1837scrolloff = 0
by @aidancz in https://github.com/sxyazi/yazi/pull/1866copy --separator
option to allow specifying the path separator by @alan910127 in https://github.com/sxyazi/yazi/pull/1877noop
virtual command by @sxyazi in https://github.com/sxyazi/yazi/pull/1882ya pack --list
by @yudai0804 in https://github.com/sxyazi/yazi/pull/1884tab
parameter for all tab-specific commands to specify which one by @sxyazi in https://github.com/sxyazi/yazi/pull/1885fdfind
iffd
cannot be found by @Integral-Tech in https://github.com/sxyazi/yazi/pull/1889--sync
option for theplugin
command by @sxyazi in https://github.com/sxyazi/yazi/pull/1891ui
,ya
,fs
, andps
by @sxyazi in https://github.com/sxyazi/yazi/pull/1903CODE_OF_CONDUCT.md
by @Perfectio07 in https://github.com/sxyazi/yazi/pull/1911noop
for spotters by @boydaihungst in https://github.com/sxyazi/yazi/pull/1924x-
prefix in mime-types by @sxyazi in https://github.com/sxyazi/yazi/pull/1927Error
userdata instead of a plain error code for I/O errors by @sxyazi in https://github.com/sxyazi/yazi/pull/1939mime
fetcher support - using user rules even during open or in watcher by @sxyazi in https://github.com/sxyazi/yazi/pull/1976assets
installation for theya pack
subcommand by @zooeywm in https://github.com/sxyazi/yazi/pull/1973ya emit
andya emit-to
subcommands to emit commands to a specified instance for execution by @sxyazi in https://github.com/sxyazi/yazi/pull/1979load
DDS event by @sxyazi in https://github.com/sxyazi/yazi/pull/1980--confirm
option to simplify theshell
command by @sxyazi in https://github.com/sxyazi/yazi/pull/1982revision
if the new file list is empty but the previous one was not by @sxyazi in https://github.com/sxyazi/yazi/pull/2003CSI 16 t
for certain terminals that do not supportTIOCGWINSZ
by @sxyazi in https://github.com/sxyazi/yazi/pull/2004PREVIEW.image_quality
for the default PDF previewer by @gaesa in https://github.com/sxyazi/yazi/pull/2006CWD
instead ofchdir
to avoid potential race conditions by @sxyazi in https://github.com/sxyazi/yazi/pull/2008backspace --under
didn't map UTF-8 character code points to byte indices by @sxyazi in https://github.com/sxyazi/yazi/pull/2010New Contributors
Full Changelog: sxyazi/yazi@v0.3.3...v0.4.0
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.