A native Windows disk space analyzer. DiskScope scans a drive or folder and shows where the space went — through a treemap, a directory tree, largest-file and file-type reports, duplicate detection and historical comparison — while staying local, private and non-destructive by default.
Everything is built against the design specification in
Native Windows Disk Space Analyzer — Product & Technical Design Specification.md,
which remains the authority on scope and behaviour.
All ten phases are complete. DiskScope is a working disk analyzer: pick a drive or folder, watch the scan run, and explore what it found through a dashboard, an interactive treemap, an expandable directory tree, file-type and file-age breakdowns, a largest-files list and search. Files and folders can be opened, revealed in Explorer or sent to the Recycle Bin, and duplicate files found without reading a drive to do it. Scans are saved and reopened from the history, and exported as CSV, JSON or an HTML report. It ships as a portable ZIP and a per-user installer.
| Phase | Scope | Status |
|---|---|---|
| 1 | Solution, DI, logging, configuration, MVVM, shell window, navigation, themes | Complete |
| 2 | Scanner: enumeration, metadata, cancellation, progress, aggregation | Complete |
| 3 | Persistence: SQLite schema, batch writes, scan sessions | Complete |
| 4 | Basic UI: drive selection, scan screen, dashboard, tree, largest files | Complete |
| 5 | Visualization: treemap, file-type and modified-date analysis | Complete |
| 6 | Search: name, path, size and date filters over a stored scan | Complete |
| 7 | File operations: open, reveal, copy path, Recycle Bin, confirmation | Complete |
| 8 | Duplicate finder: size, partial hash, full hash, hard-link aware | Complete |
| 9 | Reports and export: CSV, JSON, and a self-contained HTML report | Complete |
| 10 | Polish: single instance, high contrast, installer, portable build | Complete |
Cleanup (design spec section 16) is the one section still showing its empty state: it is not part of any phase, and it recommends what to delete rather than deleting anything new. Nothing in the application simulates a scan.
- Windows 10 or Windows 11, 64-bit
- .NET SDK 10.0 or newer to build (the repository is developed against 10.0.400)
The application itself runs as a standard user. It never requests elevation for normal operation.
dotnet restore
dotnet build
dotnet test
dotnet run --project src/DiskScope.AppBuild output goes to artifacts/ rather than per-project bin/ and obj/ folders.
To build what is distributed — a portable ZIP and a per-user installer:
./build/publish.ps1See docs/PACKAGING.md; the installer step needs the WiX toolset and says so if it is missing.
Pick a drive on the home screen, or Choose folder... for anywhere else. The scan screen shows live counters and can be paused or cancelled; when it finishes, the dashboard opens by itself.
- Overview — what the volume holds and what the scan found, kept apart on purpose.
- Treemap — every folder drawn in proportion. Hover to describe, double-click to open, and colour by folder, file type or size.
- Folders — the directory tree, largest first, opened a level at a time.
- Largest Files — the biggest files anywhere in the scan, with size filters.
- File Types — what kinds of file are using the space, by category and by extension.
- Modified — how much of the scan has been sitting untouched.
- Search — find files by name, folder, size or date without walking the disk again.
- Duplicates — files with identical contents, and what keeping one copy would free.
- History — every saved scan; reopen one without walking the disk again.
The Overview screen exports the scan as CSV or JSON for a spreadsheet or another program, or as a self-contained HTML report to read and share (one file, nothing fetched when it is opened).
Search matches a word anywhere in the name. * and ? work as they do in a shell, and a
bare extension such as .iso finds files of that type. Size, age and ordering are buttons
rather than syntax to remember, and results come back as you type.
Right-click anything in a list, the folder tree or the treemap to open it, show it in Explorer, copy its path, see its properties or delete it. Deleting sends the item to the Recycle Bin and asks first, showing what will go and how large it is; permanent deletion is a setting, and always asks. The stored scan is a record of what the disk held when it ran, so its totals do not change until you scan again.
Ctrl+O chooses a folder, Ctrl+F searches, F5 scans the current location again, Esc
stops a scan. In a list: Enter opens, Ctrl+C copies the path, Alt+Enter shows
properties, Delete deletes.
DiskScope.exe "D:\Projects" scans that folder on startup. Only one copy runs at a time:
starting a second brings the first forward and hands it the folder.
When Windows is using a high contrast theme, DiskScope follows its colours rather than its own.
The benchmark harness runs the same engine without the interface:
dotnet run --project tools/DiskScope.Benchmark -- scan "C:\Windows" --store
dotnet run --project tools/DiskScope.Benchmark -- list
dotnet run --project tools/DiskScope.Benchmark -- show 1
dotnet run --project tools/DiskScope.Benchmark -- duplicates 1 --minimum-size 1048576
dotnet run --project tools/DiskScope.Benchmark -- export 1 report.htmlscan walks a real tree and reports throughput, memory and anything it could not read;
--store persists it into the same database the application reads. See
docs/PERFORMANCE.md for measured numbers and
docs/DATABASE.md for what gets stored.
By default the application is installed: data, logs and configuration live under
%LOCALAPPDATA%\DiskScope. An installed application must never write mutable state into
its own program directory.
Placing a file named DiskScope.portable next to DiskScope.exe switches it to
portable mode, where Data, Logs and Config sit beside the executable instead. If
that directory turns out not to be writable, the per-user location is used and a warning
is written to the log.
The About screen shows which mode is active and the exact directories in use.
src/
DiskScope.App WPF shell: views, view models, navigation, theming
DiskScope.Core Domain models, interfaces, product identity, settings contracts
DiskScope.Infrastructure Logging, settings persistence, application paths, DI wiring
DiskScope.Scanner Scanning engine
DiskScope.Duplicates Duplicate detection: size grouping, staged hashing
DiskScope.Export CSV, JSON and HTML report writing
DiskScope.Storage SQLite persistence of scans and scan history
DiskScope.Visualization Treemap layout, colour palettes, chart geometry
DiskScope.Windows Windows platform services
tests/
DiskScope.Tests Unit and integration tests
tools/
DiskScope.Benchmark Scanner benchmark harness and tree generator
build/
publish.ps1 Builds the portable ZIP and the installer
Package.wxs The WiX installer definition
docs/
ARCHITECTURE.md How the projects fit together
DEVELOPMENT.md Working on the codebase
SCANNER.md How the scanning engine works
DATABASE.md Schema, write strategy and the decisions behind them
VISUALIZATION.md Treemap, colour and the chart screens
FILE-OPERATIONS.md Opening, revealing and deleting, and the rules around them
DUPLICATES.md How duplicate detection narrows the field before reading
EXPORT.md Writing scans out as data or as a report
PACKAGING.md The portable ZIP and the per-user installer
PERFORMANCE.md Measured numbers and how to reproduce them
Documentation is written by the phase that creates the thing it describes, so more files appear here as later phases land.
DiskScope is entirely local. It has no account, no telemetry, no analytics and no network calls of any kind. File names and paths never leave the machine.
MIT. DiskScope is an independent implementation; no code, artwork or UI resources are taken from any other disk analysis product.