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:
RevisionActionfile
1.16modifypkgsrc/sysutils/yazi/Makefile
1.3modifypkgsrc/sysutils/yazi/PLIST
1.14modifypkgsrc/sysutils/yazi/cargo-depends.mk
1.15modifypkgsrc/sysutils/yazi/distinfo