github iwe-org/iwe iwe-v0.18.0
v0.18.0

latest releases: iwec-v0.18.0, iwes-v0.18.0
4 hours ago

This release is about staying out of your way in a busy project. Bulk file
changes — a dependency install, a big checkout, a mass delete — no longer pin
the language server at full CPU for minutes; the search index is now rebuilt
once for the whole batch, and only when something actually needs it. Files
your .gitignore excludes stay excluded while watching, not just at startup.
And the index behind the MCP server no longer grows with every edit, so a long
working session keeps steady memory and search speed.

Thanks @bulbigood and @Retengart for the reports that led to these fixes.

iwes

Fixed

  • Bulk filesystem changes no longer stall the server. Adding or deleting many files at once — for example when a package manager rewrites a dependency tree — rebuilds the search index once for the whole batch instead of once per file, turning an operation that ran for minutes at full CPU into one that finishes in well under a second.
  • Files that the initial scan skips are no longer picked up while watching. Changes under directories excluded by .gitignore or .ignore, such as node_modules, are now ignored at runtime too, so they can no longer appear in completions, symbols, or link resolution.

Changed

  • The search index is rebuilt when a search actually needs it, or after a short idle pause, rather than immediately on every document change (previously every keystroke in a large project triggered a full rebuild).

iwec

Fixed

  • The search index behind mutation warnings no longer grows with every edit, so memory and search speed stay steady across a long session.
Library crates (liwe, diwe)

diwe

Added

  • PathFilter in the fs module — decides whether a path belongs to the library using the same hidden-file and ignore-file rules as walk_md_paths, so watching and the initial scan agree on which files count.
  • Bm25Index::avgdl_drift — how far the corpus average document length has moved from the value the index was fit to.

Changed

  • start_watcher and start_poll_watcher skip hidden files and files excluded by .gitignore or .ignore (previously every file with a matching extension was reported).

Fixed

  • Bm25Index reuses document slots instead of abandoning one on every upsert and remove, so a long-lived index no longer grows with the number of edits made to it.
  • Bm25Index re-fits its length normalization once the average document length drifts far enough from the fitted value, so incremental updates no longer score against stale corpus statistics.

Don't miss a new iwe release

NewReleases is sending notifications on new releases.