Files
Explorer-Workbench/README.md
netquick e9aba73552 Add Explorer Workbench with hierarchical, off-UI Storage analysis.
Storage queries run in the background with cancellation and covering indexes so switching views no longer freezes the UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 12:43:05 +02:00

4.0 KiB
Raw Blame History

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.301 in global.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 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 10000).
  • 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.