./sysutils/yazi, Blazing fast terminal file manager

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.4.1, Package name: yazi-0.4.1, Maintainer: pin

Blazing Fast Terminal File Manager.

Yazi (duck in Chinese) is a terminal file manager written in Rust, based on
non-blocking async I/O.
It aims to provide an efficient, user-friendly, and customizable file
management experience.


Master sites:

Filesize: 793.375 KB

Version history: (Expand)


CVS history: (Expand)


   2024-12-11 10:54:31 by pin | Files touched by this commit (3) | Package updated
Log message:
sysutils/yazi: update to 0.4.1

This is a quick patch version with 4 fixes:

    Fixed an issue where Yazi would freeze when waiting for terminal response, \ 
in old tmux versions (v3.2a or lower), or 2-layer nested terminal setup (tmux \ 
-> Neovim's :terminal -> Yazi).
    Fixed a bug in the Überzug++ backend where certain image dimension parsing \ 
failed, preventing images from displaying.
    Fixed a build failure for Android 32-bit architectures.
    Fixed an issue with the preset archive and json plugins not handling CRLF \ 
properly on Windows.

What's Changed

    fix: disable passthrough when the user launches Yazi in Neovim inside tmux \ 
by @sxyazi in #2014
    refactor: replace format! with concat! for string literals by @Integral-Tech \ 
in #2012
    fix: correctly handle CRLF on Windows in preset archive and json plugins by \ 
@sxyazi in #2017
    fix: failed to parse certain image dimensions for Überzug++ backend by \ 
@sxyazi in #2020
    chore: bump version to 0.4.1 by @sxyazi in #2022
   2024-12-08 22:06:45 by pin | Files touched by this commit (4) | Package updated
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
   2024-09-05 12:40:10 by pin | Files touched by this commit (3) | Package updated
Log message:
sysutils/yazi: update to 0.3.3

This version fixes a regression from the previous release that caused some keys \ 
to stop working.
And it resolves a long-standing issue where the file list couldn't refresh \ 
automatically in Windows WSL.

This version also introduces the following three new features:

- Git integration

Show the status of Git file changes as a linemode in the file list.

Feel free to use it and report any issues! For now, you need to manually install \ 
it (pretty easy to do) from \ 
https://github.com/yazi-rs/plugins/tree/main/git.yazi.
In the future, it will be included as one of Yazi's built-in plugins.

- size linemode supports displaying the number of files in a directory

#1591 updates the size linemode for directories to support displaying the number \ 
of files within the directory instead of leaving it blank as before.

If size information is available for the directory (triggered when sorting by \ 
size), that information will be shown as a priority.

- Windows Terminal support for image previews

Windows Terminal Preview v1.22.2362.0 now supports the Sixel image format. Yazi \ 
provided an adaptation for this in #1588 (Thanks @e82eric).

Note that Windows Terminal Preview v1.22.2362.0 has a bug that can cause Yazi to \ 
time out at startup. If you want to try this feature, make sure to apply the \ 
patch from microsoft/terminal#17833.

What's Changed
 - fix: keybindings disappear when mixing presets with a wrong filter condition \ 
by @sxyazi in #1568
 - fix: check compositor support status before using ueberzug wayland output by \ 
@taoky in #1566
 - fix: fallback to PollWatcher on WSL by @sxyazi in #1574
 - fix: continuous fetcher was not scheduled consecutively by @sxyazi in #1575
 - fix: Rail component should have a higher rendering priority by @sxyazi in #1585
 - perf: truncate long lists in confirm dialogs by @sxyazi in #1590
 - feat: size linemode supports showing the file count for directories by \ 
@sxyazi in #1591
 - feat: support image preview in Windows Terminal by @e82eric in #1588
 - chore: upgrade ratatui to 0.28.1 by @sxyazi in #1601
 - feat: add is_absolute, has_root, starts_with, ends_with, strip_prefix to Url \ 
Userdata by @sxyazi in #1605
 - feat: add dict_merge() function by @sxyazi in #1609
   2024-08-28 08:53:58 by pin | Files touched by this commit (3) | Package updated
Log message:
sysutils/yazi: update to 0.3.2

This version introduces two eagerly awaited new features: a brand-new confirm \ 
component, and word wrapping.

- Brand-new confirm component

  #1167 (thanks to @thelamb) introduces a brand-new confirm component that \ 
handles various confirmations (like trashing files, deleting files, overwriting \ 
files, and exit confirmations).
  The goal is to provide a safer and more efficient user experience:

   - Safer: Now, when you trash, delete, or overwrite files, it'll show a list \ 
of affected files for a second confirmation, instead of just the number of files \ 
like before.
   - More efficient: Confirmation now only requires pressing Enter once, instead \ 
of typing "y" and then pressing Enter. This should be a nice \ 
quality-of-life improvement.

- Word wrapping

  #1159 (thanks to @mskvsk and @ArtyomArtamonov) adds a new wrap option under \ 
[preview], which can be set to "no" or "yes". When set to \ 
"yes", word wrapping is enabled.

- Image preview performance optimization

  I've been working on optimizing Yazi's image preview speed, and with \ 
multi-threading, preloading, and a built-in image decoder, it should already be \ 
the fastest among all terminal file managers.

  However, I noticed some lag during fast scrolling and realized that at this \ 
point, the performance bottleneck isn't Yazi itself, but rather the terminal.
  When users scroll quickly, Yazi processes the images at a very high speed and \ 
sends them to the terminal, but the terminal can't keep up with processing them \ 
in time, which gives the impression of lag.
  In reality, it's not Yazi that's lagging, but the terminal.

  #1512 introduces a new image_delay configuration option to address this issue. \ 
When previewing images, it will wait at least image_delay milliseconds before \ 
starting to send the decoded image data to the terminal.

  This gives the terminal a breather and creates the perception that the file \ 
list is still scrolling smoothly.
  Additionally, this can reduce the CPU overhead caused by immediate image \ 
decoding during fast scrolling, thereby extending battery life.

- New --dir option for the create command

 The create command is designed to support creating both files and directories \ 
(with / or \ at the end to indicate a directory).

 However, this isn't user-friendly for those who need to create many directories \ 
but few files, as they always have to type / or \.

 #1505 (thanks to @abstrakct) introduces a new --dir option that explicitly \ 
specifies creating directories without needing to type / or \ every time.

What's Changed
    fix: overlong single-line text containing escape sequences was not being \ 
properly escaped by @sxyazi in #1497
    fix: upgrade ansi-to-tui to 5.0.0-rc.1 to resolve ratatui version conflict \ 
by @sxyazi in #1499
    feat: add --dir option to create command by @abstrakct in #1505
    feat: add ext() method to Url userdata by @sxyazi in #1528
    feat: new confirm component by @thelamb in #1167
    chore: set MACOSX_DEPLOYMENT_TARGE to 10.11 to make the binary compatible \ 
with old macOS by @hronro in #1532
    fix: use a different cache directory for each user to avoid permission \ 
issues by @sxyazi in #1541
    fix: wait till mimetype is resolved to avoid flickering by @sxyazi in #1542
    docs: add links to all terminal emulators by @nyurik in #1538
    feat: make the builtin code previewer handle invalid carriage return chars \ 
and binary streams better by @sxyazi in #1550
    perf: only scan the first 1024 bytes to detect if it's binary, apply \r \ 
fixes only to content within the visible range, avoid unnecessary allocations \ 
during natural sorting by @sxyazi in #1551
    feat: word wrapping in builtin code preview by @ArtyomArtamonov in #1159
    fix: filter out the which candidates that overlap with longer key chords by \ 
@sxyazi in #1562
    fix: DECSET and DECRQM tmux passthrough by @sxyazi in #1564
   2024-08-16 05:36:40 by pin | Files touched by this commit (4) | Package updated
Log message:
sysutils/yazi: update to 0.3.1

This is a quick patch release that addresses several issues introduced in \ 
version 0.3.

Additionally, here are some notable new features included in this version:

    A loading state indicator has been added for slow directories (usually \ 
network-mounted points).
    Support for opening multiple tabs at startup: yazi /dir1 /dir2/file will \ 
open two tabs, one in /dir1 and another in /dir2, with file selected.
    Allows the use of shorthand for keybindings, such as writing <C-X> \ 
instead of <C-S-x>.
    A new --cursor option has been added to the shell command to specify the \ 
cursor position. For example, shell 'zip -r .zip "$0"' --cursor=7 \ 
places the cursor before .zip.
    A new previewer has been added for previewing virtual files in the /proc \ 
directory.
    Support for F13 - F19 keys.
    A nightly build that uses the latest Yazi source code from the past 6 hours, \ 
and a new yazi-nightly-bin AUR package for Arch Linux users (Thanks @latipun7)

What's Changed

    fix: android building error caused by trash crate by @Xerxes-2 in #1393
    feat: add filtering tip in help component by @MarkZaytsev in #1361
    feat: add title_format manager config option by @chriszarate in #1281
    chore: move common dependencies to workspace Cargo.toml by @karimElmougi in #1388
    fix: precache for images with alpha by @Vikdos in #1414
    fix: preview files containing special \x1b characters as plain text and \ 
escape by @Xerxes-2 in #1395
    feat: add support portrait orientation preview for EXIF image by @TobisLee \ 
in #1412
    chore: update snap to core24 by @gapplef in #1415
    feat: new search_do command to make it easier to achieve a flat view by \ 
@sxyazi in #1431
    fix: newly created directories with the same name causing a false positive \ 
in directory loading optimization due to having the same modification time by \ 
@sxyazi in #1434
    refactor(nix): home keeping by @isabelroses in #1380
    fix(nix): pin rust-overlay to workaround cargo-c by @isabelroses in #1442
    fix: directory loading status by @sxyazi in #1439
    feat: support F13 - F19 keys by @sxyazi in #1446
    feat: allows shorthand forms like <C-S-x> as <C-X> by @sxyazi in \ 
#1448
    feat: add cursor option to the shell command by @HE7086 in #1422
    fix: 7zip shows different error messages for wrong password by @sxyazi in #1451
    refactor(nix)!: update dependencies by @XYenon in #1456
    fix: loss of order in Lua sequence table for inter-thread data exchange by \ 
@sxyazi in #1457
    feat: start with multiple tabs with different paths by @coolkiid in #1443
    fix: close stdin before waiting for child process by @sxyazi in #1464
    fix: DDS static messages only work when at least two instances are running \ 
by @sxyazi in #1467
    feat: add status() method to Command by @sxyazi in #1473
    feat: new empty previewer for empty and /proc files by @sxyazi in #1482
    feat: add hidden file type to is rule by @sxyazi in #1483
    fix: replace # with : to resolve the problem where certain shells recognize \ 
it as a special character by @sxyazi in #1490
    feat: new tab DDS event on tab switch by @mikavilpas in #1474
    feat: add keybinding for the hardlink command by @ahanniga in #1461
   2024-08-06 18:51:14 by pin | Files touched by this commit (1)
Log message:
sysutils/yazi: fix broken install

Add forgotten PLIST
   2024-08-01 14:53:02 by pin | Files touched by this commit (4) | Package updated
Log message:
sysutils/yazi: update to 0.3.0

After three months of development, I'm excited to announce the release of Yazi \ 
0.3 today!
This version brings a host of new features and bug fixes. Thank you to every \ 
contributor for making Yazi better and better!

This is a breaking change release, so please make sure to read:

    Migrating to Yazi v0.3.0, https://github.com/sxyazi/yazi/issues/1046
    Packaging, https://github.com/sxyazi/yazi/issues/1046#issuecomment-2255993749
    Lua API breaking changes in Yazi v0.3, \ 
https://github.com/sxyazi/yazi/issues/1046#issuecomment-2140320472

- Mouse support

The plugin system now includes five new APIs for each component - click, scroll, \ 
touch, move, and drag to handle mouse events.
These APIs come with default implementations to cover common operations.

This also allows plugin developers to extend mouse behavior and create any \ 
functionality they desire.

See #1038 for more info, thanks to @qsdrqs for his work on this!

- New builtin extract plugin

#1321 adds a builtin extract plugin for decompressing archives, with these features:
   - Interactive password input.
   - Smart output directory selection with auto renaming.
   - Supports decompressing multiple files at once.
   - Fully async, decompression tasks can queue up and run in the background.

- Enhanced file preview

Yazi 0.3 now supports the following new format to preview:
   - Fonts
   - SVGs
   - HEIC files
   - JPEG XL files

This feature requires the optional dependency ImageMagick to enable it.

- Package manager

Yazi 0.3 introduces the new ya pack subcommand for package management, making \ 
plugin and theme updates more convenient.
This is especially important as the plugin system is not yet stable, so \ 
providing users with the ability to easily keep everything up to date is \ 
necessary.

- Redesigned Icons

#1086 redesigns the icons, bringing the following improvements:

   - Improved Matching Performance: The new dirs, files, and exts compile the \ 
icon rules into a HashMap at startup.
     This allows most icon matches to be completed with O(1) complexity, \ 
significantly enhancing performance.
   - Built-in nvim-web-devicons: This includes a richer and ready-to-use set of \ 
icons out of the box.
   - Enhanced Icon Styling: Each icon now supports specifying both dark and \ 
light colors (currently only fg_dark is used).
     In the future, the terminal color will automatically choose the appropriate \ 
color. This was added as part of #988.
   - Enhanced is Function: The original is functionality has been reimplemented \ 
as conds to allow more complex conditional expressions, such as cond = \ 
"!dir & exec".

- Significant archive preview performance improvements

#1220 reimplements archive previewing to be streamed. This means only a small \ 
amount of necessary data needs to be read to display the preview immediately,
rather than waiting for all the data to be returned and parsed as before.

Additionally, by replacing lsar with 7zip, the preview speed has been further \ 
improved. The new implementation also introduces two new features: icon display \ 
and file size display.

- Other improvements

These are a few of my favorite features. For a complete list of improvements in \ 
Yazi 0.3, check out the full changelog.

What's Changed
    feat: support yazi-cli for Nix flake by @XYenon in #944
    feat: allow building with the system Lua by @Kladki in #943
    feat: support expanding Windows paths like "D:" that only have a \ 
drive letter but no root by @sxyazi in #948
    fix: always create XDG cache directory even if user has set a custom one by \ 
@sxyazi in #956
    feat: support previewing files containing non-UTF-8 characters by @sxyazi in #958
    fix: correct the glob pattern for the icons to fit the new matching \ 
algorithm by @sxyazi in #959
    feat: add *.opus file icon by @Brixy in #967
    fix: improve accessibility by avoiding hex color code for white by @Brixy in #968
    fix: avoiding duplicate candidates in the which component by @mikavilpas in #975
    feat: detect terminal type in tmux with CSI sequence in passthrough mode by \ 
@sxyazi in #977
    feat: add more rules to [filetype] and [icon] by @Brixy in #966
    feat: re-enable the file created attribute by @rafi in #987
    feat: add --force-window option to mpv by @GOWxx in #998
    feat: close confirmation prompts and exit automatically when the ongoing \ 
task gone by @sxyazi in #997
    fix: notification title width does not include the width of the icon by \ 
@sxyazi in #1000
    feat: support cargo binstall yazi-fm and cargo binstall yazi-cli by \ 
@slowsage in #1003
    feat: yazi --debug shows ya version in its output by @mikavilpas in #1005
    feat: add git commit hash to ya --version by @fzdwx in #1006
    feat: package manager by @sxyazi in #985
    feat: ya pack displays help if no arguments are given by @mikavilpas in #1012
    feat: new --args parameter for fd an rg search by @LatentDream in #1013
    fix: correct wasm target condition by @itsjunetime in #1018
    fix: broaden file watcher event types to accommodate permission changes on \ 
certain platforms by @sxyazi in #1024
    feat: add new debounce option to ya.input() API by @sxyazi in #1025
    fix: recognize TERM=rxvt-unicode-256color by @dtolnay in #1027
    feat: support stdin and pipe for Child API by @sxyazi in #1033
    ci: consistently enforce Lua coding style by @mikavilpas in #1029
    ci: fix cargo unit tests execution by @clispios in #1041
    refactor: eliminate exec by @sxyazi in #1045
    feat: use Ctrl-c instead of Ctrl-q as the universal close key for all \ 
components by @sxyazi in #1047
    fix: remove ignore options from rg and fd search by @chriszarate in #1043
    feat: font preview by @sxyazi in #1048
    docs: add CONTRIBUTING.md by @johan-naizu in #1052
    feat: prefetcher by @sxyazi in #1061
    fix: ePUB file mime-type matching for the opener rule by @sxyazi in #1063
    fix: cursor gets out of sync occasionally at image previewing through IIP \ 
under tmux by @sxyazi in #1070
    feat: support Super/Command/Windows key notation D- by @sxyazi in #1069
    fix: remove the default keybinding for going to the temporary directory by \ 
@sxyazi in #1073
    feat!: redesign icons by @sxyazi in #1086
    fix: Sixel support from certain st forks cannot be detected by @sxyazi in #1094
    feat: support case insensitive special keys in keymappings by @mikavilpas in \ 
#1082
    refactor!: v0.3 API changes by @sxyazi in #1108
    feat: add pack --list subcommand to Ya CLI by @lpnh in #1110
    feat!: DDS client-server version check by @sxyazi in #1111
    feat: support mouse event by @qsdrqs in #1038
    feat: add some dependency version information to yazi --debug by @omagdy7 in \ 
#1112
    fix: block SIGINT signal from the spawned subprocess by @sxyazi in #1131
    feat: support completely disabling mouse with mouse_events=[]; add new \ 
cursor_blink to control cursor style of input components by @sxyazi in #1139
    fix: different filenames should be treated as the same file on \ 
case-insensitive file systems by @sxyazi in #1151
    feat: support ya sub subcommand for the Ya CLI by @mikavilpas in #1004
    fix: file watcher didn't handle realname resolution used for \ 
case-insensitive file systems correctly by @sxyazi in #1179
    feat: include file filter state in the header by @thelamb in #1182
    feat!: include the sender ID in static messages by @sxyazi in #1172
    fix: accommodate all hover events for DDS by @Xerxes-2 in #1187
    feat: support x-ndjson mime-type for JSON files by @sxyazi in #1190
    fix: suppress warnings for different name representations of the same file \ 
in the case-insensitive file system when renaming by @Xerxes-2 in #1185
    fix: ueberzug image adapter should respect the user's max_width and \ 
max_height settings by @sxyazi in #1200
    fix: magick plugin not working properly by @sxyazi in #1213
    perf!: reimplement and significantly speed up archive previewing by @sxyazi \ 
in #1220
    feat: add --hovered option to the rename and remove commands by @hankertrix \ 
in #1227
    feat: support right-click to open files by @sxyazi in #1232
    feat: support AVIF image preview by @sxyazi in #1249
    feat: ownership linemode by @AidanV in #1238
    feat: add nlink property to the Cha plugin API by @Ape in #1279
    feat: add random option to the sort command by @zooeywm in #1291
    feat: show files with inaccessible metadata by @Ape in #1275
    feat: help users migrate shell key bindings to v0.3 by @mikavilpas in #1304
    feat: allow setting YAZI_ID as a command line argument by @mikavilpas in #1305
    refactor: reimplement the signal system by @sxyazi in #1307
    fix: destroy term before stopping signals by @sxyazi in #1310
    fix: add use-dev-tty to fix piping to Yazi on macOS by @joshuali925 in #1317
    refactor: fix Clippy warnings by @Ape in #1312
    feat: add Winget publishes to CI/CD by @MoaidHathot in #1299
    feat: add support for %@ argument extension on Windows to align with Unix \ 
platforms by @sxyazi in #1319
    fix: wrong directory loading optimization condition by @sxyazi in #1331
    feat: make F1 also show the help menu by @CyberShadow in #1336
    fix: help menu multi-line text rendering by @sxyazi in #1347
    fix: can't rewatch a directory that has been deleted once before by \ 
@leihaojun in #1335
    fix(nix): add outputHashes for notify git dependency by @uncenter in #1373
    feat(nix): set VERGEN_* build env vars by @uncenter in #1375
    refactor(nix): cleanup and switch to nixfmt-rfc-style by @uncenter in #1376
    chore: bump version to 0.3 by @sxyazi in #1374
   2024-04-24 08:51:22 by pin | Files touched by this commit (3) | Package updated
Log message:
sysutils/yazi: update to 0.2.5

This version introduces a new DDS (Data Distribution Service) aimed at
facilitating communication and state synchronization between multiple Yazi
instances, as well as state persistence.

It's built on a client/server architecture (without the need for running
additional server processes), and deeply integrates with a Lua-based
publish-subscribe model.

