Skip to content

fs-safe 0.25.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 21:25
· 157 commits to main since this release
v0.25.0
50fd517

Highlights

  • Faster synchronous plugin captures: 16% faster than pre-change main on a measured 6,000-file tree; the new createRootFileCopyBatchSync API on advanced also reuses directory admissions across copies. (#878, #849)
  • Guest workspace publication: works on gVisor and other Linux filesystems that reject RENAME_NOREPLACE. (#876)
  • Root-backed sidecar locks: native asynchronous release and exit cleanup no longer strand locks after their Root moves. (#879)
  • Guest cross-device moves: preserve the admitted file permissions. (#869)

Features

  • Guarded copy batches: createRootFileCopyBatchSync on advanced reuses directory admissions across synchronous copies on canonical POSIX paths while rechecking ancestor and file identities for every copy; single-file copies also reuse admission within the operation. (#849)

Fixes

  • Root-backed file locks: native asynchronous release and exit cleanup follow the created lock's retained identity after its Root moves, preserving replacement files and reporting ownership mismatches. (#879) Thanks @axiom-ncis.
  • Temp directory diagnostics: name rejected roots and ancestors, explain ownership, mode, or symlink failures, and provide safe recovery guidance, including for root-run appliances. Thanks @joequant. (#877)
  • Guest directory publication: publish staged workspaces when Linux filesystems reject RENAME_NOREPLACE, with checked file link/unlink fallback and directory rename that can only replace a concurrently created empty directory. (#876) Thanks @valkyriweb.
  • Guest cross-device moves: preserve the admitted source file's permissions instead of leaving the destination with a broader default mode. (#869)
  • Move receipts: publication receipts capture the source identity after synchronous authorization callbacks return, so a source replaced during authorization is reported accurately. (#868)
  • Atomic copy fallback: report a failed restoration as a failure even when the underlying error carries a restored receipt. (#851)
  • Archive read limits: keep the validated entry-read byte limit fixed when callers mutate the options during a read. (#852)
  • Watch on macOS: reconcile notifications for changes to the watched Root itself immediately instead of waiting for the periodic scan. (#858)
  • pathScope tilde names: keep literal ~ directory names inside scoped file and existing-path lookups instead of expanding them. (#856)

Performance

  • Guarded file copies: reuse checked canonical POSIX roots during initial path admission, reducing repeated path-resolution work in synchronous plugin source captures without changing per-file identity or race checks.
  • Root walks: reuse normalized directory prefixes, cutting a 50k-file walk by 5.6% and its sampled allocation by about 9% while keeping every filesystem and identity check. (#870)
  • Atomic writes: non-durable async POSIX writes skip a redundant mode change when the staged file already has the requested permissions. (#871)
  • Guarded mutations: fewer promise allocations around synchronous guard checks, with directory identity checks unchanged. (#857)
  • Archive publication: fewer promise allocations in archive guard checks, without removing identity or containment checks. (#864)
  • Watch: Linux and Windows watch passes skip macOS stream-path preparation. (#860)
  • Permission diagnostics: bound escaping work for large error messages without changing the displayed excerpts. (#859)

Published packages

Package Registry tarball Verified integrity Provenance
@openclaw/fs-safe-linux-x64-gnu@0.25.0 tgz sha512-/OMLec2NpYuBRnDeexaKwJEkgIBrUO78AxSEBqoJpAzbZ9foLvtwxyEyOZfqnTrtrHwkY1PC+ebNMQbZDj6Z7g== verified attestation
@openclaw/fs-safe-linux-x64-musl@0.25.0 tgz sha512-WQXl6zfqS4nbWwDsMx7cAH0jI8sD8DRLrgLv2pygM7lPgbX5zVC7mz8reI632qyYJBHYbg0l+FymNUk0YxocFg== verified attestation
@openclaw/fs-safe-linux-arm64-gnu@0.25.0 tgz sha512-7Cpa7T7s53TpPMH3Uc5iB3SqzHmta/jsU+2xrdBxTk/Ztc2bKy21hPlaoEI/ITMdXL1L0bYxaRvlIzoJH+6XKw== verified attestation
@openclaw/fs-safe-linux-arm64-musl@0.25.0 tgz sha512-9ZeTBNh1OKCSCZzc1Ne4SN96IlFA1qrHs1yclP8vxCXFXGgkTFyX2xwZ8qLuONodPDezifqVxzP66tGvyBQadw== verified attestation
@openclaw/fs-safe-darwin-x64@0.25.0 tgz sha512-HFAAytEr0MN4zZwoLiv3oLmDOJFchanUHl5gi5YQyPTqf7/C0AEuPcR1+gP0dWpuccCEmuxivKE30yriw+WUUw== verified attestation
@openclaw/fs-safe-darwin-arm64@0.25.0 tgz sha512-ftwB6/cM4bdWXn2pBwUSEL4A5ZnX5jh6aEPBhS5Q3Yd/bQgJyWIFTNv4+kC+4QrufuX20/VF/kIjPyu17RcDMg== verified attestation
@openclaw/fs-safe-win32-x64-msvc@0.25.0 tgz sha512-O4cDKqwownShG/LvhxrrQl5sa9D8WSCTT51vzmugi8dAdXGLwaEa+qtpSWJEfA2BY9rQW3ohipHEO92uO52Gbw== verified attestation
@openclaw/fs-safe@0.25.0 tgz sha512-/8XzfW0zulV1BPzjnkD7vRG12u0u517w00rIuAGmW4GU07fxatYSkLHc1GaFCSX/WuLwGPzoxjPSKuRloBprIQ== verified attestation

Release proof: GitHub Actions run.