v0.10.0

dmtrKovalenko/fffv0.10.0Jul 16, 2026by dmtrKovalenko

AI Summary

This is a major version update featuring substantial performance gains through SIMD implementation and a new multiline search capability. It also introduces new SDK features and Neovim UI enhancements.

Key Highlights

  • Significantly faster file walking using SIMD implementation
  • Added multiline search support
  • Exposed file watcher via SDK
  • Enhanced Neovim UI with multi-file selection on Enter
  • Refactored core to collapse SharedFrecency/SharedQueryTracker into SharedDb

New Features

  • Multiline search
  • File watcher exposure
  • Open all multi-selected files on Enter
  • Customizable borders
  • Fuzzy query highlight on file picker
  • Stable FffResult accessors

Full Release Notes

Release 0.10.0

npm packages, rust crates and python wheels are available under this version 0.10.0

## Neovim Plugin
- `{target}.so` / `.dylib` / `.dll` - Lua module for Neovim

## C FFI Library (for Bun/Node/Python)
- `c-lib-{target}.so` / `.dylib` / `.dll` - C FFI library

## MCP Server
- `fff-mcp-{target}` - MCP server binary

## Python Package
- `python/*.whl` / `python/*.tar.gz` - Python wheels and sdist
- Install from PyPI: `pip install fff-search` (when published)

Update mcp via:
```sh
curl -fsSL https://raw.githubusercontent.com/dmtrKovalenko/fff.nvim/main/install-mcp.sh | bash
```


## What's Changed
* fix: do not skip ci on release artifact commit by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/625
* fix(mcp): self-exit after idle timeout (prototype for #633) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/634
* docs(nvim): add visual-mode example for fc keymap (#631) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/632
* feat: expose follow_symlinks for SDK/MCP/python paths by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/628
* chore: regenerate Neovim vimdoc by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/636
* fix: File preview highlight not work on multi words query by @thuan1412 in https://github.com/dmtrKovalenko/fff/pull/637
* feat(nvim): open all multi-selected files on cr by @gshahbazian in https://github.com/dmtrKovalenko/fff/pull/544
* feat(nvim): add layout.border to override winborder by @willothy in https://github.com/dmtrKovalenko/fff/pull/639
* chore: regenerate Neovim vimdoc by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/640
* feat(zig): be less strict on the zig executable by @chpf in https://github.com/dmtrKovalenko/fff/pull/643
* fix(nvim): use configurable grep_match hl in preview (#646) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/647
* fix(log): create log file when arming SIGSEGV handler fd by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/648
* feat: Significantly faster per-platform optimized file walking & gitignore matcher by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/645
* refactor(core): collapse SharedFrecency/SharedQueryTracker into generic SharedDb by @seuros in https://github.com/dmtrKovalenko/fff/pull/617
* fix(pi-fff): feature-detect ctx.ui.addAutocompleteProvider (#651) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/653
* fix: Fuzzy tech caught watcher inconsistencies by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/644
* fix(score): size chunk ptr buffers to PATH_MAX instead of 512 bytes by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/655
* fix(core): restrict AVX2 normalize to x86_64 (fix i686 build) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/657
* chore: Bump frizbee to 0.11 by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/658
* fix(readme): typo on bun package name by @EduSantosBrito in https://github.com/dmtrKovalenko/fff/pull/662
* fix(core): emit compile_error for --no-default-features (#659) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/661
* chore(deps): Bump zlob to 1.6.1 by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/663
* feat: Expand internal SIMD memmem implemenation and use it everywhere by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/666
* refactor: Split grep.rs into a few modules by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/667
* chore(deps): bump crossbeam-epoch, anyhow, memmap2 for RustSec advisories (#670) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/671
* feat: Mulitline search by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/676
* chore: regenerate Neovim vimdoc by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/677
* fix(pi-fff): isomorphic bun/node SDK lazy-load by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/669
* docs(readme): add FAQ answering what FFF stands for by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/680
* fix(picker_ui): highlight fuzzy query matches on file picker by @pompos02 in https://github.com/dmtrKovalenko/fff/pull/673
* fix(pi-fff): aux finder pool for out-of-workspace path constraints (#463) by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/622
* feat(c): add stable FffResult accessors by @ciolansteen in https://github.com/dmtrKovalenko/fff/pull/681
* chore: regenerate Neovim vimdoc by @gustav-fff in https://github.com/dmtrKovalenko/fff/pull/683
* feat(sdk): Expose file watcher by @dmtrKovalenko in https://github.com/dmtrKovalenko/fff/pull/674

## New Contributors
* @willothy made their first contribution in https://github.com/dmtrKovalenko/fff/pull/639
* @chpf made their first contribution in https://github.com/dmtrKovalenko/fff/pull/643
* @seuros made their first contribution in https://github.com/dmtrKovalenko/fff/pull/617
* @EduSantosBrito made their first contribution in https://github.com/dmtrKovalenko/fff/pull/662
* @pompos02 made their first contribution in https://github.com/dmtrKovalenko/fff/pull/673

**Full Changelog**: https://github.com/dmtrKovalenko/fff/compare/v0.9.6...v0.10.0