235 Commits

Author SHA1 Message Date
Dmitriy Kovalenko 1b79eecb58 chore: release 0.6.2
Prebuild / Build Neovim aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim aarch64-linux-android (push) Has been cancelled
Prebuild / Build Neovim aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build Neovim x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI aarch64-linux-android (push) Has been cancelled
Prebuild / Build C FFI aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Publish Rust crates (push) Has been cancelled
Prebuild / Publish npm packages (push) Has been cancelled
Prebuild / Release (push) Has been cancelled
0.6.2-nightly.71c33e6 0.6.3-nightly.0c5c784 0.6.3-nightly.1b79eec 0.6.3-nightly.b22b07f 0.6.3-nightly.b815868 v0.6.2
2026-04-22 10:35:22 -07:00
Dmitriy Kovalenko 71c33e63b2 fix(nvim): Correctly handle different cwds (#410)
* fix(nvim): Correctly handle different cwds

* fix(ci): suppress missing-fields diagnostic in test file

* fix(test): clear DirChanged autocmd to prevent race in e2e suite

* fix(test): normalize paths for cross-platform comparison in e2e

* fix(test): robust path normalization for Windows 8.3 names and case

* fix(test): use fs_realpath for Windows 8.3 name expansion

* fix(test): constrain grep test to .rs files to avoid flaky ordering

* fix(constraints): double-negation bug in Not(Glob(...)) filtering
2026-04-22 10:34:47 -07:00
Dmitriy Kovalenko acd2f0ce2f chore: fix integrity of npm lockfile 0.6.2-nightly.51cc9d7 0.6.2-nightly.56d9234 0.6.2-nightly.5b49a54 0.6.2-nightly.8cb6b18 0.6.2-nightly.8d95b92 0.6.2-nightly.acd2f0c 0.6.2-nightly.c0cd445 0.6.2-nightly.f5131f7 2026-04-22 08:14:51 -07:00
Dmitriy Kovalenko 8298260c64 chore: Upgarde zlob and use zig 0.16 (#401)
* chore: Upgarde zlob and biome

* chore: Update docs for - chore: Upgarde zlob and biome

* fix(nix): redirect Zig cache dirs out of /homeless-shelter

Zig 0.16 writes to $HOME/.cache/zig even when --global-cache-dir is
passed, which fails in the nix sandbox where $HOME is /homeless-shelter.
Point ZIG_*_CACHE_DIR and XDG_CACHE_HOME at $TMPDIR instead.

* chore: Update docs for - fix(nix): redirect Zig cache dirs out of /homeless-shelter

* chore: lock zlob at 1.3.3

Cargo.toml was bumped to 1.3.3 but Cargo.lock still pinned the
1.3.3-dev.5 prerelease, which made cargo's vendored dir fail resolution
under crane's nix build.
0.6.2-nightly.46d2438 0.6.2-nightly.5671d95 0.6.2-nightly.8298260
2026-04-21 20:51:18 -07:00
Dmitriy Kovalenko 24d71a468a perf: Reduce amount fs watchers used for detecting criticial git changes (#409) 0.6.2-nightly.12a67fb 0.6.2-nightly.24d71a4 0.6.2-nightly.3b51e98 0.6.2-nightly.5470bb4 0.6.2-nightly.77c293c 0.6.2-nightly.85df89d 0.6.2-nightly.a677d64 0.6.2-nightly.ee67d06 2026-04-21 16:48:03 -07:00
Dmitriy Kovalenko a677d645fd fix(grep): avoid duplicate results from bitset overflow overlap (#408)
* fix(grep): avoid duplicate results from bitset overflow overlap

Restrict the bigram candidate bitset iteration to indexed files only,
since overflow files are appended unconditionally by the overflow loop.
The bitset is sized to ceil(base_file_count / 64) * 64 bits, so when
base_file_count is not a multiple of 64 trailing bits can map to file
indices in the overflow range. If any of those bits are set (e.g. via
overlay modified-file merging), the same file was previously pushed
twice — once by the bitset loop and once by the overflow loop —
producing duplicate grep results.

Closes #407

* chore: Update docs for - fix(grep): avoid duplicate results from bitset overflow overlap

* fix fmt

* fix(file_picker): index only base files in bigram filter

Root cause of #407: when watcher events landed between the initial
scan completing and the background bigram-index build snapshotting
`sync_data.files()`, the snapshot included overflow files. The filter
was built with `file_count = base + overflow`, but the overlay was
created with only `base_file_count`. At grep time, the candidate
bitset legitimately carried bits for overflow file indices (from the
filter), and the overflow-append loop pushed those same files again
producing duplicates.

Snapshot `base_count` alongside `files` and pass `&files[..base_count]`
to `build_bigram_index` so the filter and overlay agree on which
files are indexed. The grep-side `file_idx < overflow_start` guard
stays in place as a defensive check.
2026-04-21 16:09:37 -07:00
roach a24cf55c2b fix: avoid unicode filepath suffix panic (#393)
* fix: avoid unicode filepath suffix panic

* fix: prevent unicode char boundary panics in all constraint functions

The previous fix (a09292e) only guarded path_ends_with_suffix with
path.get(start..), but three problems remained:

1. path_ends_with_suffix: path_bytes[start - 1] reads inside a
   multi-byte char when start is a valid boundary but start-1 is not.
   Fixed by scanning backward to find the preceding ASCII byte.

2. path_contains_segment: path[..segment_len] and path[start..end]
   slice at non-char-boundary offsets when segment is ASCII but the
   path contains multi-byte UTF-8 (Korean, etc).
   Fixed with is_char_boundary() checks before each slice.

3. file_has_extension: same byte-offset issue for dot_pos.
   Fixed with is_char_boundary() check.

Adds regression tests with the exact Korean filenames that caused
panics (커리큘럼, 세부_커리큘럼_최종, 설치-및-기본-사용, etc).
Merges upstream unicode tests (apostrophe, narrow-space mismatches).

---------

Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
0.6.2-nightly.4fd0051 0.6.2-nightly.6e10f0a 0.6.2-nightly.9526e68 0.6.2-nightly.a24cf55 0.6.2-nightly.b82e71b 0.6.2-nightly.befd5d5 0.6.2-nightly.e882a13 0.6.2-nightly.eed227c
2026-04-21 06:35:34 -07:00
Dmitriy Kovalenko 464f9d8b85 chore: Convert bench grep to criterion (#402)
* chore: Convert bench grep to criterion

* chore: Update docs for - chore: Convert bench grep to criterion
0.6.2-nightly.464f9d8
2026-04-20 17:46:25 -07:00
Fernando Basilis 743ab60f48 fix(windows): directorySearch returns 0 results on Windows (#394)
* fix(windows): normalize path separators for directorySearch

* fix: all the usage of literal path separator

* fix: macos tests

* feat: Official pi fff extension (#374)

* feat: add pi extension for FFF file search

Add @ff-labs/pi-fff package providing pi coding agent integration:

- Overrides built-in find/grep tools with FFF-powered versions
- Adds multi_grep tool for SIMD-accelerated multi-pattern search
- Replaces @-mention autocomplete with FFF frecency-ranked suggestions
- Commands: /fff-health, /fff-rescan, /fff-mode (with immediate switch)
- Streamlined implementation: 26% code reduction (800→590 lines)

Published as pi package: npm:@ff-labs/pi-fff

* docs: fix install instructions

- Remove git install option (doesn't work for monorepo subfolders)
- Remove config file from mode precedence (no longer used)
- Keep npm as only recommended install method

* feat: add root pi manifest for git installs

Add pi configuration to root package.json pointing to packages/pi-fff.
This enables:
  pi install git:github.com/dmtrKovalenko/fff.nvim

The root stays private (not published to npm), but pi can now discover
the extension from the git repo structure.

* docs: add git install instructions

Now that root package.json has pi manifest, git installs work:
  pi install git:github.com/dmtrKovalenko/fff.nvim

* fix: address PR review feedback

- Add config file persistence for /fff-mode (fixes 'persist' claim)
- Add readConfigMode() and writeConfigMode() helpers
- Use applyEditorMode() in /fff-mode command (DRY)
- Add publishConfig.access: 'public' for npm publishing
- Fix @types/node to ^22.0.0 (align with repo)
- Remove ignoreCase parameter (FFF doesn't support force case-insensitive)
- Run Biome formatter (fix tab indentation)

* update toolnames and add to release pipeline

* do not override default tools

* Make an option to override the default tools

* fix: macos tests

* better toolnames mangement

---------

Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>

* chore: release 0.6.1

* chore: fix versioning of pi package

* add tests

* get rid of all rfinds

---------

Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
Co-authored-by: Samuel Huber <40248495+SamuelLHuber@users.noreply.github.com>
0.6.2-nightly.20048cf 0.6.2-nightly.743ab60
2026-04-20 15:42:17 -07:00
Ionut Ciolan 4daf8bbc50 feat(fff-c): add stable C accessor functions for external FFI consumers (#395)
* feat(fff-c): add stable C accessor functions for external FFI consumers

* fff-c: add accessor unit tests (8 tests, 0 warnings)

Tests cover:
- Null-pointer guards: every getter returns its zero-value (0 / false /
  null) when passed a null pointer — no UB, no crash
- Data correctness: FffFileItem, FffGrepMatch, FffSearchResult and
  FffGrepResult getters return exactly the values stored in the struct

All 8 tests pass clean under Rust 2024 edition (no unsafe-op warnings).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* style: apply cargo fmt formatting

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Ionut Adrian Ciolan <iadrian@ciolan.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
0.6.2-nightly.2201fae 0.6.2-nightly.4daf8bb
2026-04-20 12:56:32 -07:00
Dimitar Dimitrov 2201faee5f feat(neovim): Add layout.anchor config options for picker placement (#399) 2026-04-20 12:56:20 -07:00
Quan Nguyen 7bad9f2484 fix(parser): accept "git" key alias in negated git-status constraints (#397) 0.6.2-nightly.7bad9f2 2026-04-20 12:07:46 -07:00
Dmitriy Kovalenko 91545f832c chore: fix versioning of pi package 0.6.2-nightly.91545f8 2026-04-19 16:22:15 -07:00
Dmitriy Kovalenko 8f23da638b chore: release 0.6.1
Prebuild / Build Neovim aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim aarch64-linux-android (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build Neovim x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI aarch64-linux-android (push) Has been cancelled
Prebuild / Build C FFI aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Release (push) Has been cancelled
Prebuild / Publish Rust crates (push) Has been cancelled
Prebuild / Publish npm packages (push) Has been cancelled
0.6.1-nightly.cfea91c 0.6.2-nightly.8f23da6 v0.6.1
2026-04-19 13:47:48 -07:00
Samuel Huber cfea91ce88 feat: Official pi fff extension (#374)
* feat: add pi extension for FFF file search

Add @ff-labs/pi-fff package providing pi coding agent integration:

- Overrides built-in find/grep tools with FFF-powered versions
- Adds multi_grep tool for SIMD-accelerated multi-pattern search
- Replaces @-mention autocomplete with FFF frecency-ranked suggestions
- Commands: /fff-health, /fff-rescan, /fff-mode (with immediate switch)
- Streamlined implementation: 26% code reduction (800→590 lines)

Published as pi package: npm:@ff-labs/pi-fff

* docs: fix install instructions

- Remove git install option (doesn't work for monorepo subfolders)
- Remove config file from mode precedence (no longer used)
- Keep npm as only recommended install method

* feat: add root pi manifest for git installs

Add pi configuration to root package.json pointing to packages/pi-fff.
This enables:
  pi install git:github.com/dmtrKovalenko/fff.nvim

The root stays private (not published to npm), but pi can now discover
the extension from the git repo structure.

* docs: add git install instructions

Now that root package.json has pi manifest, git installs work:
  pi install git:github.com/dmtrKovalenko/fff.nvim

* fix: address PR review feedback

- Add config file persistence for /fff-mode (fixes 'persist' claim)
- Add readConfigMode() and writeConfigMode() helpers
- Use applyEditorMode() in /fff-mode command (DRY)
- Add publishConfig.access: 'public' for npm publishing
- Fix @types/node to ^22.0.0 (align with repo)
- Remove ignoreCase parameter (FFF doesn't support force case-insensitive)
- Run Biome formatter (fix tab indentation)

* update toolnames and add to release pipeline

* do not override default tools

* Make an option to override the default tools

* fix: macos tests

* better toolnames mangement

---------

Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
2026-04-19 13:44:08 -07:00
Dmitriy Kovalenko cc9ce2501a fix: macos tests 0.6.1-nightly.cc9ce25 2026-04-19 13:25:46 -07:00
Dmitriy Kovalenko 2465c2cad6 chore: release 0.6.0
Prebuild / Build Neovim aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim aarch64-linux-android (push) Has been cancelled
Prebuild / Build Neovim aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI aarch64-linux-android (push) Has been cancelled
Prebuild / Build C FFI aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Release (push) Has been cancelled
Prebuild / Publish Rust crates (push) Has been cancelled
Prebuild / Publish npm packages (push) Has been cancelled
0.6.1-nightly.2465c2c 0.5.3-nightly.59702f3 0.5.3-nightly.e5f444b 0.5.3-nightly.d4eee08 0.5.3-nightly.d5f558d 0.5.3-nightly.e2ce56a v0.6.0
2026-04-18 17:01:43 -07:00
Dmitriy Kovalenko 59702f3c2e breaking(sdk): Rename several options & add more flags to control (#392)
* breaking(sdk): Rename several options & add more flags to control

* chore: Update docs for - breaking(sdk): Rename several options & add more flags to control
2026-04-18 17:01:01 -07:00
Dmitriy Kovalenko e2ce56ae51 fix(inotify): Watch files in new created directories (#391)
There are 2 problems:

1. There is a fixed limit of how many fsevents streams macos can spawn per process
2. New created directories are not getting watched

This fixes both
0.5.3-nightly.ed4c608 0.5.3-nightly.cbec9b1
2026-04-18 16:52:16 -07:00
Dmitriy Kovalenko ed4c60833b feat: Directories and mixed files & directories search (#390) 2026-04-18 16:32:06 -07:00
Dmitriy Kovalenko cebacb3c35 feat!: Revamp & optimize the way strings are stored in RAM (#387)
* wip: Paths and dirs

* feat: att 2

* final changes

* feat!: Revamp & optimize the way paths are stored

This is a very crucial redesign that actually required a lot of
consideration to move forward but now it allows us to save a lot of RAM,
acutally improves query time and gives an ability to query directories
for free

* fix: Wrong pointer

* chore: Update docs for - fix: Wrong pointer

* fix: notify debouncer on macos

* get rid of flienma_ptrs juggling

* consolidate arena/picker via pub trait
0.5.3-nightly.3b6bb5b 0.5.3-nightly.46f5452 0.5.3-nightly.cebacb3 0.5.3-nightly.e1e4c19
2026-04-17 22:51:31 -07:00
Dmitriy Kovalenko 689e31284a chore: Improve chunking when reading files for grep (#379) 0.5.3-nightly.36d6875 0.5.3-nightly.41e0d8f 0.5.3-nightly.689e312 0.5.3-nightly.f5be3f7 2026-04-17 20:43:45 -07:00
Timo Clasen c450a8d346 fix: do close picker immediately on <C-c> in vim mode (#385)
* fix: close picker immediately on <C-c> in vim mode

When prompt_vim_mode is enabled, <C-c> in insert mode was just leaving
insert (Neovim default) instead of closing the picker. Map it explicitly
to close.

* chore: Update docs for - fix: close picker immediately on <C-c> in vim mode
0.5.3-nightly.36edc7a 0.5.3-nightly.3d06d4e 0.5.3-nightly.c450a8d
2026-04-17 11:17:35 -07:00
Farrel Darian 77881a1c92 feat: optional vim-mode in prompt input (#384)
* feat: enable vim-mode

* feat: handle cursor move to move up until prefix

* feat: make it configurable

* docs: vim_mode

* docs: update to prompt_vim_mode

Co-authored-by: Dmitriy Kovalenko <dmitriy@iusevimbtw.com>

* refactor: rename vim_mode to prompt_vim_mode

Matches the maintainer's preferred naming from PR review: since this is a
neovim plugin, the flag scope is clarified by the prompt_ prefix.

* style: collapse single-statement if for stylua

---------

Co-authored-by: Dmitriy Kovalenko <dmitriy@iusevimbtw.com>
0.5.3-nightly.77881a1
2026-04-16 20:22:30 -07:00
Rodrigo Santa Cruz 7de55be63d feat: create new qflist instead of replacing (#377) 0.5.3-nightly.18a7af0 0.5.3-nightly.7de55be 0.5.3-nightly.e77bbef 0.5.3-nightly.fb339f7 0.5.3-nightly.d61c63b 2026-04-14 19:49:01 -07:00
Dmitriy Kovalenko 2606dce6bc fix: Perfromance regression (#376)
* fix: Perfromance regression

* chore: Update docs for - fix: Perfromance regression
0.5.3-nightly.2606dce 0.5.3-nightly.7c30055
2026-04-14 17:03:10 -07:00
Dmitriy Kovalenko 8912a1abdb fix: Unicode segmentation crash (#373)
* fix: Unicode segmentation crash

closes https://github.com/dmtrKovalenko/fff.nvim/issues/369

* chore: Update docs for - fix: Unicode segmentation crash
0.5.3-nightly.5515969 0.5.3-nightly.5b10cb3 0.5.3-nightly.690fbcf 0.5.3-nightly.8912a1a
2026-04-13 16:26:29 -07:00
Dmitriy Kovalenko d25ea7562b feat: Correct bonuses for actual path prefix (#372)
* feat: Correct bonuses for actual path prefix

The issue is related to the fact that long prefix similarity the suffix
difference got neglected as a small typo which is wrong

* chore: Update docs for - feat: Correct bonuses for actual path prefix
0.5.3-nightly.318713d 0.5.3-nightly.ad188ea 0.5.3-nightly.ccbab83 0.5.3-nightly.d25ea75
2026-04-13 14:32:13 -07:00
Cocoon-Break ea1f9802d7 fix: restore FFFClearCache command implementation (#338) 0.5.3-nightly.fba1fce 0.5.3-nightly.7fdd2c3 0.5.3-nightly.84cf658 0.5.3-nightly.ea1f980 2026-04-10 05:56:58 -07:00
Dmitriy Kovalenko 07e90e5898 feat: fuzzy perfilter for grep (#362)
* feat: Prefilter for grep

* chore: Update docs for - feat: Prefilter for grep
0.5.3-nightly.07e90e5
2026-04-09 19:26:33 -07:00
Dmitriy Kovalenko 0fd47ab72d feat: Prefiltering for regex and multigrep (#361) 0.5.3-nightly.30af4de 0.5.3-nightly.04badb2 0.5.3-nightly.0fd47ab 2026-04-09 10:33:28 -07:00
Dmitriy Kovalenko 7979004d77 feat: trim_whitespace option for grep (#356)
* feat: trim_whitespace optin for grep

closes https://github.com/dmtrKovalenko/fff.nvim/issues/307

* chore: Update docs for - feat: trim_whitespace optin for grep
0.5.3-nightly.2725081 0.5.3-nightly.4221710 0.5.3-nightly.59421bb 0.5.3-nightly.7979004 0.5.3-nightly.84846e0 0.5.3-nightly.9d27e15 0.5.3-nightly.ce6476b
2026-04-09 07:23:44 -07:00
aiwao 210bc9e1c7 docs: fix syntax error in the installation guide for vim.pack (#358) 0.5.3-nightly.0439325 0.5.3-nightly.210bc9e 2026-04-08 21:10:37 -07:00
Dmitriy Kovalenko 205f9d6db9 fix: Excessive usage of system file watchers (#357)
* fix: Excessive usage of system file watchers

* chore: Update docs for - fix: Excessive usage of system file watchers
0.5.3-nightly.205f9d6
2026-04-08 17:53:03 -07:00
Dmitriy Kovalenko 406bf2531c feat: Cross compile with thin lto (#355)
* feat: Compile with thin lto

* chore: Update docs for - feat: Compile with thin lto
0.5.3-nightly.2e36583 0.5.3-nightly.406bf25
2026-04-08 16:45:07 -07:00
Dmitriy Kovalenko 42a12051d8 fix: Single parenthesis error (#354)
fixes https://github.com/dmtrKovalenko/fff.nvim/issues/351
0.5.3-nightly.42a1205 0.5.3-nightly.4acf4a4 0.5.3-nightly.d3fb74c
2026-04-08 15:00:17 -07:00
Matt Van Horn 477a8a2c96 fix(grep): align preview highlight stripping with Rust query parser (#343)
* fix(grep): align preview highlight stripping with Rust query parser

The Lua heuristic in highlight_grep_matches used a simple prefix check
(^[*!/] or ^.) to strip constraints. This diverged from the Rust
GrepConfig parser in several ways:

- Multi-word queries like 'foo bar *.rs' only highlighted 'foo'
- Constraint prefixes like type:rust were not stripped
- Tokens starting with '.' were incorrectly treated as constraints
- Escaped constraint tokens (e.g. \*.config) were not handled

Replace the heuristic with _is_grep_constraint() that matches the
Rust parser's actual GrepConfig rules: extensions (*.rs), path segments
(/src/), exclusions (!test), type filters (type:rust), and path-oriented
globs. Use all text parts joined with space for highlighting, matching
grep_text() on the Rust side.

Fixes #331

* refactor(grep): expose parsed query to lua via Rust function

Replace the Lua-side constraint detection (_is_grep_constraint) with a
new parse_grep_query() function that delegates to the Rust GrepConfig
parser. This keeps the Rust parser as the single source of truth for
query parsing, avoiding drift when new token types are added.

The new function is exposed to Lua as fff.parse_grep_query(query) and
returns a table with the grep_text field (the search text with all
constraints stripped).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0.5.3-nightly.0239c97 0.5.3-nightly.29585a4 0.5.3-nightly.477a8a2 0.5.3-nightly.9a6ee3d
2026-04-08 14:21:11 -07:00
Dmitriy Kovalenko 9a6ee3d18a fix: Highglight application for termgui themes (#353)
closes https://github.com/dmtrKovalenko/fff.nvim/issues/346
2026-04-08 14:20:13 -07:00
aiwao 29585a4aa3 docs: fix installation guide for vim.pack (#352)
* doc: fix installation guide for vim.pack

* doc: fix installation guide for vim.pack
2026-04-08 14:20:01 -07:00
Dmitriy Kovalenko 1c2c0633cd fix: Added files sometimes not greppable (#350)
* fix: Added files sometimes not greppable

* chore: Update docs for - fix: Added files sometimes not greppable

* chore: add test
0.5.3-nightly.0e4c5cd 0.5.3-nightly.1c2c063
2026-04-07 17:57:49 -07:00
Dmitriy Kovalenko 5158ba64b8 fix: Crash if rescan triggered before bigramming is over (#349) 0.5.3-nightly.5158ba6 0.5.3-nightly.5236527 0.5.3-nightly.71f0c3b 0.5.3-nightly.b3a61d7 2026-04-07 15:23:13 -07:00
Dmitriy Kovalenko 51e0ef7a64 perf: Hint allocator to release memory back to OS (#348)
* perf: Hint allocator to release memory back to OS

* chore: Update docs for - perf: Hint allocator to release memory back to OS
0.5.3-nightly.15f6ef1 0.5.3-nightly.2187135 0.5.3-nightly.51e0ef7 0.5.3-nightly.94a7039
2026-04-07 12:28:11 -07:00
Antonio Nuno Monteiro cd0efe50d3 fix: suspend/restore set paste when loading picker UI (#334) 0.5.3-nightly.0091bfb 0.5.3-nightly.214f966 0.5.3-nightly.cd0efe5 2026-04-07 09:21:30 -07:00
Dmitriy Kovalenko 541c3f5722 perf: Packed byte layout for file item (reduce ram usage) (#344)
* perf: Packed byte layout for file item (reduce ram usage)

* chore: Update docs for - perf: Packed byte layout for file item (reduce ram usage)
0.5.3-nightly.541c3f5
2026-04-06 12:29:40 -07:00
Trevin Chow 59d626dacd fix: coerce Blob values to string in format_file_display (#342)
vim.json.decode returns Blobs instead of strings when the decoded
value contains NUL bytes. Passing a Blob to strdisplaywidth triggers
E976. Guard item.name and item.directory the same way
grep_renderer.lua already guards line_content.

Fixes #310
0.5.3-nightly.59d626d 0.5.3-nightly.6b0b12b 0.5.3-nightly.93a6baa
2026-04-06 07:57:29 -07:00
Dmitriy Kovalenko 29e6480ea0 chore: release 0.5.2
Prebuild / Build Neovim aarch64-linux-android (push) Has been cancelled
Prebuild / Build Neovim aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build Neovim x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build Neovim x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build Neovim x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI aarch64-linux-android (push) Has been cancelled
Prebuild / Build C FFI aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build C FFI x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build C FFI x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build C FFI x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP aarch64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP aarch64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP aarch64-unknown-linux-musl (push) Has been cancelled
Prebuild / Build MCP x86_64-apple-darwin (push) Has been cancelled
Prebuild / Build MCP x86_64-pc-windows-msvc (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-gnu (push) Has been cancelled
Prebuild / Build MCP x86_64-unknown-linux-musl (push) Has been cancelled
Prebuild / Publish Rust crates (push) Has been cancelled
Prebuild / Publish npm packages (push) Has been cancelled
Prebuild / Release (push) Has been cancelled
0.5.3-nightly.29e6480 v0.5.2
2026-04-04 18:12:17 -07:00
Antonio Nuno Monteiro db4cd2825c fix(preview): avoid ftplugin side effects in scratch preview buffers (#335) 0.5.2-nightly.db4cd28 2026-04-04 02:53:04 -07:00
Magnus Malm b1c4f8e7d7 chore: add serialization accessors to BigramFilter (#330)
* feat: add serialization accessors to BigramFilter

Add read-only accessors and a from_raw_parts constructor to
BigramFilter, enabling external tools to serialize/deserialize
the bigram index to/from disk without reaching into private fields.

New public methods:
- lookup(), dense_data(), words(), dense_count(), populated()
- skip_index() -> Option<&BigramFilter>
- from_raw_parts(lookup, dense_data, ...) -> Self

* Remove section header, rename from_raw_parts to reconstruct

* fix lint and rename

* fix ci

---------

Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
0.5.2-nightly.b1c4f8e
2026-04-03 16:41:44 -07:00
RoomWithOutRoof feaae7de28 fix(mcp): accept whole-number float maxResults from MCP clients (#328)
* fix(mcp): accept whole-number float maxResults from MCP clients

Some MCP clients serialize integer values as floats (e.g., 30.0 instead of 30).
This change allows the MCP server to accept both usize and whole-number f64
values for the maxResults parameter, while rejecting fractional values.

* fix it properly

* fix ci

* fix spellcheck

---------

Co-authored-by: RoomWithOutRoof <taizi@sparklab.io>
Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
0.5.2-nightly.feaae7d
2026-04-03 16:16:12 -07:00
Dmitriy Kovalenko c2d76b5466 fix: Indexing on root dirs consumes a lot of CPU and memory (#332)
* feat: Improve indexing in the root folder

* chore: Update docs for - feat: Improve indexing in the root folder
0.5.2-nightly.c2d76b5
2026-04-03 12:58:43 -07:00