Subject: CVS commit: pkgsrc/sysutils/yazi
From: pin
Date: 2024-04-24 08:51:22
Message id: 20240424065122.68A09FA2C@cvs.NetBSD.org

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

Files:
RevisionActionfile
1.11modifypkgsrc/sysutils/yazi/Makefile
1.9modifypkgsrc/sysutils/yazi/cargo-depends.mk
1.10modifypkgsrc/sysutils/yazi/distinfo