yazi/yazi-sftp
三咲雅 misaki masa 9accf929f4
Some checks are pending
Cachix / Publish Flake (push) Waiting to run
Check / clippy (push) Waiting to run
Check / rustfmt (push) Waiting to run
Check / stylua (push) Waiting to run
Draft / build-unix (gcc-aarch64-linux-gnu, ubuntu-latest, aarch64-unknown-linux-gnu) (push) Waiting to run
Draft / build-unix (gcc-i686-linux-gnu, ubuntu-latest, i686-unknown-linux-gnu) (push) Waiting to run
Draft / build-unix (gcc-riscv64-linux-gnu, ubuntu-latest, riscv64gc-unknown-linux-gnu) (push) Waiting to run
Draft / build-unix (gcc-sparc64-linux-gnu, ubuntu-latest, sparc64-unknown-linux-gnu) (push) Waiting to run
Draft / build-unix (macos-latest, aarch64-apple-darwin) (push) Waiting to run
Draft / build-unix (macos-latest, x86_64-apple-darwin) (push) Waiting to run
Draft / build-unix (ubuntu-latest, x86_64-unknown-linux-gnu) (push) Waiting to run
Draft / build-windows (windows-latest, aarch64-pc-windows-msvc) (push) Waiting to run
Draft / build-windows (windows-latest, x86_64-pc-windows-msvc) (push) Waiting to run
Draft / build-musl (aarch64-unknown-linux-musl) (push) Waiting to run
Draft / build-musl (x86_64-unknown-linux-musl) (push) Waiting to run
Draft / build-snap (amd64, ubuntu-latest) (push) Waiting to run
Draft / build-snap (arm64, ubuntu-24.04-arm) (push) Waiting to run
Draft / snap (push) Blocked by required conditions
Draft / draft (push) Blocked by required conditions
Draft / nightly (push) Blocked by required conditions
Test / test (macos-latest) (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
Test / test (windows-latest) (push) Waiting to run
feat: trash bin (#4144)
2026-07-22 03:13:58 +08:00
..
src feat: trash bin (#4144) 2026-07-22 03:13:58 +08:00
Cargo.toml feat: trash bin (#4144) 2026-07-22 03:13:58 +08:00
LICENSE feat: new yazi-sftp crate (#3166) 2025-09-14 02:50:28 +08:00
README.md fix: force Git checkout for plugin cache repositories (#3169) 2025-09-14 19:42:30 +08:00

yazi-sftp

A fork of russh-sftp used by Yazi, with some changes:

  • Supports paths containing invalid UTF-8
  • Supports retrieving file nlink, username, and group
  • Uses generic return parameters for a more idiomatic API, e.g.:
    let attrs: responses::Attrs = session.send(requests::Stat::new(path)).await?
    
  • Reduced dependencies
  • Performance optimizations:
    • Copy-on-write for all packets to avoid unnecessary memory allocation
    • Packet lengths are precomputed to avoid secondary allocations
    • Avoids cloning buffers in AsyncRead and AsyncWrite implementations