Spotlight-style launcher for Windows built with Tauri 2 + React + TypeScript.
This repository is currently scoped through Phase 4 kickoff (Start Menu collector) from winsearch-spotlight-plan.md.
The most important WinSearch outcome is now explicitly file-first:
- very fast file-name search
- file content search (supported text-based files)
- open file directly
- reveal file location in Windows File Explorer
These are treated as must-have release requirements.
Committed roadmap expansion after V1:
- OCR text search support (images/PDFs)
- duplicate and large-file discovery tools
- recent-activity surfacing and recency-aware ranking
Default indexing behavior target:
- first-run full scan of user folders
- budgeted incremental scan on app open
- watcher-driven updates
- low-impact gaming-friendly defaults (no heavy always-on background scan)
- includes OneDrive roots automatically when OneDrive is present
Current implementation status for this policy:
- startup uses budgeted incremental scan of default user folders for faster boot
- watcher-driven updates are wired with debounce
- manual full refresh performs heavy full-scan catch-up
- startup indexing tasks run in background so overlay/hotkey can come up faster
- UI controls include manual full refresh, pause/resume indexing, and indexing status display
- content search is backed by SQLite FTS5 with name/content/recency ranking
npm install
npm run tauri:devIf this is your first clone, run the setup helper:
npm run setupnpm run dev- start Vite frontend on127.0.0.1:1420npm run tauri:dev- start desktop app with Rust backendnpm run build- type-check and build frontend assetsnpm run tauri:build- create Tauri production buildnpm run lint- run ESLintnpm run format- apply Prettier formattingnpm run test- run Vitest suitenpm run check- lint + test + build
src/- React UI shell, runtime config, and frontend loggingsrc-tauri/src/- Rust application entrypoint and Tauri commandssrc-tauri/src/db/- SQLite index store and migration runnersrc-tauri/src/collectors/- app source collectors (Start Menu currently)src-tauri/migrations/- SQL migration files for local index schemasrc-tauri/capabilities/- Tauri capability permissionsscripts/- local setup helpersdocs/- implementation and engineering conventions
- Phase 1 complete: repository bootstrap and engineering foundations
- Phase 2 complete: hidden overlay window, global hotkey registration, and focus-safe open/close loop
- Phase 3 foundation complete: SQLite schema, migration path, and initial index store APIs
- Phase 4 started: Start Menu collector plus first filesystem collector/index commands
- Node.js and npm
- Rust toolchain (
rustup,cargo,rustc) on PATH
Without Rust installed, npm run tauri:dev cannot launch the desktop app.
.env.development- dev defaults (verbose logging, relaxed limits).env.production- production defaults (reduced logging).env.example- template for local overrides
- Frontend logs are routed through
src/lib/logger.tsand gated byVITE_LOG_LEVEL. - Global handlers in
src/main.tsxcapture uncaught errors and unhandled rejections. - Rust backend initializes
tracinginsrc-tauri/src/lib.rsand readsRUST_LOGoverrides.