Releases: sxyazi/yazi
v0.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:
-
dds-session.mp4
-
Change Yazi's
CWD
toPWD
on subshell exitdds-cd.mp4
-
Integration with the new
yazi.nvim
plugin: subscribing to file deletion, movement, and renaming events throughyazi --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
andzoxide
as plugins for better flexibility:fzf
andzoxide
have added more runtime error handling.zoxide
now supports the newupdate_db
feature, which automatically adds Yazi'sCWD
tozoxide
when navigating. To enable it, add the following to yourinit.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()
andya.err()
now support printing any type of data- New
ps
API as a carrier for DDS interaction ya.manager_emit()
now supports passingUrl
type
What's Changed
- fix: use
BTreeSet
for selected files to maintain order by @sxyazi in #799 - refactor: wrap
Opener
withCow
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()
andya.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-infile
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
toStderr
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()
andya.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 usingStdout
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
andis_sticky
toCha
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 theshell
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
, anddelete
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 apath
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
intoya pub
andya pub-static
to make it more ergonomic by @sxyazi in #933 - feat: new builtin
session.lua
plugin by @sxyazi in #940
New Contributors
- @SoloJacobs made their first contribution in #854
- @mikavilpas made their first contribution in #880
- @AidanV made their first contribution in #930
Full Changelog: v0.2.4...v0.2.5
v0.2.4
This version adds support for cross-directory selection, which means you can select files from multiple different directories and perform operations on them.
Yazi's accessibility also has been greatly improved, including adding color to icons, a new file selection counter, improved visibility of hovered files, enhanced keyword recognition in finds, long path truncation, and a new color system.
As for the plugin system, we have rewritten Yazi's Lua binding using Unsafe Rust, making the initialization process of plugins very inexpensive by lazy-loading app data. This fundamentally solves the difficulty of cross-tab data access, making future plans for dual-pane/tree-view possible, as they can be efficiently implemented as a plugin!
In addition, loaded plugins are now cached, meaning that plugin loading speed will be faster. The improvement in plugin performance directly reflects the overall performance of Yazi because in Yazi, plugins are first-class citizens, with most UI being drawn by built-in UI plugins, and previews and preloads also being done through plugins, which is the biggest driving force for us to constantly improve plugin performance.
Finally, we have added some new APIs that we hope plugin developers will find useful:
ya.input()
: Request user input;ya.notify()
: Send a foreground notification to the user, which is useful for background tasks;ya.hide()
: Request terminal control and hide Yazi in the background. This is useful for calling interactive programs like fzf, zoxide, etc., in plugins;ui.Clear()
: Clear a specific UI area, which is useful for implementing custom UI layouts.
To implement ya.notify()
, we have added a new Vim-like notification component:
Vim-like.notification.mp4
For more changes, please read "What's Changed" below.
Heads up
The exec
property will be deprecated in the next major version, v0.3, and will be replaced by run
.
Please replace all instances of exec = ...
with run = ...
in your yazi.toml
and keymap.toml
if any.
What's Changed
- perf: cheaper sync context initialization by @sxyazi in #643
- feat: allows access to complete app data for all tabs by @sxyazi in #644
- feat: add
<Home>
and<End>
to[input]
keymap by @grig-iv in #655 - feat: add
<Delete>
to[input]
keymap by @grig-iv in #665 - ci: add clippy/rustfmt workflow by @uncenter in #663
- feat: enable the ability to sort the which key by @abhaysp95 in #662
- refactor: tab-specific selection by @sxyazi in #653
- feat: Vim-like notification by @sxyazi in #659
- feat: add
prepend_rules
andappend_rules
for[icon]
by @grig-iv in #670 - feat: add new
scrolloff
option to[manager]
by @dedukun in #679 - feat: add color to icons by @Andy-W-Developer in #683
- feat: expose selected/yanked files as API by @sxyazi in #674
- feat: add new file marked state by @sxyazi in #682
- feat: add counter component to the header for displaying currently selected/yanked items by @Rolv-Apneseth in #646
- feat: add icons for Scala, Elm and Java (.jar & .class) by @jpaju in #684
- feat: add a new option
--hovered
to theopen
command by @fakerepic in #687 - refactor: using definite patterns to simplify keybindings by @sxyazi in #690
- feat: nested selection conflict detection by @evpeople in #689
- feat: cross-directory selection by @sxyazi in #693
- fix: allow running
ya.sync
in a sync plugin call by @dedukun in #702 - fix: ignore further classified mime-types by @sxyazi in #707
- perf: cache loaded plugins by @sxyazi in #710
- feat: add icons for C#, KDL and Nushell by @lpnh in #711
- feat: better accessibility by @sxyazi in #719
- fix: rendering fails when no file type style is matched by @sxyazi in #721
- fix: skip when the mime-type cannot match due to file permissions by @sxyazi in #725
- refactor: new
yazi-boot
crate by @sxyazi in #728 - fix: initialize logs right after configurations by @dedukun in #708
- refactor: prefer
Display
overToString
by @sxyazi in #734 - feat: add hovered as
$0
for shell and opener by @rrveex in #738 - feat: add a new
[notify]
section to thetheme.toml
to configure thenotify
component's style by @evpeople in #749 - feat: add
prepend_rules
andappend_rules
for[open]
inyazi.toml
by @lpnh in #754 - feat: support
YAZI_FILE_ONE
environment variable forfile(1)
path by @ndtoan96 in #752 - perf: apply
add_many()
/remove_many()
to the visual mode items for selection conflict detecting by @sxyazi in #758 - feat: support
%0
as the hovered file for Windows by @sxyazi in #761 - feat:
ya.input()
plugin API by @sxyazi in #762 - feat: add musl linux build targets by @uznog in #759
- fix: nested conflict detection exception when performing cross-level searches by @sxyazi in #769
- refactor: add new
run
property by @sxyazi in #773 - feat: add
Ctrl-[
as an escape key by @hankertrix in #763 - feat:
ya.notify()
plugin API by @sxyazi in #780 - feat:
ui.Clear
component for UI plugins by @sxyazi in #786 - feat: add
<C-p>
and<C-n>
to the select component for moving the cursor up/down by @hankertrix in #779 - feat: send a foreground notification to the user when the process fails to run by @hqwuzhaoyi in #775
- feat:
cx.yanked
plugin API by @sxyazi in #788 - fix: track the latest file changes for the
selected
,yanked
state when available by @sxyazi in #791 - feat: truncate path for deeply nested directories by @yixiaojiu in #787
- feat:
ya.hide()
plugin API by @sxyazi in #792
New Contributors
- @grig-iv made their first contribution in #655
- @abhaysp95 made their first contribution in #662
- @dedukun made their first contribution in #679
- @jpaju made their first contribution in #684
- @fakerepic made their first contribution in #687
- @evpeople made their first contribution in #689
- @lpnh made their first contribution in #711
- @rrveex made their first contribution in #738
- @uznog made their first contribution in #759
- @hankertrix made their first contribution in #763
- @hqwuzhaoyi made their first contribution in #775
- @yixiaojiu made their first contribution in #787
Full Changelog: v0.2.3...v0.2.4
v0.2.3
This version optimizes the loading speed for large directories - Yazi is now ~2.5 times faster than before. For a directory benchmark containing 500,000 files (See #599 for details):
eza -l took 19.03 seconds
ls -l took 10.99 seconds
yazi took 4.79 seconds
The release also adds support for previewing images over SSH, this allows you to preview images directly on your local terminal by running Yazi on a server, a highly anticipated new feature.
As for the plugin system, many improvements have been also made, such as supporting passing arguments, plugin-specific state persistence, and listening to key events in the plugin. During this period, we added a new Resources page that documents plugins contributed by the community. Thanks to the lovely plugin authors for creating and sharing these awesome plugins!
Lastly, some great news: Yazi has been featured on The Linux Cast - this is Yazi's first appearance in video format, and I am really excited and proud to see more and more people beginning to notice and take an interest in Yazi!
What's Changed
- feat: customizing the number of columns of "which key" component by @sxyazi in #571
- fix: input offset is not reset when renaming with
--cursor=start
and the filename is too long by @sxyazi in #575 - feat: new
image_quality
andsixel_fraction
options to allow users to configure the image preview quality by @sxyazi in #576 - feat: allow to configure image filter by @sxyazi in #586
- feat: support passing arguments to plugin by @sxyazi in #587
- feat: plugin-specific state persistence by @sxyazi in #590
- feat: preview image over SSH by @sxyazi in #585
- perf: read directory in bulk in the background at startup, make Yazi ~2.5 times faster than before by @sxyazi in #599
- refactor: use
Cmd
instead ofExec
by @sxyazi in #604 - feat: support
unyank
by @15cm in #313 - feat: make
trash
crate optional on Android by @sxyazi in #600 - feat: plugin interface for key events via
ya.which()
by @sxyazi in #617 - feat:
app_emit
andmanager_emit
accepts boolean, integer, and number as option values by @sxyazi in #625 - fix: attach plugin
args
to theentry
method for better future optimization possibilities by @sxyazi in #627 - feat: support char device in filetype by @HE7086 in #628
- fix: hidden attribute of files on Windows by @sxyazi in #632
- fix: task manager not re-rendering after progress update by @sxyazi in #633
- feat: if input is empty, close it on
backspace
command by @Rolv-Apneseth in #630
New Contributors
Full Changelog: v0.2.2...v0.2.3
v0.2.2
This version fixes many bugs and adds support for two new platforms: Windows ARM64 and Ubuntu (via Snap).
The release also introduces a new way of configuring keymaps. You can now customize your key bindings by using prepend_keymap
or append_keymap
without having to copy the entire keymap.toml
file. (See this example. I am a Colemak keyboard layout user, which requires remapping many keys, but it's still neat.)
As for performance, this version rewrites Yazi's event system, allowing multiple renderings triggered by events to be merged into a single rendering more efficiently, saving CPU resources. You may notice that the preview pane no longer flickers when switching directories, as unnecessary intermediate rendering steps are skipped.
For packaging, this version adds yazi.desktop
and logo.png
files, which can be used in packaging scripts for different platforms.
What's Changed
- fix: can't clear screen and restore cursor when exit on Windows by @sxyazi in #525
- fix: can't open and reveal paths with spaces on Windows by @sxyazi in #526
- feat: add support for snap packages by @gapplef in #531
- feat: add desktop entry and logo by @fufexan in #534
- fix: can't display file name with invalid utf-8 by @sxyazi in #529
- fix: follow symlinks when detecting mime-type on Windows by @sxyazi in #527
- fix: shell input code highlighting is not adapted for the default ANSI theme by @sxyazi in #536
- feat: add
prepend_keymap
andappend_keymap
for configuring mixing by @sxyazi in #546 - fix: alternate tabs with the same path as the active tab cannot complete partial updates and cursor reset by @sxyazi in #552
- feat: allow the spawned child processes to suspend by @sxyazi in #556
- feat: improve search input title by @sxyazi in #559
- perf: new event system by @sxyazi in #561
- feat: support submit completion and input at once by using
<Enter>
key by @sxyazi in #565 - feat: image preview in Tabby terminal by @sxyazi in #569
New Contributors
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Sorry, this is an urgent fix. The newly added rename --cursor=before_ext
may cause a crash when renaming files with Unicode characters, affecting new users in CJK languages.
This version also adds support for trash v3.2.1, addressing a bug where the trash bin couldn't be located correctly.
What's Changed
Full Changelog: v0.2.0...v0.2.1
v0.2.0
This version has added support for custom previewers and custom preloaders, as well as completed most of the work on the concurrent plugin system.
In addition, it includes many performance optimizations, such as rewriting the entire file system, refactoring the entire UI rendering architecture, enhancing the task scheduling system, and implementing partial rendering for frequently updated components.
This version also introduces many meaningful new features, such as path auto-completion, real-time file filtering, Kitty Unicode placeholders protocol support. Read the changelog below for details.
This is a breaking change version, please refer to our upgrade guide: Migrating to Yazi v0.2.0
What's Changed
- refactor(nix): add shell completion and avoid impure by @XYenon in #293
- refactor: publish to crates.io by @sxyazi in #298
- feat: add a new
Folder:icon()
API to make it easier for users to extend icons by @sxyazi in #301 - feat: add config support for coordinate and size adjustment for ueberzugpp image preview by @15cm in #304
- fix: clear Sixel image with empty characters instead of
\x2B[K
to be compatible with GNOME VTE by @linsui in #309 - fix: nix flakes by @sxyazi in #306
- fix: change the rust tool chain in
shell.nix
from stable to nightly by @15cm in #314 - feat: support image preview on WSL by @sxyazi in #315
- fix: use
WAYLAND_DISPLAY
andDISPLAY
to detect Wayland/X11 whenXDG_SESSION_TYPE
is not set by @sxyazi in #312 - fix: channel blockage caused by fuse permissions under the root user by @sxyazi in #321
- fix:
jq
previews empty when the user setstab_size=8
by @sxyazi in #320 - chore: add
.vscode
and.idea
to .gitignore by @XOR-op in #322 - feat: add an identifier before the extension to prevent file conflicts rather than after by @rick-yao in #316
- ci: add Rust target "aarch64-unknown-linux-gnu" to release workflow by @nifr in #326
- feat: add overlays to flake.nix by @musjj in #218
- docs: update readme links to website by @uncenter in #332
- feat: use
USERPROFILE
to retrieve readable path on Windows by @sravioli in #331 - feat: auto-completion for input component by @XOR-op in #324
- perf: fallback to plain highlighter for long text by @sxyazi in #329
- fix: the parent does not hover properly on switching the hidden state by @sxyazi in #339
- feat: better Zellij support with multi-factor detection involving emulator types by @sxyazi in #336
- fix: precache n-1 and n+1 pages by @Hanaasagi in #349
- feat: new
reveal
command by @sxyazi in #341 - refactor: extracting commands into separate files to make them easier to maintain by @sxyazi in #338
- feat: make width of completion relative to input by @XOR-op in #353
- feat: raise open file descriptors limit at startup by @sxyazi in #342
- fix: prefix matching should have higher priority in completion by @XOR-op in #352
- feat: display the number of deleted files in the prompt by @sxyazi in #359
- fix: Rust panics instead of returning an error when file times are invalid by @sxyazi in #357
- feat: add support for opening a file on startup by @sxyazi in #358
- feat: new kitty graphics protocol implementation for better compatibility with
tmux
through Unicode placeholders by @sxyazi in #365 - perf: precache small images to avoid cache misses; use
symlink_metadata
instead ofmetadata
by @sxyazi in #367 - refactor: use more reasonable numeric field types for configs by @sxyazi in #368
- perf: clear only limited cells when hiding images by @sxyazi in #369
- perf: reduce peak memory footprint during decoding large images by @sxyazi in #375
- feat: make
Input
andSelect
positions customizable by @Hanaasagi in #361 - feat: expose image max alloc and bound to allow for more control by @sxyazi in #376
- feat: add more optimization options by @Walker-00 in #377
- fix: directories are recreated after deletion did not update the watcher tracking properly by @sxyazi in #381
- feat: make emacs readline keybindings configurable by @sxyazi in #382
- feat: cursor and page key navigation parity with Vim bindings by @flexiondotorg in #386
- feat: add more mime-types, file extensions and icons to the preset theme by @flexiondotorg in #387
- feat: include commit hash in
yazi --version
by @Hanaasagi in #393 - fix: popup components (Input, Select, etc.) being covered by previewed images by @sxyazi in #360
- fix: stepwise renaming causes uncertain sorting order by @sxyazi in #398
- refactor: move event to shared by @sxyazi in #403
- feat: support sorting by file extension by @JYShaw in #405
- refactor: integrate tasks into scheduler by @sxyazi in #406
- fix: catchup with the latest stable Rust by @XYenon in #409
- fix: build with rust-overlay by @XYenon in #410
- fix: crashes when selection indicator exceeds the visible area while a wrong
folder_offset
specified by @sxyazi in #416 - feat: new config option to suppress pre-caching tasks by @againstpetra in #430
- fix: do not use
LuaJIT
in riscv64 and loongarch64 architecture by @eatradish in #439 - feat: copy content over SSH by @sxyazi in #447
- feat!: custom preloader & previewer by @sxyazi in #401
- feat: filter files in real-time by @Rolv-Apneseth in #454
- fix: panic caused by
set_hook
by @sxyazi in #459 - feat: fine-grained scheduling priority by @sxyazi in #462
- fix: add
--follow
option topaste
command by @eatradish in #436 - feat: support ANSI themes by @smores56 in #460
- perf: new UI rendering architecture by @sxyazi in #468
- fix: resize isn't triggered on app restoring by @sxyazi in #483
- feat: image orientation support by @sxyazi in #488
- refactor:
quit
command by @aserowy in #484 - feat: icon color and ordered icon rules support by @sxyazi in #503
- fix: prevent recursive caching - don't cache files in the cache directory by @sxyazi in #504
- chore: add schema urls to preset config by @uncenter in #506
- fix: update paged files after filter done by @sxyazi in #505
- feat: add support for highlighting by file type by @Akmadan23 in #510
- perf: partial rendering progress and composite into a complete UI to reduce CPU consumption caused by frequent progress updates by @sxyazi in #509
- feat: add
--empty
and--cursor
options to therename
command by @Akmadan23 in #513 - feat: add
YAZI_LEVEL
env variable for shells by @isti115 in #514
New Contributors
- @15cm made their first contribution in #304
- @linsui made their first contribution in #309
- @rick-yao made their first contribution in #316
- @nifr made their first contribution in #326
- @musjj made their first contribution in #218
- @uncenter made their first contribution in #332
- @sravioli made their first contribution in #331
- @Hanaasagi made their first contribution in #349
- @Walker-00 made their first contribution in #377
- @flexiondotorg made their first contribution in #386
- @JYShaw made their first contribution in #405
- @againstpetra made their first contribution in https://github.com/sxy...
v0.1.5
This is the biggest update ever, with 36 new features, 24 bug fixes, and 3 performance improvements.
Thank you to every contributor for making Yazi better and better!
What's Changed
- feat: add Mintty (Git Bash) image preview support by @sxyazi in #103
- refactor: use
Url
instead ofPathBuf
by @sxyazi in #107 - fix: mime of javascript by @XYenon in #106
- perf: load large folders in chunks by @sxyazi in #117
- fix: set cursor block after closing input prompt from insert mode by @auvred in #109
- fix: doesn't redirect the stderr of the clipboard command to null by @sxyazi in #119
- feat: suspend process (
Ctrl-Z
) by @sxyazi in #120 - fix: notification of file changes in linked directories by @sxyazi in #121
- feat: file size sorting under the simplified file system by @sxyazi in #123
- fix:
show_hidden
not properly applied to hovered folder by @sxyazi in #124 - fix: recognize symlink directories as files by @sxyazi in #125
- fix: respect symlink paths without canonicalizing them by @sxyazi in #126
- feat: make
Input
streamable by @sxyazi in #127 - perf: doesn't wait for the process of killing by @sxyazi in #128
- feat: find by @sxyazi in #104
- feat: tab-specific sorting by @sxyazi in #131
- feat: new
V
,D
,C
keybinding for Input component by @sxyazi in #139 - fix: swap description for search commands by @knutwalker in #141
- fix: image position calculation by @sxyazi in #144
- feat: support for image preview within tmux by @sxyazi in #147
- feat: show keywords when in search mode by @sxyazi in #152
- feat: fallback to built-in highlighting if
jq
is not installed by @ndtoan96 in #151 - feat: make the glob expr case insensitive by default, and prepend
\s
to make it sensitive by @sxyazi in #156 - fix: check relative path on
expand_path
by @sxyazi in #165 - feat: support for FreeBSD permission type by @yggdr in #169
- feat: multiple openers for a single rule by @Linus789 in #154
- fix: leave upwards only if an IO error occurs in
current
by @sxyazi in #172 - docs: add archlinuxcn installation guide by @Integral-Tech in #176
- fix: image preview not working on Zellij by @Eric-Song-Nop in #181
- feat: make
trash
optional by @sxyazi in #178 - fix: inconsistent
Shift
key behavior on Unix and Windows by @ndtoan96 in #174 - feat: new
force
option added for theremove
command, which does not show the confirmation dialog on trashing/deleting by @sxyazi in #173 - fix: typo of LICENSE file by @conradojordan in #201
- feat: add flake.nix by @XYenon in #205
- feat: include ignored files on search when hidden files are shown by @PhotonQuantum in #212
- feat: new
orphan
option for opener rules, to keep the process running even when Yazi exited by @sxyazi in #216 - feat: scroll half/full page with
arrow
percentage supported, and new Vi-like<C-u>
,<C-d>
,<C-b>
, and<C-f>
keybindings added by @TD-Sky in #213 - feat: highlight matching words on finding by @PhotonQuantum in #211
- feat: add
BackTab
support by @sxyazi in #209 - fix: set stdio to null when orphan is true by @sxyazi in #229
- feat: new
force
option for creating and renaming by @sxyazi in #208 - feat: loop through to find by @ndtoan96 in #234
- feat: backward/forward by @ndtoan96 in #230
- perf: reimplement optimized natural sorting algorithm, speed up ~6 times for case-insensitive sorting by @sxyazi in #237
- chore: changing the finding key to
n/N
to keep with Vim's conventions by @sxyazi in #238 - feat: added new options to the `find' command for smart-case/case-insensitive finds by @ndtoan96 in #240
- feat: add new
--no-cwd-file
option toquit
command for flexible cwd-file setting by @XOR-op in #245 - fix: avoid adding non-regular paths to backstack by @ndtoan96 in #249
- fix: support RGBA16 images by @sxyazi in #250
- feat: support trash for NetBSD by @sxyazi in #251
- feat: support environment variable in
cd
path by @ndtoan96 in #241 - feat: new theme system by @sxyazi in #161
- fix: cannot cd if there is whitespace in path by @ndtoan96 in #255
- fix: add
application/x-wine-extension-ini
to text mime by @ndtoan96 in #259 - fix: collect and fix all hard coded themes and color by @Eric-Song-Nop in #221
- fix: some colors not readable in light mode by @sxyazi in #264
- feat: better file hover state by @sxyazi in #269
- refactor: split commands into separate files by @sxyazi in #272
- feat: cancel selected items automatically on entering, leaving, copying, or cutting by @sxyazi in #273
- feat: add a new
Bar
component, and make border styles customizable by @sxyazi in #278 - fix: adapt another
$TERM
value offoot-extra
for foot by @sxyazi in #277 - refactor: simplify building conditions by @sxyazi in #280
- chore: add git rev to nix pkg version by @XYenon in #206
- feat: new
Manager
component for better style extensions by @sxyazi in #284 - feat: cross-system opener rule support by @sxyazi in #289
- fix: delegate the
SIGINT
signal of processes withorphan=true
to their parent by @sxyazi in #290 - feat: line mode by @sxyazi in #291
- feat: shell completions & auto releasing by @TD-Sky in #282
New Contributors
- @auvred made their first contribution in #109
- @knutwalker made their first contribution in #141
- @yggdr made their first contribution in #169
- @Integral-Tech made their first contribution in #176
- @conradojordan made their first contribution in #201
- @PhotonQuantum made their first contribution in #212
- @XOR-op made their first contribution in #245
Full Changelog: v0.1.4...v0.1.5
v0.1.4
⭐️ Highlights
- Support Windows
- Copy file path, with multi-selection support
- Customizable UI layout
- Better file change detection: update mime-type and preview in real-time after a change
- New sorting method: natural mode
- Scrollable preview, support videos, PDFs, archives, directories, etc.
- Simplified file system for better overall performance
- Help for all components, quick view of the key bindings
- Allow customization of Yazi config paths and cache persistence
- Adapt Black Box for the image preview
What's Changed
- feat: message about deleting files should be different by @g-plane in #64
- fix: wrong height of
Select
component by @sxyazi in #65 - docs: update opener rules to the new format by @sxyazi in #66
- feat: choose-file mode by @Eric-Song-Nop in #69
- feat: prepare for Windows by @g-plane in #44
- feat: copy file path, with multi-selection support by @sxyazi in #72
- feat: allow references to the selected files during shell execution by @sxyazi in #73
- feat: add
xclip
andxsel
support by @sxyazi in #74 - feat: windows clipboard support by @sxyazi in #75
- feat: custom manager layout by @sxyazi in #76
- fix: don't follow the symbolic link on Linux by @sxyazi in #77
- docs: install with Homebrew by @surinrasu in #80
- feat: update mime-type after file changes detected by @sxyazi in #78
- feat: organize keys for logical behavior by @asim215 in #83
- feat: sort naturally by @asim215 in #82
- feat: make the preview scrollable by @sxyazi in #86
- feat: respect
EDITOR
environment variable, close #90 by @sxyazi in #91 - refactor: simplify filesystem design to improve performance by @sxyazi in #89
- feat: help by @sxyazi in #93
- feat: new
cache_dir
option by @sxyazi in #96 - feat: new
YAZI_CONFIG_HOME
env variable by @sxyazi in #97 - feat: add Black Box image preview support by @sxyazi in #99
- feat: deprecate
--cwd
in favor of the positional argument by @sxyazi in #100
New Contributors
- @surinrasu made their first contribution in #80
- @asim215 made their first contribution in #83
Full Changelog: v0.1.3...v0.1.4
v0.1.3
This is the biggest update ever, with 22 new features, 9 bug fixes, and 5 performance improvements.
Thank you to every contributor for making Yazi better!
What's Changed
- refactor: use workspace to speed up builds by @sxyazi in #13
- feat: support transparent images along with Sixel being used by @sxyazi in #14
- fix: adaptor export by @fzdwx in #15
- docs: add
yazi-bin
AUR package by @g-plane in #16 - feat: show the output of running tasks in real-time by @sxyazi in #17
- feat: add pdf preview with
pdftoppm
by @Eric-Song-Nop in #18 - fix: no matches of some icons by @sxyazi in #19
- feat: make highlighting tasks cancelable even though its CPU-bound by @sxyazi in #20
- refactor(md5): replace
md5
wtihmd-5
by @TD-Sky in #21 - feat: more language support in highlighting by @sxyazi in #22
- feat: improve the performance of highlighting big JSON file by @sxyazi in #23
- feat: running shell by @sxyazi in #24
- feat: highlight the inputs when highlighting mode turns on by @sxyazi in #25
- fix: tasks number format by @fzdwx in #26
- feat: fix and enhance unset mode by @sxyazi in #27
- fix: does not generate the necessary PDF cache when
max_width
is set too large by @sxyazi in #28 - docs: add unstable version for Nix users, thank @XYenon by @sxyazi in #29
- feat: allow to customize status section separator by @g-plane in #30
- feat: add
display_name
to opener by @XYenon in #31 - refactor: avoid hard coding tmp dir by @g-plane in #32
- Fix theme doc path typo by @Eric-Song-Nop in #34
- fix: unknown mime-type of
inode/x-empty
by @sxyazi in #36 - chore: rename bin by @g-plane in #33
- refactor: introduce Clippy by @sxyazi in #38
- feat: automatically change the current working directory after closing yazi by @sxyazi in #40
- feat: add interactive cd by @XYenon in #43
- feat: show current dir name in tab by @g-plane in #41
- fix:
show_hidden
not working by @sxyazi in #47 - feat: enhanced execution format by @sxyazi in #45
- feat: add sort_dir_first option by @Eric-Song-Nop in #49
- feat: add command template support for
shell
by @fzdwx in #48 - fix: crashes caused by pop-up components by @sxyazi in #52
- feat: new task-related config options by @sxyazi in #53
- feat: bulk rename by @TD-Sky in #50
- refactor: improve bulk rename performance by @TD-Sky in #54
- refactor: improve stdout performance by using
BufWriter
by @sxyazi in #55 - refactor: simplify the flow with
let-else
by @sxyazi in #56 - refactor: introduces the validator by @sxyazi in #57
- fix: tab name width calculating by @sxyazi in #58
- fix: selection rect out of bounds by @sxyazi in #59
- refactor: dispatchers no longer go through async scheduling to improve reactivity by @sxyazi in #60
- refactor: implement
RoCell
to replaceOnceCell
by @sxyazi in #63
New Contributors
- @Eric-Song-Nop made their first contribution in #18
- @TD-Sky made their first contribution in #21
- @XYenon made their first contribution in #31
Full Changelog: v0.1.2...v0.1.3
v0.1.2
What's Changed
- fix: fn import by @fzdwx in #3
- feat: which-key and multi-key support by @sxyazi in #4
- feat: enable bracketed paste by @sxyazi in #5
- feat: the ability to close input using
Esc
, and the new op ofCut
by @sxyazi in #6 - feat: switch sorting by key; precalculate and cache directory size when sorting by size; use
BTreeMap
to improve performance by @sxyazi in #7 - feat: make folder openable by @sxyazi in #9
- feat: auto hover the file after it created by @sxyazi in #10
- feat: avoid duplicating the same task of precaching the size by @sxyazi in #11
- feat: support for Überzug++ for image previews with X11/wayland environment by @sxyazi in #12
New Contributors
Full Changelog: v0.1.1...v0.1.2