yazi/yazi-fs/src
Oded Falik 6753ade6ff feat(rclone): add read-only rclone VFS provider
Adds an `rclone://<remote>/<path>` scheme backed by the rclone CLI, giving
yazi native browsing of any of rclone's 100+ remotes (S3, GCS, Azure, SFTP,
WebDAV, local, …) without a FUSE mount.

- New SchemeKind::Rclone threaded through the scheme/URL type system,
  mirroring Sftp (remote, virtual, Unix-path, byte-encoded path semantics).
- yazi-vfs rclone provider:
  - read_dir via `rclone lsjson`
  - metadata via `rclone lsjson --stat` (synthesized POSIX mode)
  - seekable read-only File streaming `rclone cat --offset`; seek respawns
    the child at the new offset. Detects premature EOF and unknown sizes.
  - all write ops return Unsupported (read-only for now)
  - `remote:/path` targets preserve the leading slash, so filesystem-like
    backends (local, sftp) work alongside object stores.
- Config: [services.<name>] type = "rclone", remote = "..."
- Tests:
  - tests/rclone_local.rs: hermetic, points an rclone `local` remote at a
    temp fixture dir, so it needs no cloud/credentials and skips if `rclone`
    isn't installed. Covers list, read, seek, missing-object, and a >8 MiB
    parallel multi-chunk copy with position-varying bytes.
  - tests/rclone_read.rs: env-driven live tests against a real remote
    (ignored by default; paths supplied via env vars, nothing hard-coded).
2026-07-07 12:17:38 -07:00
..
cha feat!: show file icons in trash/delete/overwrite confirmations (#4096) 2026-07-02 04:09:12 +08:00
file feat: make visual mode support wraparound scrolling (#4101) 2026-07-05 18:06:25 +08:00
mounts feat: new app:theme action that hot-reload user themes/flavors (#3906) 2026-04-21 23:34:56 +08:00
path feat(rclone): add read-only rclone VFS provider 2026-07-07 12:17:38 -07:00
provider feat(rclone): add read-only rclone VFS provider 2026-07-07 12:17:38 -07:00
cwd.rs fix: use cleaned and normalized $PWD as startup CWD to avoid MSYS2/git-bash path quirks (#4068) 2026-06-20 12:47:00 +08:00
entries.rs feat!: show file icons in trash/delete/overwrite confirmations (#4096) 2026-07-02 04:09:12 +08:00
filter.rs feat: dynamic previewer Lua API (#3891) 2026-04-16 17:05:46 +08:00
fns.rs fix: a TOCTOU race condition while creating temporary directories (#4008) 2026-05-28 18:07:31 +08:00
hash.rs feat!: show file icons in trash/delete/overwrite confirmations (#4096) 2026-07-02 04:09:12 +08:00
lib.rs feat!: show file icons in trash/delete/overwrite confirmations (#4096) 2026-07-02 04:09:12 +08:00
op.rs feat!: show file icons in trash/delete/overwrite confirmations (#4096) 2026-07-02 04:09:12 +08:00
scheme.rs feat(rclone): add read-only rclone VFS provider 2026-07-07 12:17:38 -07:00
sorter.rs refactor: move Lua bindings down into each subcrates (#4049) 2026-06-18 15:06:31 +08:00
sorting.rs refactor: simplify FromStr implementations with strum 2026-04-03 09:13:52 +08:00
splatter.rs feat: shell formatting (#3232) 2025-10-06 23:44:32 +08:00
stage.rs refactor: move Lua bindings down into each subcrates (#4049) 2026-06-18 15:06:31 +08:00
url.rs feat(rclone): add read-only rclone VFS provider 2026-07-07 12:17:38 -07:00
xdg.rs fix: make the input component sync and reactive (#3949) 2026-05-09 09:26:07 +08:00