ya env output
Yazi
Version: 26.5.6 (e58022b 2026-07-28)
Debug : false
Triple : aarch64-apple-darwin (macos-aarch64)
Rustc : 1.97.1 (8bab26f4 2026-07-14)
Backtrace: None
Ya
Version: 26.5.6 (e58022b 2026-07-28)
Debug : false
Triple : aarch64-apple-darwin (macos-aarch64)
Rustc : 1.97.1 (8bab26f4 2026-07-14)
Config
Init : $HOME/.config/yazi/init.lua (1232 chars)
Yazi : $HOME/.config/yazi/yazi.toml (2440 chars)
Keymap : $HOME/.config/yazi/keymap.toml (1902 chars)
Theme : $HOME/.config/yazi/theme.toml (26 chars)
VFS : $HOME/.config/yazi/vfs.toml (No such file or directory (os error 2))
Package : $HOME/.config/yazi/package.toml (1147 chars)
Dark/light flavor: ArcSwapAny("dracula") / ArcSwapAny("")
Emulator
TERM : Some("xterm-256color")
TERM_PROGRAM : Some("Apple_Terminal")
TERM_PROGRAM_VERSION: Some("487")
Brand.from_env : Some(Apple)
Emulator.detect : Emulator { kind: Left(Apple), version: "", light: false, csi_16t: (0, 0), force_16t: false }
Adapter
Adapter.matches : Chafa
Dimension.available: Dimension { cols: 202, rows: 48, width: 1420, height: 821 }
Desktop
XDG_SESSION_TYPE : None
WAYLAND_DISPLAY : None
DISPLAY : None
NIRI_SOCKET : None
SWAYSOCK : None
HYPRLAND_INSTANCE_SIGNATURE: None
WAYFIRE_SOCKET : None
SSH
shared.in_ssh_connection: false
WSL
WSL: false
Variables
SHELL : Some("/bin/zsh")
EDITOR : Some("nano")
VISUAL : None
YAZI_FILE_ONE : None
YAZI_CONFIG_HOME : None
YAZI_ZOXIDE_OPTS : None
SSH_AUTH_SOCK : Some("<redacted>")
FZF_DEFAULT_OPTS : Some("--ansi --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4")
FZF_DEFAULT_COMMAND: Some("fd --type file --follow --hidden --exclude .git --color=always")
Text Opener
default : Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true }))
block-create: Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true }))
block-rename: Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true }))
Multiplexers
TMUX : false
tmux version : tmux 3.7b
tmux build flags : enable-sixel=Unsupported
ZELLIJ_SESSION_NAME: None
Zellij version : 0.44.3
Dependencies
file : 5.41
ueberzugpp : No such file or directory (os error 2)
ffmpeg/ffprobe: 8.1.2 / 8.1.2
pdftoppm : No such file or directory (os error 2)
magick : 7.1.2-27
fzf : 0.74.1
fd/fdfind : 10.4.2 / No such file or directory (os error 2)
rg : 15.2.0
chafa : No such file or directory (os error 2)
zoxide : 0.10.0
7zz/7z : No such file or directory (os error 2) / No such file or directory (os error 2)
resvg : 0.47.0
jq : 1.7.1
Clipboard
wl-copy/paste: No such file or directory (os error 2) / No such file or directory (os error 2)
xclip : No such file or directory (os error 2)
xsel : No such file or directory (os error 2)
Routine
`file -bL --mime-type`: text/plain
Please describe the problem you're trying to solve
ya pkg upgrade updates unpinned packages to the latest repository commit. Some plugins publish stable SemVer tags, but users cannot automatically follow only those releases. Pinning with =rev disables automatic upgrades entirely.
Would you be willing to contribute this feature?
Would you be willing to contribute this feature?
Describe the solution you'd like
Add an optional version policy, for example:
[[plugin.deps]]
use = "owner/plugin"
version = "*"
rev = "0573024"
hash = "d81b64a39432fcd6224cd75d296e7510"
Proposed behavior:
- No
version: retain the current latest-commit behavior.
version = "*": use the latest stable SemVer tag.
- No matching tags: fall back to the latest commit instead of failing.
ya pkg install: restore the locked rev and hash.
ya pkg upgrade: re-resolve the policy and update the lock.
- Existing
=rev pins remain unchanged.
Additional context
This follows lazy.nvim's versioning model, whose implementation falls back to the branch commit when no suitable tag exists.
Unlike #2579, this requires no compatibility matrix or Yazi-version-based selection. Unlike #3758, rev and hash remain locked in package.toml, preserving reproducible installs.
Checklist
ya envoutputYazi Version: 26.5.6 (e58022b 2026-07-28) Debug : false Triple : aarch64-apple-darwin (macos-aarch64) Rustc : 1.97.1 (8bab26f4 2026-07-14) Backtrace: None Ya Version: 26.5.6 (e58022b 2026-07-28) Debug : false Triple : aarch64-apple-darwin (macos-aarch64) Rustc : 1.97.1 (8bab26f4 2026-07-14) Config Init : $HOME/.config/yazi/init.lua (1232 chars) Yazi : $HOME/.config/yazi/yazi.toml (2440 chars) Keymap : $HOME/.config/yazi/keymap.toml (1902 chars) Theme : $HOME/.config/yazi/theme.toml (26 chars) VFS : $HOME/.config/yazi/vfs.toml (No such file or directory (os error 2)) Package : $HOME/.config/yazi/package.toml (1147 chars) Dark/light flavor: ArcSwapAny("dracula") / ArcSwapAny("") Emulator TERM : Some("xterm-256color") TERM_PROGRAM : Some("Apple_Terminal") TERM_PROGRAM_VERSION: Some("487") Brand.from_env : Some(Apple) Emulator.detect : Emulator { kind: Left(Apple), version: "", light: false, csi_16t: (0, 0), force_16t: false } Adapter Adapter.matches : Chafa Dimension.available: Dimension { cols: 202, rows: 48, width: 1420, height: 821 } Desktop XDG_SESSION_TYPE : None WAYLAND_DISPLAY : None DISPLAY : None NIRI_SOCKET : None SWAYSOCK : None HYPRLAND_INSTANCE_SIGNATURE: None WAYFIRE_SOCKET : None SSH shared.in_ssh_connection: false WSL WSL: false Variables SHELL : Some("/bin/zsh") EDITOR : Some("nano") VISUAL : None YAZI_FILE_ONE : None YAZI_CONFIG_HOME : None YAZI_ZOXIDE_OPTS : None SSH_AUTH_SOCK : Some("<redacted>") FZF_DEFAULT_OPTS : Some("--ansi --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4") FZF_DEFAULT_COMMAND: Some("fd --type file --follow --hidden --exclude .git --color=always") Text Opener default : Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true })) block-create: Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true })) block-rename: Some(OpenerRuleArc(OpenerRule { id: Id(3), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: true })) Multiplexers TMUX : false tmux version : tmux 3.7b tmux build flags : enable-sixel=Unsupported ZELLIJ_SESSION_NAME: None Zellij version : 0.44.3 Dependencies file : 5.41 ueberzugpp : No such file or directory (os error 2) ffmpeg/ffprobe: 8.1.2 / 8.1.2 pdftoppm : No such file or directory (os error 2) magick : 7.1.2-27 fzf : 0.74.1 fd/fdfind : 10.4.2 / No such file or directory (os error 2) rg : 15.2.0 chafa : No such file or directory (os error 2) zoxide : 0.10.0 7zz/7z : No such file or directory (os error 2) / No such file or directory (os error 2) resvg : 0.47.0 jq : 1.7.1 Clipboard wl-copy/paste: No such file or directory (os error 2) / No such file or directory (os error 2) xclip : No such file or directory (os error 2) xsel : No such file or directory (os error 2) Routine `file -bL --mime-type`: text/plainPlease describe the problem you're trying to solve
ya pkg upgradeupdates unpinned packages to the latest repository commit. Some plugins publish stable SemVer tags, but users cannot automatically follow only those releases. Pinning with=revdisables automatic upgrades entirely.Would you be willing to contribute this feature?
Would you be willing to contribute this feature?
Describe the solution you'd like
Add an optional version policy, for example:
Proposed behavior:
version: retain the current latest-commit behavior.version = "*": use the latest stable SemVer tag.ya pkg install: restore the lockedrevandhash.ya pkg upgrade: re-resolve the policy and update the lock.=revpins remain unchanged.Additional context
This follows lazy.nvim's versioning model, whose implementation falls back to the branch commit when no suitable tag exists.
Unlike #2579, this requires no compatibility matrix or Yazi-version-based selection. Unlike #3758,
revandhashremain locked inpackage.toml, preserving reproducible installs.Checklist