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