It also provides a set of new command-line options for interaction,
such as ya pub, ya pub-static, yazi --local-events, yazi --remote-events,
and currently used for:
 - Cross-process yank-paste
 - Change Yazi's CWD to PWD on subshell exit
 - Integration with the new yazi.nvim plugin: subscribing to file deletion,
   movement, and renaming events through yazi --local-events to keep Neovim's
   buffer/LSP in sync
 - bookmarks.yazi plugin: Saving bookmarks added by the user through the
   persistence feature provided by DDS

Performance optimizations
 - Reduced CPU overhead during icon matching: Icon matching accounted for 35.6%
   of CPU time during rendering, and by changing the matching algorithm, this
   proportion has been reduced by ~10%
 - Caching of each matched icon to avoid repeated calculations: By caching
   icons, further reductions in CPU usage for matching are achieved, as only a
   few new files that appear when scrolling through panes need to be matched
 - Re-implemented the file watcher in an async way: This is the only sync I/O
   operation besides configuration initialization at startup, which occurs
   during cd and scrolling through the file list. For certain slow external
   devices, Yazi would experience noticeable lagginess, which has now been
   addressed, see #877 for more details

Feature enhancements
 - Re-implemented fzf and zoxide as plugins for better flexibility: fzf and
   zoxide have added more runtime error handling. zoxide now supports the new
   update_db feature, which automatically adds Yazi's CWD to zoxide when
   navigating. To enable it, add the following to your init.lua:

   require("zoxide"):setup {
       update_db = true,
   }

 - Maintain the original modification time when copying files
 - Support smart case for cd path completion
 - Add placeholder messages when there are no files in the directory
 - Preserve the order of file selection when performing open, shell, or bulk
   rename on multiple selected files
 - Prevent copying a directory to itself

