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 #430
- @eatradish made their first contribution in #439
- @Rolv-Apneseth made their first contribution in #454
- @smores56 made their first contribution in #460
- @aserowy made their first contribution in #484
- @Akmadan23 made their first contribution in #510
- @Isti115 made their first contribution in #514
Full Changelog: v0.1.5...v0.2.0