# Everest Changelog

## v0.12.0

✨ New features and improvements

- `rename(2)` is supported on FUSE and NFS mounts (#3084)
- Faster FUSE mounts. Higher read throughput, and sequential readers get more of their data fetched ahead. `--fuse-attr-cache-ttl` further speeds
  up metadata-heavy workloads by caching file lookups; it is off by default and intended for read-only mounts (#3074, #3307, #3207, #3297)
- `--server-stderr` captures the mount server's stderr, including crash traces. (#3185)

🐛 Bug fixes

- Fix write-mode mounts no longer accumulate a staged data after commit/diff. (#3336)
- Fix FUSE error message in the case of unsupported `rm -r` (#2967)
- Mounting fails with a clear error when the lakeFS endpoint URL is invalid (#2699)
- `--log-output` no longer creates a stray `[` directory (#3002)

## v0.11.0

🐛 Bug fixes

**Many** stability improvements.

- Everest was unable to re-commit if a previous commit failed due to a dirty source branch (#2766)
- Improved Everest's internal lifecycle management for better reliability (#2653)
- Fix truncate bugs (#2978)
- Improve resilience across diff and commit (#2811)
- Cache presigned URLs (#2828)


✨ New features and improvements

- Everest control server address now configurable via `--control-listen`
- Improve prefetch performance (#2653)

## v0.10.0

✨ New features and improvements

- Fast mounts on large repositories. Ranges and metaranges are now fetched lazily from the local cache on first access instead of being downloaded up front. Mounts complete in seconds regardless of repository size or network latency, and no longer hit the client's 30-second timeout. (#2617)
- Apply --log-level, --log-format, and --log-output to every command. The logging flags are now global, so diff, commit, and the other subcommands honor them the same way mount does. (#2638)
- Richer request logging via the user-agent string. HTTP requests now identify themselves with the Everest version, host OS, and mount protocol (e.g. everest/1.2.3 linux/6.17.0-23-generic FUSE), making server-side logs far easier to trace. (#2659)

🐛 Bug fixes

- NFS mounts survive handler panics. A panic in any NFS handler or filesystem operation is now recovered and logged with its stack trace instead of crashing the mount-server process. (#2643)
- Clear error for unsupported mount sources. Mounting a non-lakefs:// source (such as local:// or file://) previously crashed the mount server with a nil-pointer panic. The mount command now rejects these sources up front with a clear "use lakefs://" message. (#2625)
- Idle-read timeout for lakeFS HTTP clients. Hung connections no longer stall mounts indefinitely — an idle-read timeout closes stuck reads so the mount can recover. (#2568)

## v0.9.2

:new: What's new

- mount-server: support fd handoff for unprivileged CSI mounts (#2556)

:bug: Bug fixes

- mount-server: apply RefreshInterval option instead of duplicate URLPresignTTL (#2494). Fixes brief 401s at JWT-expiry boundaries on long-lived mounts.

## v0.9.1

:new: What's new

- Configurable --prefetch-chunks and --max-prefetch-concurrency (#1517, #1586)
- Add golang tracing (#1597).  Can help analyze performance.

:bug: Bug fixes

- Multiple stability improvements.
- Fix overfetching of chunks (#1535 and others).
- Don't report usage messages on license and similar startup failures (#2261)
- Lazily create write-side files.  (#1419)
- A missing field in the internal file representation changed.  Do not
  re-use existing cache directories across this version upgrade. (#1691 et
  al.)
- Report correct errors when killed.
- Fix goroutine leak (#1681)
- Trim whitespace from procfiles (#1683)

## v0.9.0

:new: What's new

- Add pprof and health endpoints to Everest (#1379)

:bug: Bug fixes

- Mark directories dirty using dir.GetPath(). (#1496) Fixes #1485, file
  changes could be ignored by diff and by commit.
- Profiling endpoints now also exposed in readonly mode (#1473)
- fix file descriptor leak in WriteAt (#1398)

## v0.8.0

:new: What's new

- K2 is now the default for FUSE
- The number of hard links will show 2 instead of 0 for directories.
- Mount Windows: Added the calling process info when using DEBUG log level for callbacks

:bug: Bug fixes

- Mount Windows: Fixed --cfapi-data-buffer-size would error on any value other than default

## v0.7.0

:bug: Bug fixes

- Windows: File explorer UI broken with mount (#1253)


## v0.6.2

:new: What's new

- Mount Windows: Modified behavior during `everest mount <mount-dir>`.
  If the mount directory already exists it must be empty otherwise the mount will fail.

## v0.6.1

:bug: Bug fixes

- K2 Scan correct cache directory (#1251)

## v0.6.0

:new: What's new

- K2 is officially the default for NFS!
- Write including Partial Write support (new)
- Respect `--cache-size` (same behaviour as v1 - i.e. only for "read" cache)
- Cleanup write data after commit (backward compatible with v1)
- Commit and Diff support (backward compatible with v1)
- Everest for Windows is now generally available! (Mount read-only operations)

## v0.5.2

:new: What's new

- K2: (NFS only) Complete support in write mode, including:
  - Edit existing files
  - Create files and directories
  - Remove files
- K2: (NFS only) Support diff command
- K2: (NFS only) Support commit command

## v0.5.1

:new: What's new

- K2: NFS write-mode delete file (#841).  However **write mode is not released yet**.

:bug: Bug fixes

- K2: Could not mount some subdirectories (#842) - mount consistently failed for
  subdirectories created in a specific way.
- K2 : Correctly read at long offsets from .everest ("procfiles") (#825)

## v0.5.0

:new: What's new:

- :oncoming_police_car: License enforcement (#205)
- :two: Preview of the new "K2" project.
- Try a faster NFS mount with `--k2 --protocol nfs`. (Many issues & PRs)

:bug: Bug fixes:

- Potential resource leak in partial reads (#877)

## v0.4.0

:new: What's new:

- Authentication Chain supporting AWS IAM role and lakeFS Token (#732)

## v0.3.3

:bug: Bug fixes:

- Successfully mount (all) paths that are subdirectories of repository (#734)
- Merge fix for CVE-2025-30153 (#763)
- Cache SSTable readers to speed up `ls -l` and similar actions (#768)

## v0.3.2

:bug: Bug fixes:

- Plug iterator leak (#759).  This caused file descriptors to leak.
- Use Pebble cache (#759).  This reduced performance.
- The combination of _not_ using a cache with leaking iterators also led to a memory leak.

Together, this release improves performance.

## v0.3.1

:bug: Bug fixes:

- Fixes an issue with sync parallelism (#718)
- Improve HTTP client during sync to use retry (#736)


## v0.3.0

:bug: Bug fixes:

- Fixes an issue with wrong handling of LOOKUP call in fuse causing empty content when attempting to read a file (busybox cat) (#718)

## v0.2.1

:bug: Bug fixes:

- Fixes an issue with wrong handling of loopback files in FUSE (#718)

## v0.2.0

:new: What's new:

- Fuse support for Write Mode! (#682)
  
## v0.1.0

:new: What's new:

- **Write Mode feature first release (NFS)! (#654)** 
- **Use:** When calling `mount`, add the `--write-mode` CLI flag to enable write mode.
- **`everest diff` to see changes:**
  Uploads local changes to the write branch as part of the diff.
- **`everest commit` to commit changes:**
  Commits changes from the write branch to the source branch and clears the write branch, starting a new write branch.

## v0.0.18

:new: What's new:

- Everest partially-reads feature first release! (#627)
