Co-authored-by: Cursor <cursoragent@cursor.com>
Explorer Workbench
Working name for a Windows file manager with persistent memory: live Explorer browsing plus a SQLite index for search, folder sizes, offline media and storage analysis.
Mental model:
Open Explorer → see files → manage files → search immediately → analyze storage.
The index is infrastructure. You never need to know about SQLite, FTS or change journals to use the app.
Requirements
- Windows 10 version 1809 or later, or Windows 11
- .NET 10 SDK (this repo pins
10.0.301inglobal.json) - No administrator privileges required
Build
dotnet build Explorer.slnx -c Release
Run
dotnet run --project src/Explorer.App -c Release
The executable is src/Explorer.App/bin/Release/net10.0-windows/Explorer.App.exe.
Tests
dotnet test Explorer.slnx -c Release
Architecture overview
Modular monolith (see docs/ARCHITECTURE.md):
| Project | Role |
|---|---|
Explorer.App |
WPF shell, themes, composition |
Explorer.Presentation |
ViewModels (no WPF types) |
Explorer.Application |
Use-cases (browse, sources) |
Explorer.Domain |
Entities, identity, excludes |
Explorer.Indexing |
Full scan, folder reconcile, USN apply, watchers |
Explorer.Search |
Structured SearchQuery → index |
Explorer.Analysis |
Top-N, types, duplicates, history rollups |
Explorer.FileOperations |
Transfer queue, copy/move/delete |
Explorer.Storage.Sqlite |
Schema, WAL, FTS5 |
Explorer.Windows |
Volumes, USN, Recycle Bin, CopyFileEx |
Listing is hybrid: the open folder always comes from the live filesystem when the location is online. Folder sizes, search, analysis and offline media come from the index.
Database location
%LocalAppData%\ExplorerWorkbench\index.db
Never stored beside the executable.
Logging location
%LocalAppData%\ExplorerWorkbench\logs\explorer-YYYYMMDD.log
Indexing behavior
- Browsing local drives works immediately with an empty index.
- Initial indexing is user-triggered (banner Build index or the toolbar Index button).
- Scans run in the background, write in batches, skip inaccessible paths, and can be cancelled.
- Local NTFS volumes use the USN change journal when the process can open it; otherwise folder reconcile +
FileSystemWatcher(best effort; overflow marks the location as possibly out of date). - SMB/UNC paths are added manually (address bar or Add network). The Windows Network neighborhood is not enumerated.
- Default excludes include
C:\Windows, recycle bins,node_modules,.git, and similar.
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Alt+Left / Back |
Back |
Alt+Right |
Forward |
Alt+Up |
Up |
F5 |
Refresh |
Enter |
Open |
F2 |
Rename |
Ctrl+C / Ctrl+X / Ctrl+V |
Copy / Cut / Paste |
Delete |
Delete to Recycle Bin |
Ctrl+T |
New tab |
Ctrl+W |
Close tab |
Drag and drop copies by default; hold Shift to move.
Known limitations
- Product name
Exploreris temporary; app data usesExplorerWorkbench. - UI strings are English in this build; resource structure can take German later.
- Everything-like search syntax is not implemented; name/glob plus size/type/date filters are.
- USN requires privileges Windows does not grant to a normal desktop process on many volumes — fallback is used then.
- Duplicate hashing is staged (size → partial hash → full hash only when partial hashes still collide) and runs in the background; confirmed groups appear after hashing finishes.
- No treemap, no document full-text, no cloud providers, no installer/MSIX in this run.
- Very large folders rely on WPF virtualization; search results are paged (500, hard cap 10 000).
mmap_sizeis not applied; it caused unreliable native SQLite startup under concurrent test hosts.- UI chrome is English; German
.resxfiles are not wired through every control in this run.
License
Use as a private/local project unless otherwise specified.