Repository navigation
v2.2.0 — launch freeze fix, Tantivy-only, config hot-reload
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_pendingbeforebuild_webviewblocks spuriousEscapefrom Tao'sFocusedevents 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_cachenow compares backend doc counts against the actual cache item count, not just zero vs non-zero. - Tantivy incremental sync misses: Iterates
max_doc(notnum_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 toshow_files,show_folders, plugin toggles, etc. take effect immediately without restart. - Console flash on launch: Added
CREATE_NO_WINDOWto 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_searchmodule,SearchBackendconfig 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+SpacetoCtrl+Space.
Commit Log
6283ee7fix: resolve SQLITE_BUSY launch freeze by reading from cache + WAL mode3697862fix: set show_pending before build_webview to prevent spurious Escape on focus loss2e1428cfix: rapid second hotkey no longer hides overlay during warm-release rebuildc8e1b91fix: sync_indexes_from_cache compares doc count against cache, not just non-zero039aaadfix: drain clear channel after recv to fix clear_session() race (#4)406273afix: Tantivy incremental sync iterates max_doc with alive bitset (#6)fc8ebd0fix: share config between runtime worker and search worker via Arc (#3)fd4eebafix: suppress console flash on plugin/explorer launches (#8)15d1aaafix: diagnostics privacy — raw config/logs opt-in, query text hashed (#9)d5904bffix: normalize Windows path IDs to lowercase (#7)25deb94feat: remove FTS5 search backend, Tantivy only (#5)fe263a2feat: change default hotkey to Ctrl+Space, remove JSON config template403a86efix: guard stale pruner startup