v0.2.0

sxyazi/yaziv0.2.0Jan 15, 2024by github-actions[bot]

AI Summary

This significant update introduces custom previewers and a concurrent plugin system, alongside major performance optimizations like a rewritten UI rendering architecture. It also adds path auto-completion and real-time filtering, though it is a breaking change requiring users to consult the upgrade guide.

Key Highlights

  • Add custom previewers and preloaders
  • Implement concurrent plugin system
  • Major performance optimizations (UI and filesystem refactoring)
  • Add path auto-completion and real-time file filtering
  • Add Kitty Unicode placeholders protocol support

Breaking Changes

  • This is a breaking change version requiring users to consult the upgrade guide

New Features

  • Custom previewers and preloaders
  • Path auto-completion
  • Real-time file filtering
  • Kitty Unicode placeholders protocol support
  • Emacs readline keybindings
  • SSH copy support
  • ANSI themes support

Full Release Notes

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](https://github.com/sxyazi/yazi/issues/461)**

## What's Changed
* refactor(nix): add shell completion and avoid impure by @XYenon in https://github.com/sxyazi/yazi/pull/293
* refactor: publish to crates.io by @sxyazi in https://github.com/sxyazi/yazi/pull/298
* feat: add a new `Folder:icon()` API to make it easier for users to extend icons by @sxyazi in https://github.com/sxyazi/yazi/pull/301
* feat: add config support for coordinate and size adjustment for ueberzugpp image preview by @15cm in https://github.com/sxyazi/yazi/pull/304
* fix: clear Sixel image with empty characters instead of `\x2B[K` to be compatible with GNOME VTE by @linsui in https://github.com/sxyazi/yazi/pull/309
* fix: nix flakes by @sxyazi in https://github.com/sxyazi/yazi/pull/306
* fix: change the rust tool chain in `shell.nix` from stable to nightly by @15cm in https://github.com/sxyazi/yazi/pull/314
* feat: support image preview on WSL by @sxyazi in https://github.com/sxyazi/yazi/pull/315
* fix: use `WAYLAND_DISPLAY` and `DISPLAY` to detect Wayland/X11 when `XDG_SESSION_TYPE` is not set by @sxyazi in https://github.com/sxyazi/yazi/pull/312
* fix: channel blockage caused by fuse permissions under the root user by @sxyazi in https://github.com/sxyazi/yazi/pull/321
* fix: `jq` previews empty when the user sets `tab_size=8` by @sxyazi in https://github.com/sxyazi/yazi/pull/320
* chore: add `.vscode` and `.idea` to .gitignore by @XOR-op in https://github.com/sxyazi/yazi/pull/322
* feat: add an identifier before the extension to prevent file conflicts rather than after by @rick-yao in https://github.com/sxyazi/yazi/pull/316
* ci: add Rust target "aarch64-unknown-linux-gnu" to release workflow by @nifr in https://github.com/sxyazi/yazi/pull/326
* feat: add overlays to flake.nix by @musjj in https://github.com/sxyazi/yazi/pull/218
* docs: update readme links to website by @uncenter in https://github.com/sxyazi/yazi/pull/332
* feat: use `USERPROFILE` to retrieve readable path on Windows by @sravioli in https://github.com/sxyazi/yazi/pull/331
* feat: auto-completion for input component by @XOR-op in https://github.com/sxyazi/yazi/pull/324
* perf: fallback to plain highlighter for long text by @sxyazi in https://github.com/sxyazi/yazi/pull/329
* fix: the parent does not hover properly on switching the hidden state by @sxyazi in https://github.com/sxyazi/yazi/pull/339
* feat: better Zellij support with multi-factor detection involving emulator types by @sxyazi in https://github.com/sxyazi/yazi/pull/336
* fix: precache n-1 and n+1 pages by @Hanaasagi in https://github.com/sxyazi/yazi/pull/349
* feat: new `reveal` command by @sxyazi in https://github.com/sxyazi/yazi/pull/341
* refactor: extracting commands into separate files to make them easier to maintain by @sxyazi in https://github.com/sxyazi/yazi/pull/338
* feat: make width of completion relative to input by @XOR-op in https://github.com/sxyazi/yazi/pull/353
* feat: raise open file descriptors limit at startup by @sxyazi in https://github.com/sxyazi/yazi/pull/342
* fix: prefix matching should have higher priority in completion by @XOR-op in https://github.com/sxyazi/yazi/pull/352
* feat: display the number of deleted files in the prompt by @sxyazi in https://github.com/sxyazi/yazi/pull/359
* fix: Rust panics instead of returning an error when file times are invalid by @sxyazi in https://github.com/sxyazi/yazi/pull/357
* feat: add support for opening a file on startup by @sxyazi in https://github.com/sxyazi/yazi/pull/358
* feat: new kitty graphics protocol implementation for better compatibility with `tmux` through Unicode placeholders by @sxyazi in https://github.com/sxyazi/yazi/pull/365
* perf: precache small images to avoid cache misses; use `symlink_metadata` instead of `metadata` by @sxyazi in https://github.com/sxyazi/yazi/pull/367
* refactor: use more reasonable numeric field types for configs by @sxyazi in https://github.com/sxyazi/yazi/pull/368
* perf: clear only limited cells when hiding images by @sxyazi in https://github.com/sxyazi/yazi/pull/369
* perf: reduce peak memory footprint during decoding large images by @sxyazi in https://github.com/sxyazi/yazi/pull/375
* feat: make `Input` and `Select` positions customizable by @Hanaasagi in https://github.com/sxyazi/yazi/pull/361
* feat: expose image max alloc and bound to allow for more control by @sxyazi in https://github.com/sxyazi/yazi/pull/376
* feat: add more optimization options by @Walker-00 in https://github.com/sxyazi/yazi/pull/377
* fix: directories are recreated after deletion did not update the watcher tracking properly by @sxyazi in https://github.com/sxyazi/yazi/pull/381
* feat: make emacs readline keybindings configurable by @sxyazi in https://github.com/sxyazi/yazi/pull/382
* feat: cursor and page key navigation parity with Vim bindings by @flexiondotorg in https://github.com/sxyazi/yazi/pull/386
* feat: add more mime-types, file extensions and icons to the preset theme by @flexiondotorg in https://github.com/sxyazi/yazi/pull/387
* feat: include commit hash in `yazi --version` by @Hanaasagi in https://github.com/sxyazi/yazi/pull/393
* fix: popup components (Input, Select, etc.) being covered by previewed images by @sxyazi in https://github.com/sxyazi/yazi/pull/360
* fix: stepwise renaming causes uncertain sorting order by @sxyazi in https://github.com/sxyazi/yazi/pull/398
* refactor: move event to shared by @sxyazi in https://github.com/sxyazi/yazi/pull/403
* feat: support sorting by file extension by @JYShaw in https://github.com/sxyazi/yazi/pull/405
* refactor: integrate tasks into scheduler by @sxyazi in https://github.com/sxyazi/yazi/pull/406
* fix: catchup with the latest stable Rust by @XYenon in https://github.com/sxyazi/yazi/pull/409
* fix: build with rust-overlay by @XYenon in https://github.com/sxyazi/yazi/pull/410
* fix: crashes when selection indicator exceeds the visible area while a wrong `folder_offset` specified by @sxyazi in https://github.com/sxyazi/yazi/pull/416
* feat: new config option to suppress pre-caching tasks by @againstpetra in https://github.com/sxyazi/yazi/pull/430
* fix: do not use `LuaJIT` in riscv64 and loongarch64 architecture by @eatradish in https://github.com/sxyazi/yazi/pull/439
* feat: copy content over SSH by @sxyazi in https://github.com/sxyazi/yazi/pull/447
* feat!: custom preloader & previewer by @sxyazi in https://github.com/sxyazi/yazi/pull/401
* feat: filter files in real-time by @Rolv-Apneseth in https://github.com/sxyazi/yazi/pull/454
* fix: panic caused by `set_hook` by @sxyazi in https://github.com/sxyazi/yazi/pull/459
* feat: fine-grained scheduling priority by @sxyazi in https://github.com/sxyazi/yazi/pull/462
* fix: add `--follow` option to `paste` command by @eatradish in https://github.com/sxyazi/yazi/pull/436
* feat: support ANSI themes by @smores56 in https://github.com/sxyazi/yazi/pull/460
* perf: new UI rendering architecture by @sxyazi in https://github.com/sxyazi/yazi/pull/468
* fix: resize isn't triggered on app restoring by @sxyazi in https://github.com/sxyazi/yazi/pull/483
* feat: image orientation support by @sxyazi in https://github.com/sxyazi/yazi/pull/488
* refactor: `quit` command by @aserowy in https://github.com/sxyazi/yazi/pull/484
* feat: icon color and ordered icon rules support by @sxyazi in https://github.com/sxyazi/yazi/pull/503
* fix: prevent recursive caching - don't cache files in the cache directory by @sxyazi in https://github.com/sxyazi/yazi/pull/504
* chore: add schema urls to preset config by @uncenter in https://github.com/sxyazi/yazi/pull/506
* fix: update paged files after filter done by @sxyazi in https://github.com/sxyazi/yazi/pull/505
* feat: add support for highlighting by file type by @Akmadan23 in https://github.com/sxyazi/yazi/pull/510
* perf: partial rendering progress and composite into a complete UI to reduce CPU consumption caused by frequent progress updates by @sxyazi in https://github.com/sxyazi/yazi/pull/509
* feat: add `--empty` and `--cursor` options to the `rename` command by @Akmadan23 in https://github.com/sxyazi/yazi/pull/513
* feat: add `YAZI_LEVEL` env variable for shells by @Isti115 in https://github.com/sxyazi/yazi/pull/514

## New Contributors
* @15cm made their first contribution in https://github.com/sxyazi/yazi/pull/304
* @linsui made their first contribution in https://github.com/sxyazi/yazi/pull/309
* @rick-yao made their first contribution in https://github.com/sxyazi/yazi/pull/316
* @nifr made their first contribution in https://github.com/sxyazi/yazi/pull/326
* @musjj made their first contribution in https://github.com/sxyazi/yazi/pull/218
* @uncenter made their first contribution in https://github.com/sxyazi/yazi/pull/332
* @sravioli made their first contribution in https://github.com/sxyazi/yazi/pull/331
* @Hanaasagi made their first contribution in https://github.com/sxyazi/yazi/pull/349
* @Walker-00 made their first contribution in https://github.com/sxyazi/yazi/pull/377
* @flexiondotorg made their first contribution in https://github.com/sxyazi/yazi/pull/386
* @JYShaw made their first contribution in https://github.com/sxyazi/yazi/pull/405
* @againstpetra made their first contribution in https://github.com/sxyazi/yazi/pull/430
* @eatradish made their first contribution in https://github.com/sxyazi/yazi/pull/439
* @Rolv-Apneseth made their first contribution in https://github.com/sxyazi/yazi/pull/454
* @smores56 made their first contribution in https://github.com/sxyazi/yazi/pull/460
* @aserowy made their first contribution in https://github.com/sxyazi/yazi/pull/484
* @Akmadan23 made their first contribution in https://github.com/sxyazi/yazi/pull/510
* @Isti115 made their first contribution in https://github.com/sxyazi/yazi/pull/514

**Full Changelog**: https://github.com/sxyazi/yazi/compare/v0.1.5...v0.2.0