The plugin system has also seen some improvements:
 - ya.dbg() and ya.err() now support printing any type of data
 - New ps API as a carrier for DDS interaction
 - ya.manager_emit() now supports passing Url type

What's Changed
 - fix: use BTreeSet for selected files to maintain order by @sxyazi in #799
 - refactor: wrap Opener with Cow to avoid unnecessary memory reallocations
   when opening files by @sxyazi in #805
 - fix: respond to the SIGTERM signal even when Yazi is in the background and
   has passed control of the terminal to the spawned process by @sxyazi in #797
 - refactor: switch to stderr by @sxyazi in #819
 - feat: fix all dependencies to specific version numbers to allow non---locked
   builds by @sxyazi in #821
 - fix: adjust calculation for number of lines in a notification message
   by @Rolv-Apneseth in #828
 - fix: disable ANSI encoding for formatted events for the tracing_subscriber
   to clean up the logs by @Rolv-Apneseth in #832
 - feat: enhance the ya.dbg() and ya.err() debugging functions
   by @sxyazi in #835
 - perf: accelerate kitty graphics protocol encoding by avoiding string
   reallocation by @sxyazi in #837
 - fix: mime-type for xz archives by @sxyazi in #841
 - feat: time-based selection order preservation by @sxyazi in #843
 - feat: add support for YAZI_FILE_ONE to the built-in file previewer
   by @sxyazi in #846
 - fix: Windows cmd.exe not responding to correct CSI sequences due to ConPTY
   by @sxyazi in #845
 - perf: add BufWriter to Stderr to avoid frequent system calls and increase
   rendering frame rate by @sxyazi in #849
 - feat: DDS (Data Distribution Service) by @sxyazi in #826
 - perf: port require() and ya.sync() to Rust to avoid plugin information
   initialization process by @sxyazi in #853
 - feat: readable toml parsing error by @SoloJacobs in #854
 - feat: add a new sender property to the DDS payload by @sxyazi in #855
 - feat: the cd event in DDS will now also be triggered when the tab is first
   created by @sxyazi in #861
 - feat: detect CSI u through Stderr to allow using Stdout as the carrier of DDS
   payload without an ANSI sequence response timeout by @sxyazi in #867
 - fix: a race condition in DDS static messages sent as internal events
   by @sxyazi in #868
 - feat: add is_exec and is_sticky to Cha bindings by @sxyazi in #875
 - perf: re-implement file watcher in an async way by @sxyazi in #877
 - fix: CJK text rendering issue where the input popup component overlaps with
   images by @sxyazi in #879
 - feat: re-implement fzf as a built-in plugin by @sxyazi in #884
 - feat: add new --orphan option to the shell command by @sxyazi in #887
 - fix: file list expansion arguments ($@, $*) of shell command under opener
   rules are out of order by @sxyazi in #890
 - feat: add new move, trash, and delete event kinds to DDS
   by @mikavilpas in #880
 - feat: add YAZI_ID environment variable by @sxyazi in #895
 - feat: when there are no files in the list, add a placeholder message
   by @sxyazi in #900
 - feat: add loading state to directories by @sxyazi in #904
 - feat: default "Reveal" opener for Linux by @sxyazi in #907
 - perf: switch to globset to reduce CPU time spent on matching icons
   by @sxyazi in #908
 - feat: trigger path completion with both / and \ on Windows
   by @ndtoan96 in #909
 - feat: add a new ya send command to allow standalone client processes to
   communicate with DDS from the command line by @sxyazi in #913
 - feat: allow creating a tab with the startup directory when the tab_create
   command is called without specifying a path parameter by @sxyazi in #917
 - feat: generate autocomplete script for ya command by @sxyazi in #919
 - feat: allow opening interactively with the --chosen-file flag
   by @mikavilpas in #920
 - fix: rollback ratatui to v0.26.1 to avoid panicking by @sxyazi in #922
 - feat: expand the types supported by the event system by @sxyazi in #923
 - feat: change status bar percent at 100 to Bot by @AidanV in #930
 - fix: prevent pasting a directory into itself by @Rolv-Apneseth in #925
 - feat: preserve files' modified at timestamp while copying
   by @Rolv-Apneseth in #926
 - perf: cache each file's icon to avoid redundant calculations at rendering
   by @sxyazi in #931
 - feat: split ya send into ya pub and ya pub-static to make it more ergonomic
   by @sxyazi in #933
 - feat: new builtin session.lua plugin by @sxyazi in #940