Skip to content

fs-safe 0.22.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 06:01
· 239 commits to main since this release
v0.22.0
ef7b5a9

Highlights

  • One-way publication: retainEntryForPublication on advanced provides no-replace export for POSIX directories, regular files and direct symlinks, plus Windows NTFS files, directories, symbolic links and junctions. (#776, #778, #779)
  • Windows path hardening: reject foreign UNC shares and device namespaces before filesystem probes, blocking attacker-chosen SMB lookups, NTLM exposure and stalls. (#781, #784)
  • Watch overflow fixes: Linux watch-retirement echoes no longer overflow unrelated subscriptions; Linux and macOS classify undecodable names, Linux preserves nameless lifecycle events, and macOS cleans up failed startup correctly. (#782, #783, #769)

Features

  • One-way publication: retainEntryForPublication retains source and parent identities for native no-replace export on supported local POSIX filesystems and Windows NTFS. It supports directories, regular files and direct symbolic links, plus NTFS junctions; link targets stay opaque, and POSIX relative and dangling targets retain their exact bytes. Commit, indeterminate and close failures remain distinct. Requires caller-exclusive source namespaces, with no source-CAS or automatic rollback guarantee; disposal only closes retained resources and never deletes either location. (#776, #778, #779)

Fixes

  • Watch name handling: ignore undecodable unselected siblings, fail closed for selected tree names on Linux and macOS, and preserve Linux directory lifecycle detail without spurious overflow. (#783)
  • Windows UNC admission: Root, root-file readers, pathScope, isPathInside, secret-file writers, sibling-temp output, trash admission, and archive output preparation reject foreign UNC shares and device namespaces before probing them, comparing hosts without Unicode case folding, preventing attacker-chosen SMB lookups, NTLM exposure, and stalls. Existing containment errors are preserved; absolute paths on another share no longer resolve through aliases back into the boundary. (#781, #784)
  • Linux watch isolation: closing or replacing a watch, including after a scan failure, no longer overflows unrelated subscriptions. (#782)
  • macOS watch startup: clean up rejected FSEvents configuration and failed stream startup with the correct lifecycle calls, keeping the registration available for retry. (#769)

Performance

  • Bounded temporary-directory cleanup: avoid a redundant descriptor metadata read for each descendant directory on Linux and macOS, while retaining fresh name identity checks before removal. (#760)
  • Atomic temp cleanup: use the file identity captured after creation, avoiding an unnecessary metadata lookup and preserving preexisting temporary paths. (#772)

Compatibility

  • Windows now rejects foreign UNC shares and device namespaces before probing them. Absolute paths on another share no longer resolve through aliases back into the boundary; callers that relied on that behavior must pass in-boundary paths. (#781, #784)

Published packages

Package Registry tarball Verified integrity Provenance
@openclaw/fs-safe-linux-x64-gnu@0.22.0 tgz sha512-xTb3icn5X+SREL30NNXy1ZgjkGGWanRm9Wsk5pGm96Iy1DWY18HRyjnhDHCthZ402JiVBXCJR/8nsdHI0loaRg== verified attestation
@openclaw/fs-safe-linux-x64-musl@0.22.0 tgz sha512-oOxSQNtPxEJRDUsydXX4TVw/vGXKxUR1bW8wieEsxlhJob+fbRcSZb6YyznPkGiirhcpCwwXgQwQbaD+9Ho9Hg== verified attestation
@openclaw/fs-safe-linux-arm64-gnu@0.22.0 tgz sha512-nwZl03/waPnBh7lKFnDiF7RfT85D9Ngbw23LL7jb2ilXu32zge4gqufYYIoLXk0EGL3bLkwssgnpxy7ErRQWow== verified attestation
@openclaw/fs-safe-linux-arm64-musl@0.22.0 tgz sha512-2Gvr1vUvSpbdkAeUuYU8DmgzRGPx88V4quX1AWNZdFuip9SsGkbaBLx3kZlR4OFlEo6HxgGPS7KZanaG17nKSg== verified attestation
@openclaw/fs-safe-darwin-x64@0.22.0 tgz sha512-rkcMsgbQQzNFcEjq74J0hbwMoHlVXtQzC5owdAU6QG1O2UTGIPROpwNXmo1Phmz4tSTXwCKlH5vxxSgSHMv8Mw== verified attestation
@openclaw/fs-safe-darwin-arm64@0.22.0 tgz sha512-u7HSbjJAIiWZ0iFJzoXymMJUn0EMzJGMFtX7aIbQk2W6Sz+UxTuXszJk79yYNF46kxKXjlu9Vkx3oazT/6mE5g== verified attestation
@openclaw/fs-safe-win32-x64-msvc@0.22.0 tgz sha512-V0MR0A3nYbvJofxdcKfgp8sU46UDAESV2wxh4w4+coxPkfEFfedJa2tz0L1Fc1wFEcZPXIbywXNhOy2qF6QZug== verified attestation
@openclaw/fs-safe@0.22.0 tgz sha512-CW/T0NUcdn8PLVBgyXUbIn90a16uhP3YtKdd+eqJjmg0FR01KCCjCI3PxrvK1ygrUb/BfQsJJe+hXA9+/0rqKQ== verified attestation

Release proof: GitHub Actions run.