File size: 5,176 Bytes
fdec9f4
2672a30
68e7686
2672a30
fdec9f4
 
 
68e7686
 
 
 
 
 
 
 
 
 
 
 
2917198
 
68e7686
 
 
 
fdec9f4
 
68e7686
fdec9f4
68e7686
 
 
 
 
fdec9f4
 
 
 
68e7686
fdec9f4
 
 
 
 
68e7686
fdec9f4
 
 
68e7686
fdec9f4
68e7686
fdec9f4
68e7686
fdec9f4
68e7686
fdec9f4
68e7686
2917198
68e7686
 
 
fdec9f4
68e7686
fdec9f4
 
68e7686
 
 
 
2917198
fdec9f4
2917198
 
 
68e7686
 
2917198
fdec9f4
 
 
68e7686
 
 
 
 
fdec9f4
 
68e7686
fdec9f4
 
 
68e7686
 
 
 
 
 
 
 
 
 
 
 
2917198
68e7686
 
2917198
68e7686
 
 
 
 
 
 
 
 
 
 
fdec9f4
 
 
68e7686
fdec9f4
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# FastSeek - macOS Spotlight-style File Search for Windows

A blazing-fast file search tool for Windows that indexes all files using the NTFS Master File Table (MFT) directly, wrapped in a beautiful macOS Spotlight-style UI powered by **Tauri v2**.

## Architecture

```
fastsearch-core/          (Rust library β€” your original engine, unchanged)
  β”œβ”€β”€ src/index/search.rs  (Fuzzy search with rayon parallelism)
  β”œβ”€β”€ src/index/store.rs   (In-memory arena index + LZ4 cache)
  β”œβ”€β”€ src/mft/reader.rs    (Direct NTFS MFT parsing)
  β”œβ”€β”€ src/mft/watcher.rs   (USN journal live updates)
  └── src/utils/drives.rs  (NTFS drive detection)

fastsearch-tauri/         (Tauri v2 desktop app)
  β”œβ”€β”€ src-tauri/
  β”‚   β”œβ”€β”€ src/main.rs      (Backend: tray, global shortcuts, window mgmt)
  β”‚   β”œβ”€β”€ capabilities/    (Tauri v2 permissions system)
  β”‚   β”œβ”€β”€ tauri.conf.json  (v2 config)
  β”‚   β”œβ”€β”€ Cargo.toml       (v2 deps + plugins)
  β”‚   └── icons/           (Generated by create_icons.py)
  └── ui/
      β”œβ”€β”€ index.html       (Spotlight-style layout)
      β”œβ”€β”€ styles.css       (Frosted glass, dark theme, animations)
      └── app.js           (Instant search, keyboard nav)
```

## Why Tauri v2?

- **Keep your Rust core intact** β€” MFT scanning, indexing, and search logic stays in Rust with zero changes
- **Native Windows integration** β€” System tray, global shortcuts (Win+Space), native window management
- **Beautiful UI** β€” HTML/CSS/JS frontend with macOS Spotlight aesthetics: blur effects, smooth animations
- **Small footprint** β€” ~5-10MB vs Electron's 100MB+
- **Capabilities-based security** β€” Tauri v2's permission model

## Why NOT C#?

- Your core is already Rust with deep Windows kernel integration (NTFS MFT parsing, USN journal watching)
- Porting to C# would require rewriting all `unsafe` Win32 interop, MFT parsing, USN journal code
- Rust β†’ C# FFI is complex and loses performance advantages
- Tauri gives you a better UI with less effort while keeping your Rust engine

## Features

- ⚑ **Instant search** β€” Indexes millions of files in seconds via NTFS MFT
- πŸ” **Fuzzy matching** with ranking (exact β†’ starts with β†’ contains)
- πŸ“‚ **Live index updates** via USN journal watching
- 🎨 **Spotlight-style UI** with blur backdrop, smooth animations
- ⌨️ **Global shortcuts**: `Win+Space` to open, `ESC` to close
- πŸ–±οΈ **Navigation**: `↑` `↓` arrows, `Enter` to open, `Ctrl+Enter` to reveal in Explorer
- πŸ’Ύ **Smart caching** β€” Compressed LZ4 cache with delta catch-up on restart
- 🚫 **Directory exclusions** via UI
- πŸ”” **System tray** β€” Menu with Show/Quit, left-click to toggle

## Prerequisites

- **Rust** toolchain (stable, β‰₯ 1.77.2) β€” [rustup.rs](https://rustup.rs/)
- **Python 3** (to generate placeholder icons)
- **Windows 10/11** (NTFS MFT scanning won't work on Linux/Mac)
- **Administrator** privileges (required for MFT direct access)
- **Microsoft Edge WebView2** (usually pre-installed on Win10/11)

## Clone & Build

```bash
# 1. Clone
git clone https://huggingface.co/anshdadhich/finder
cd finder

# 2. Generate placeholder icons (or replace with real ones later)
cd fastsearch-tauri
python create_icons.py

# 3. Build & run in dev mode (admin PowerShell)
cargo tauri dev

# 4. Build release installer
cargo tauri build
```

Release artifacts:
```
src-tauri/target/release/fastsearch-tauri.exe   (standalone)
src-tauri/target/release/bundle/msi/*.msi        (Windows installer)
src-tauri/target/release/bundle/nsis/*.exe       (NSIS installer)
```

> **Important**: Run PowerShell **as Administrator** before `cargo tauri dev`. The MFT scanner requires elevated privileges.

## Usage

| Shortcut | Action |
|----------|--------|
| `Win + Space` | Open/close search overlay |
| `ESC` | Close search |
| `↑` / `↓` | Navigate results |
| `Enter` | Open file/folder |
| `Ctrl + Enter` | Reveal in File Explorer |

## Troubleshooting

| Error | Fix |
|-------|-----|
| `icons/icon.ico not found; required for generating a Windows Resource` | Run `python create_icons.py` to generate placeholder icons |
| `"identifier" is a required property` | Your `cargo tauri` is v1. Upgrade: `cargo install tauri-cli --force` |
| `No NTFS drives found` | Run as Administrator |
| `devUrl is not a uri` | Already fixed β€” pull latest from repo |

## Tech Stack

| Layer | Technology |
|-------|-----------|
| Core engine | Rust (`windows` crate, MFT direct read, USN journals, LZ4, rayon) |
| Desktop framework | Tauri v2 |
| Global shortcuts | `tauri-plugin-global-shortcut` v2 |
| Shell/open | `tauri-plugin-shell` v2 |
| Frontend | Plain HTML/CSS/JS (no build step needed) |
| UI style | macOS Spotlight-inspired (frosted glass, dark theme) |

## Original Engine

The core file search engine (`fastsearch-core/`) was written by **anshdadhich** and uses:
- Direct NTFS MFT reading for lightning-fast indexing
- USN (Update Sequence Number) journal for live file system tracking
- In-memory arena-based index with binary search lookups
- LZ4-compressed persistent cache
- Rayon's parallel iterators for search