Skip to content

v2.13.0 — Creation actions, URL rows & index self-heal

Choose a tag to compare

@haxllo haxllo released this 05 Aug 14:53
· 697 commits to master since this release

Nex 2.13.0 brings type-to-create actions — unmatched queries now offer folder creation (trailing \), file creation (known extensions), and bare-domain URL opening in your default browser — plus a hardened search backend: tantivy fields are stored (fixing vanished app types), a single writer with re-seed, and mid-run self-healing when the index schema changes. Icon extraction is now icon-only (no more file thumbnails) at 256px native resolution, and a batch of overlay resize/row fixes land, including an integral 46px row height that eliminates the 1px bottom strip on small windows.

Changelog (50 commits since v2.12.0)

Features

  • Create folder on unmatched query: type a path ending in \ (e.g. D:\projects\new\) → "Create folder" row; nested paths allowed, illegal characters rejected, existing paths offer "Open folder". Configurable target via default_create_dir.
  • Create file on unmatched query: whitelisted extensions (create_file_extensions, 18 common types) → "Create file" row using create_new (never overwrites); Windows reserved names (CON, PRN, NUL, COM/LPT…) rejected.
  • Open URL on unmatched query: bare domains (youtube.com) and explicit http(s):// URLs → "Open in browser" row via open_url_in_default_browser + url_tlds (32 TLDs); also reachable in command mode (> youtube.com).
  • Fresh installs index files + folders by default: show_files/show_folders now default to true; upgrading users keep their existing config.
  • Custom folder + file placeholder icons: Explorer shell icons replaced with bundled themed icons until real icons load.
  • Extended built-in excludes: AI CLI workdirs, rustup toolchains, WebView caches, dev cache dirs, shell artifacts.
  • Kind-first result ordering: apps hoisted above files/folders in the tantivy path, tier-aware regrouping, BM25 as within-tier signal, dedupe-before-top-hit guard.

Bug Fixes

  • Tantivy schema: kind and subtitle are now STORED — previously they were indexed-only, so every tantivy result read back an empty kind, breaking app hoist and grid rendering.
  • Tantivy writer: single writer instance + re-seed on open (kills dual-writer meta.json corruption); empty index re-seeds live.
  • Mid-run index self-heal: schema mismatch/corruption now resets and rebuilds during the next sync — no restart required.
  • TopHit row: only rendered for apps; non-app results group under section headers; single non-app result no longer vanishes.
  • 1px bottom strip: row height was fractional (46.22px) — Math.ceil window sizing left an unpainted strip; rows are now an integral 46px.
  • Icon extraction: icon-only flags (no thumbnails), native-size canvas for small icons (no upscale blur), 256px request for all items.
  • Overlay resize: immediate resize on structural transitions (grid flips, action rows), immediate growth on row-count jumps, synchronous shrink, stable grid columns via scrollbar-gutter.

Architecture

  • Creation actions registry: action rows (folder/file/URL/web) injected in the search session merge with exact-title-match suppression; dispatch through launch_path / launch_open_target.
  • Icon pipeline: single reset helper shared by boot-time and mid-run tantivy recovery paths.

Commit Log

  • 65cfe46 release: bump version to 2.13.0
  • be2d2ab fix(ui): integral 46px row height — kills 1px bottom strip on small windows
  • 9e5c20b fix(tantivy): self-heal schema-mismatched index mid-run, no restart
  • cd88661 feat(url): open bare domains / explicit URLs in default browser — phase 3
  • 5dc963d docs: creation features plan + issues entries
  • 9fb19d1 fix(icons): icon-only extraction, native-size canvas, 256 request for all items
  • 83eccc3 fix(overlay): immediate resize on structural transitions (grid flips, action rows)
  • b815e78 feat(create): folder + file creation rows on unmatched queries
  • fc12479 fix(overlay): single non-app result no longer vanishes — stays in kind bucket
  • b8d134e feat(config): default show_files/show_folders true for fresh installs
  • 27de5aa fix(overlay): TopHit row only for apps — non-app results group under section headers
  • df3317d fix(search): store kind+subtitle in tantivy schema — restore app hoist + grid
  • 2d47d48 fix(result): hoist apps first in tantivy path + path-based dedupe
  • ddfcc5a fix(search): case-insensitive tantivy title prefix matching
  • 4ef470d fix(icons): size ladder — 64px extraction for generic file types
  • 097e3ec feat(index): exclude AI CLI workdirs, rustup toolchains, webview caches
  • 81496ec feat(index): extend built-in excludes — dev cache dirs + shell artifacts
  • 19ed5c6 merge: feat/folder-icon — custom folder + file placeholder icons
  • a989f23 merge: fix/tantivy-empty-index — single tantivy writer + re-seed on open
  • 2233206 feat(overlay): file placeholder icon until shell icon loads
  • f261e8e feat(overlay): custom folder icon replaces Explorer shell icons
  • f1b0701 fix(index): single tantivy writer + re-seed on open
  • f9eceaa fix(2-B1): stable grid columns — scrollbar-gutter + 104px min, kills 22px cell-width flip
  • d16e19f fix(overlay): immediate growth on >=2 row-count jumps — covers mixed apps+non-apps erase case
  • a543d69 fix(overlay): immediate growth for structural jumps (>=70px) — covers erase-grow from small result sets
  • 65c85ad fix(overlay): immediate grow from idle empty state — kills erase-letter escape flash
  • dad7f02 docs(2-PartC): add grid-view rendering checklist
  • 5675292 fix(overlay): apply shrink resize synchronously, skip stale keystroke measure
  • 692b3bb fix(2-B1B2): exclude calculator rows from row-list class
  • 792ab2d fix(2-B1B2): bump row-list selectors to .row.row-list, defeat grid-cell specificity
  • ac8f32c refactor(2-B3): remove redundant single-row exemption
  • 2e083d2 feat(2-B1B2): add row-list overrides for non-app rows in grid view
  • 0990a2b feat(2-B1B2): add per-row grid/list classes in render loop
  • 0468e74 test(1-A1): fix A3 tautology — assert TopHit beats lower-tier index-0 item
  • 1a15743 test(1-A1): add unit tests for kind-first ordering and TopHit selection
  • 54cbdf5 docs(1-A4): clarify command_mode deterministic action ordering
  • e95b197 feat(1-A1): kind-first result ordering supersedes tier-beats-kind
  • 3a8352b docs: add apps-first result-ordering spec
  • 114b255 Merge branch 'feat/result-sorting' — result ranking fixes 1-7
  • fa66377 fix(result-sorting-7): dedupe before top-hit confidence guard
  • 67370e4 fix(result-sorting-6): uninstall actions scored by app name not wrapper
  • 9bdd0c4 fix(result-sorting-5): pinned-to-top only during idle empty query
  • 435a54b fix(result-sorting-4): -120 file/folder penalty only in app mode
  • 040b01d fix(result-sorting-3): BM25 as within-tier signal, not separate tier mask
  • 0a16a3f fix(result-sorting-2): shrink scoring tier gaps, retune top-hit guard deltas
  • b784905 fix(result-sorting-1): tier-aware kind regrouping in overlay rows
  • 466f222 docs: README — Win-key Start-menu replacement, trim CLI commands (GUI app); AGENTS.md: release workflows not delegated
  • 8323d06 docs: rewrite v2.12.0 release notes per RELEASE-TEMPLATE
  • 86e7029 docs: align 2.8.1/2.9.0/2.9.1 release notes with template
  • 496dd9d docs: align v2.12.0 release notes with template

Binary