Path to this page:
Subject: CVS commit: pkgsrc/sysutils/yazi
From: pin
Date: 2024-12-08 22:06:45
Message id: 20241208210645.918F8FC1C@cvs.NetBSD.org
Log Message:
sysutils/yazi: update to 0.4.0
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
#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!
* Support for Transparent Image Preview
Transparent image previews are now supported in #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
#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 and \
light, to allow setting different flavors for light and dark modes.
* New ya emit and ya emit-to Subcommands to Emit Commands to a Specific Instance
Two new subcommands, ya emit and ya emit-to, have been added to the ya CLI tool \
in #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.
* Support Passing Arguments to Previewer/Preloader/Spotter/Fetcher
With #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 #1847, letting users \
know the current finding state with real-time feedback.
* Allow Disabling Certain Preset Keybinds with the New noop Virtual Command
A new noop command has been introduced in #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 #1583
* Prioritize Paths That Need to Be Processed First During Bulk Renaming
The bulk renaming feature now has smart conflict resolution, done in #1801 \
(thanks to @yw1ee).
* Fallback to CSI 16 t for Terminals That Don’t Support TIOCGWINSZ
All terminals on Windows (MS Terminal, WezTerm for Windows) do not support \
TIOCGWINSZ because Windows doesn't have ioctl.
Some terminals based on node-pty also don't support it (like Tabby, VSCode, \
Hyper, etc.).
#2004 falls back to CSI 16 t when TIOCGWINSZ is unavailable to provide better \
image size calculation for previews.
* 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 #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
fix: match icon by extension case-insensitive by @sxyazi in #1614
refactor: privatize url of the File by @sxyazi in #1619
perf: introduce URN to speed up large directory file sorting by @sxyazi in #1622
fix: set allow-passthrough always to all instead of on to prevent overriding \
a user setting with a higher priority all by @sxyazi in #1626
fix: set a dedicated Mimetype agency to reconcile regular files and search \
results by @sxyazi in #1627
feat: make the builtin extract plugin support compressed tarballs (*.tar.gz, \
*.tar.bz2, etc.) by @DirkFi in #1583
feat: support transparent image preview by @diegodorado in #1556
perf: avoid unnecessary allocations in base64 encoding of IIP by @sxyazi in #1639
perf: introduce URN to speed up large directory locating by @sxyazi in #1648
feat: support setting different input titles for create --dir by @Tyarel8 in \
#1650
perf: introduce URN to speed up large directory file updates by @sxyazi in #1652
refactor: ensure that each Url contains the full location information by \
@sxyazi in #1659
feat: support calling methods in builtin plugins with arbitrary types of \
arguments (self can now be omitted) by @sxyazi in #1666
feat: add the area() API for renderable elements by @sxyazi in #1667
fix: one file's mime-type changed multiple times without triggering a \
preview again by @sxyazi in #1682
fix: enter and leave commands should treat the search results as regular \
entities by @sxyazi in #1687
fix: magick previewer for multi-layered image files with -flatten argument \
by @v3natio in #1684
feat: improve jemalloc memory efficiency by @dm9pZCAq in #1689
feat: adapt for image preview in the Rio terminal by @raphamorim in #1690
fix: increase the revision when there is a change in Urn on updating by \
@sxyazi in #1691
feat: allow overriding and rewriting the sync methods of builtin plugins by \
@sxyazi in #1695
feat: add more context to error messages by @sxyazi in #1701
fix: replace control characters to printable characters in plain text \
preview by @sxyazi in #1704
feat: async micro task initialization error handling by @sxyazi in #1710
feat!: make backspace command not close the input even when value is empty \
by @XYenon in #1680
feat: reuse the code previewer seeking behavior for json, archive, and empty \
by @sxyazi in #1721
fix: temporarily disable TIFF decoding by @sxyazi in #1723
refactor: turn RectRef, PaddingRef, PositionRef into Rect, Padding, Position \
by @sxyazi in #1730
refactor: use Kgp instead of Kitty since "Kitty" is a terminal \
emulator not a protocol name by @sxyazi in #1732
fix: compositors not supported by Überzug Wayland layer, or WSL not with \
WezTerm should fallback to Chafa by @sxyazi in #1735
fix: clamp when seeking a non-zero unit between -1 and 1 by @sxyazi in #1736
fix: upserting operation should handle deleting in edge cases where the \
source and target URNs are different by @sxyazi in #1737
refactor: derive the Into<Opt> trait with procedural macros to avoid \
bloat by @sxyazi in #1742
perf: merge multiple file operations into one to greatly speed up updates in \
large directories by @sxyazi in #1745
fix!: introduce a new btime term to align ctime with Unix by @sxyazi in #1761
feat: yazi --debug supports detecting whether tmux is built with \
--enable-sixel by @sxyazi in #1762
refactor: simplify module exports by @sxyazi in #1770
refactor!: rename the term select to toggle to reserve select for future use \
by @sxyazi in #1773
feat!: add ui.Text, ui.Table, remove ui.Paragraph and ui.ListItem by @sxyazi \
in #1776
feat!: decouple ui.List, ui.Bar, ui.Border, and ui.Gauge from coordinates by \
@sxyazi in #1782
feat: prevent paths from being treated as options in file command by @gaesa \
in #1783
refactor: replace Metadata with Cha in the file scheduler to improve \
interoperability with yazi-fs by @sxyazi in #1785
feat: append the suffix to the end when generating unique filenames for \
directories, i.e., after not before the extension by @Saru2003 in #1784
fix: images were not cleared when closing a tab in front of the current tab \
by @sxyazi in #1792
feat: add a compatibility layer for ui.Paragraph to help users transition \
more smoothly to the new ui.Text by @sxyazi in #1794
refactor: remove migration code as it's no longer needed and causes errors \
by @sxyazi in #1795
feat: custom styles for the confirm component by @GrzegorzKozub in #1789
perf: apply rotate in place to images with orientation by @sxyazi in #1807
feat: add ICC profile to images for better color accuracy by @sxyazi in #1808
fix: use std copy function in a blocking thread by @sxyazi in #1817
feat: allow customizing Zoxide's FZF options with YAZI_ZOXIDE_OPTS by \
@sxyazi in #1822
fix: use a unique Id for each tab by @sxyazi in #1826
feat: launch from preset settings if the user's config cannot be parsed by \
@sxyazi in #1832
fix: reset image rendering and skip peeking if the TUI in the background by \
@sxyazi in #1833
refactor: add tests for Pattern::match_path by @sxyazi in #1837
perf: eliminate all memory reallocations during sorting by @sxyazi in #1846
feat: suggest keywords in the header if a finder is active by @sxyazi in #1847
fix: copy the CWD path regardless even if the directory is empty by @sxyazi \
in #1849
perf: introduce reflow for the rendering engine by @sxyazi in #1863
fix: wrong file list offset squeeze when scrolloff = 0 by @aidancz in #1866
refactor: use for loop to generate completions file by @Integral-Tech in #1869
fix: use complete rendering instead of partial rendering for no task \
progress report by @sxyazi in #1876
refactor: destructure tuples to enhance readability by @Integral-Tech in #1874
feat: new copy --separator option to allow specifying the path separator by \
@alan910127 in #1877
feat: allow disabling certain preset keybinds with the new noop virtual \
command by @sxyazi in #1882
feat: include package revision hash in ya pack --list by @yudai0804 in #1884
feat: add a new tab parameter for all tab-specific commands to specify which \
one by @sxyazi in #1885
feat: support searching with the alias fdfind if fd cannot be found by \
@Integral-Tech in #1889
feat!: deprecate --sync option for the plugin command by @sxyazi in #1891
perf: lazy load ui, ya, fs, and ps by @sxyazi in #1903
chore: add CODE_OF_CONDUCT.md by @Perfectio07 in #1911
feat: spotter by @sxyazi in #1802
feat: noop for spotters by @boydaihungst in #1924
fix: show "0/0" instead of "1/0" in empty directories by \
@Integral-Tech in #1925
fix!: eliminate the x- prefix in mime-types by @sxyazi in #1927
refactor: make error messages more user-friendly by @Integral-Tech in #1935
refactor: remove unnecessary UI element construction by @sxyazi in #1938
feat!: use an Error userdata instead of a plain error code for I/O errors by \
@sxyazi in #1939
feat: new log system by @sxyazi in #1945
perf: introduce copy-on-write for event system to eliminate all memory \
reallocations by @sxyazi in #1962
feat: true custom mime fetcher support - using user rules even during open \
or in watcher by @sxyazi in #1976
feat: support assets installation for the ya pack subcommand by @zooeywm in #1973
feat: new ya emit and ya emit-to subcommands to emit commands to a specified \
instance for execution by @sxyazi in #1979
feat: new load DDS event by @sxyazi in #1980
feat!: remove the meaningless --confirm option to simplify the shell command \
by @sxyazi in #1982
feat: move notification from top-right to bottom-right corner to avoid \
covering content as much as possible by @sxyazi in #1984
fix: propagate and update the directory node till its first parent when the \
files of a directory change by @sxyazi in #1987
fix: missing a repeek on unyanking files in the hovered folder by @sxyazi in \
#1988
fix: revise revision if the new file list is empty but the previous one was \
not by @sxyazi in #2003
feat: fallback to CSI 16 t for certain terminals that do not support \
TIOCGWINSZ by @sxyazi in #2004
docs: add README for default configuration files by @sxyazi in #2005
fix: respect PREVIEW.image_quality for the default PDF previewer by @gaesa \
in #2006
fix: introduce own CWD instead of chdir to avoid potential race conditions \
by @sxyazi in #2008
fix: backspace --under didn't map UTF-8 character code points to byte \
indices by @sxyazi in #2010
chore: bump version to 0.4.0 by @sxyazi in #2011
Files: