Skip to content

v2.2.0 — launch freeze fix, Tantivy-only, config hot-reload

Choose a tag to compare

@haxllo haxllo released this 21 Jun 21:22
· 1018 commits to master since this release

Fixes three launch-critical bugs from v2.1.0 and removes the legacy FTS5 search backend.

Changelog (24 commits since v2.1.0)

Bug Fixes

  • SQLITE_BUSY launch freeze: Launch path now reads from in-memory cache instead of the DB, avoiding 5-6s blocks when the background indexer holds the SQLite lock. Added WAL journal mode and busy timeout to the DB connection for concurrent access.
  • Warm-release hotkey miss: Setting show_pending before build_webview blocks spurious Escape from Tao's Focused events during WebView rebuild. Also prevents rapid second hotkey from toggling the overlay closed before the first show completes.
  • Session clearing race: Drains the clear channel after receiving a search request so the first post-hide query doesn't use cached results from before the hide.
  • Index sync staleness: sync_indexes_from_cache now compares backend doc counts against the actual cache item count, not just zero vs non-zero.
  • Tantivy incremental sync misses: Iterates max_doc (not num_docs) and skips deleted docs via the alive bitset after deletions.
  • Config hot-reload stale in search worker: Config and plugin registry are now shared via Arc<RwLock<>> so changes to show_files, show_folders, plugin toggles, etc. take effect immediately without restart.
  • Console flash on launch: Added CREATE_NO_WINDOW to plugin command and explorer.exe spawns.
  • Diagnostics privacy: Raw config and logs are now opt-in (NEX_INCLUDE_RAW_DIAGNOSTICS=1). Query profile logs now show a hash instead of readable text.

Architecture

  • Removed FTS5 search backend: Tantivy is strictly better in every way (BM25 ranking, fuzzy, prefix, phrase). FTS5 only existed as a fallback for Tantivy init failures, which never happened in practice. Removed the entire fts5_search module, SearchBackend config enum, and all dual-backend sync paths. Tantivy is now the sole indexed search backend.
  • Removed JSON config template: Only TOML templates are written going forward. JSON loading preserved for backward compatibility.
  • Default hotkey changed: From Ctrl+Shift+Space to Ctrl+Space.

Commit Log

  • 6283ee7 fix: resolve SQLITE_BUSY launch freeze by reading from cache + WAL mode
  • 3697862 fix: set show_pending before build_webview to prevent spurious Escape on focus loss
  • 2e1428c fix: rapid second hotkey no longer hides overlay during warm-release rebuild
  • c8e1b91 fix: sync_indexes_from_cache compares doc count against cache, not just non-zero
  • 039aaad fix: drain clear channel after recv to fix clear_session() race (#4)
  • 406273a fix: Tantivy incremental sync iterates max_doc with alive bitset (#6)
  • fc8ebd0 fix: share config between runtime worker and search worker via Arc (#3)
  • fd4eeba fix: suppress console flash on plugin/explorer launches (#8)
  • 15d1aaa fix: diagnostics privacy — raw config/logs opt-in, query text hashed (#9)
  • d5904bf fix: normalize Windows path IDs to lowercase (#7)
  • 25deb94 feat: remove FTS5 search backend, Tantivy only (#5)
  • fe263a2 feat: change default hotkey to Ctrl+Space, remove JSON config template
  • 403a86e fix: guard stale pruner startup

Binary