v25.2.7
sxyazi/yaziv25.2.7Feb 7, 2025by github-actions[bot]
AI Summary
This release simplifies shell and plugin commands, introduces the `mount.yazi` plugin, and adds new Vim motions and the `ya.confirm()` API to the input component.
Key Highlights
- New `mount.yazi` plugin for disk management
- Simplified `shell` and `plugin` commands using `--` end-of-options marker
- Replace mode and Vim motions (W, E, B, ^, _) for inputs
- New `ya.confirm()` API
Breaking Changes
- `ya.md5()` deprecated in favor of `ya.hash()`
- Plugin entry file `init.lua` deprecated in favor of `main.lua`
- `arrow -99999999` and `arrow 99999999` deprecated
- `--args` option in `plugin` command deprecated
- Numeric return value of preloader deprecated
New Features
- Package manager supports `-d` delete and multiple package management
- Local tmux image preview over SSH
- New `@since` plugin annotation
Full Release Notes
## Deprecated
- `ya.md5()` has been deprecated in favor of the new `ya.hash()`, in https://github.com/sxyazi/yazi/pull/2168
- The plugin entry file `init.lua` has been deprecated in favor of the new `main.lua`, in https://github.com/sxyazi/yazi/pull/2168
- `arrow -99999999` and `arrow 99999999` have been deprecated in favor of the new `arrow top` and `arrow bot`, in https://github.com/sxyazi/yazi/pull/2294
- The `--args` option in the `plugin` command has been deprecated in favor of a new 2nd positional parameter, in https://github.com/sxyazi/yazi/pull/2299
- The numeric return value of the preloader has been deprecated in favor of a new boolean return value, in https://github.com/sxyazi/yazi/pull/2253
## The [`mount.yazi`](https://github.com/yazi-rs/plugins/tree/main/mount.yazi) Plugin
For a long time, I've been receiving requests from users for a mount manager, but never had the time to finish it. But now — it's here!
[`mount.yazi`](https://github.com/yazi-rs/plugins/tree/main/mount.yazi) provides disk mount, unmount, and eject functionality:
https://github.com/user-attachments/assets/b97b8156-e7ca-490c-88a2-8624f4190b29
Done in https://github.com/sxyazi/yazi/pull/2199.
## Simplification of `shell` and `plugin` commands
With https://github.com/sxyazi/yazi/pull/2298, you can now write shell scripts directly after `--` (end of options marker). Everything after `--` will be treated as raw text, so no more escaping is required, greatly simplifying the writing of complex commands.
For example, previously, a simple `echo "hello 'world'"` would look like this:
```toml
[[manager.prepend_keymap]]
on = "<C-e>"
run = '''
shell --block 'echo "hello '\''world'\''"'
'''
```
This resulted in nested quotes, which was error-prone and unintuitive.
Now, you can directly include the entire shell script as plain text after `--` without any escaping:
```toml
[[manager.prepend_keymap]]
on = "<C-e>"
run = '''
shell --block -- echo "hello 'world'"
'''
```
Similarly, with https://github.com/sxyazi/yazi/pull/2299, the `plugin` command usage has been simplified as well. For instance:
```toml
[[manager.prepend_keymap]]
on = "<C-e>"
run = "plugin search --args='\'hello world\''"
```
Can now be written as:
```toml
[[manager.prepend_keymap]]
on = "<C-e>"
run = "plugin search -- 'hello world'"
```
## Replace Mode and Vim Motions (`W`, `E`, `B`, `^`, `_`) for Inputs
The Input component now supports replace mode and several new Vim motions, including:
- `W`: Move forward to the start of the next WORD
- `E`: Move forward to the end of the current or next WORD
- `B`: Move back to the start of the current or previous WORD
- `^`: Move to the first non-whitespace character
- `_`: Move to the first non-whitespace character
Thanks to @dxrcy for the work in https://github.com/sxyazi/yazi/pull/2143!
## Package Manager Enhancements
The package manager now supports the following new features:
- `ya pack -d` to delete a package (thanks @MrAsler, https://github.com/sxyazi/yazi/pull/2181)
- Support for adding and removing multiple packages with a single command (thanks @evpeople, https://github.com/sxyazi/yazi/pull/2257)
## Support Local `tmux` Image Preview Over SSH
Now, when you start tmux locally, connect to a remote SSH session, and run Yazi on the remote host, you'll get image preview support out of the box.
Done in https://github.com/sxyazi/yazi/pull/2229.
## New `@since` Plugin Annotation to Specify the Minimum Supported Yazi Version
You can now **optionally** specify the minimum supported Yazi version in your plugin:
```lua
--- @since 25.2.7
return {
entry = function() end
}
```
If specified, and the user's Yazi version is lower than the given version, they will receive an error message preventing the plugin from running accidentally.
Done in https://github.com/sxyazi/yazi/pull/2290
## New `ya.confirm()` API
The new `ya.confirm()` API allows you to show a confirmation prompt to the user:
```lua
local answer = ya.confirm {
pos = { "center", w = 40, h = 10 },
title = "Test",
content = "Hello, World!",
}
```
You can also apply a UI element to the title and content to customize the appearance:
```lua
local answer = ya.confirm {
pos = { "center", w = 40, h = 10 },
title = ui.Line("Test"):fg("yellow"):bold(),
content = ui.Text("Hello, World!"):bg("red"):fg("#ffffff"),
}
```