# 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](https://dotnet.microsoft.com/download) (this repo pins `10.0.301` in `global.json`) - No administrator privileges required ## Build ```powershell dotnet build Explorer.slnx -c Release ``` ## Run ```powershell dotnet run --project src/Explorer.App -c Release ``` The executable is `src/Explorer.App/bin/Release/net10.0-windows/Explorer.App.exe`. ## Tests ```powershell 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 `Explorer` is temporary; app data uses `ExplorerWorkbench`. - 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_size` is not applied; it caused unreliable native SQLite startup under concurrent test hosts. - UI chrome is English; German `.resx` files are not wired through every control in this run. ## License Use as a private/local project unless otherwise specified.