1.0.0-rc.9
Pre-release
cloudflare/artifact-fs1.0.0-rc.9Jul 27, 2026by elithrar
AI Summary
Improves Git worktree compatibility and expands porcelain support across ArtifactFS mounts.
Key Highlights
- Git config semantics now record ArtifactFS semantics
- Daemon no longer runs conflicting background index updates
- Git commands preserve mounted content and index state
New Features
- Git config support for filemode, ignorecase, and symlinks
- Daemon background index update fixes
- Coverage for git reset, clean, stash, merge, rebase, pull, and push
- Executable mode and symlink preservation
- Gitlink representation fixes
Full Release Notes
This release improves Git worktree compatibility and expands tested porcelain support across ArtifactFS mounts. ### Improved git protocol support - `git config --local core.filemode true`, `git config --local core.ignorecase false`, and `git config --local core.symlinks true` now record ArtifactFS semantics instead of inheriting temporary clone filesystem probes. Git now detects executable-bit changes, treats paths as case-sensitive, and handles symlinks correctly. - The daemon no longer runs `git update-index --fsmonitor` or `git update-index --fsmonitor-valid -z --stdin`. Previously, these background index writes could race Git porcelain for `index.lock`; now ArtifactFS configures `core.fsmonitor` and lets Git own index updates. - `git reset --hard`, `git clean -fd`, `git stash push --include-untracked` / `git stash pop`, `git merge --no-ff`, `git rebase`, and `git pull --ff-only` now preserve and reconcile mounted content, modes, index state, and writable overlays. - `git push origin HEAD:<ref>` is now covered against a disposable upstream, including verification that the advertised remote ref matches the pushed commit. ### Bug fixes - Preserve executable modes and symlink targets through `git add`, `git commit`, and `git mv`; keep an unstaged mode change intact when committing staged content. - Represent gitlinks as empty directory placeholders so `git status --porcelain` no longer reports uninitialized submodules as deleted. - Prevent `git status --short` and `git diff --quiet` from treating untouched blobs as modified when their size was not known during directory enumeration. - Preserve inode identity when `git mv` renames an open file, and correctly stale an overwritten destination inode. - Backfill source modes in existing overlays so the first reconciliation after upgrade does not discard metadata-only changes.