Skip to content

Releases: egorb2302/pathmemo

pathmemo 0.2.4

Choose a tag to compare

@github-actions github-actions released this 02 Oct 12:10

Windows 10 1809 or later, x64 or arm64. One file, self-contained - no installer, and
no runtime to install alongside it.

  1. Download pathmemo-0.2.4-win-x64.zip, or -win-arm64 on an ARM machine.
  2. Unpack it anywhere.
  3. Double-click pathmemo.exe for the window, or run it from a terminal:
    pathmemo scan, pathmemo top --min 1GB, pathmemo audit.

Windows will warn that the publisher is unknown, because the executable is not
code-signed. Choose More info -> Run anyway, or check your download against the
SHA-256 below first.

Administrator rights are optional, and change what the scanner can see: with them it
reads $MFT directly, which is roughly 40x faster and reaches paths a directory walk is
denied.

Nothing is deleted without an explicit confirmation, and what is deleted goes to a
quarantine that pathmemo restore reverses.


Two rules that named the wrong thing, and one piece of advice that could cost a Solana
program its address.

Fixed

  • dev.cargo advised cargo clean. A bare cargo clean deletes the whole target,
    target\deploy included, and that folder holds the Solana program keypairs the rule
    itself is written never to touch. The rule now gives no command: pathmemo deletes only
    the build directories it lists.
  • dev.cargo also claimed ~\.cargo\registry and offered cargo clean for it, which
    never touches the registry. The registry is its own rule now, dev.cargo_registry
    (safe, redownload): the next build fetches what it needs.
  • VS Code's extension packages were reported as Visual Studio's state.
    CachedExtensionVSIXs is VS Code's store of downloaded .vsix files, not a Visual
    Studio folder. It has its own rule, dev.vscode_vsix_cache (safe, redownload);
    dev.vs_artifacts keeps .vs.
  • README: the release publishes zips, not bare pathmemo-win-*.exe files, and a winget
    install keeps the exe in winget's own packages folder. The rules table (§7.2) had drifted
    from the rules and now matches them again: Unity's Library and its two conditions, the
    shader and Electron cache paths, Chromium's Code Cache, Explorer's icon cache, the
    pyvenv.cfg that makes a venv a virtual environment, Docker's vhdx paths, the
    1 MB floor on old logs and installers, git gc from 500 MB and large media from 1 GB inclusive, installers in
    subfolders of Downloads, and %TEMP% emptied rather than removed.

Changed

  • 38 rules. A config.json that disables dev.cargo or dev.vs_artifacts to keep the
    registry or the VSIX cache out of the report now needs dev.cargo_registry or
    dev.vscode_vsix_cache in rules.disabled as well.

408 tests; the two new ones pin the split rules and that no Rust rule advises
cargo clean.


SHA-256

ec6cbff61e2fe712cf668c1c8582066f116bbf636a9327a8b74037bc5142e6c9  pathmemo-0.2.4-win-arm64.zip
e2d753cd5ff8cb523e1ef2ff8c4d96fb9334d1ca00c0740c088cef95f01a2a4c  pathmemo-0.2.4-win-x64.zip

pathmemo 0.2.3

Choose a tag to compare

@github-actions github-actions released this 01 Oct 10:59

Windows 10 1809 or later, x64 or arm64. One file, self-contained - no installer, and
no runtime to install alongside it.

  1. Download pathmemo-0.2.3-win-x64.zip, or -win-arm64 on an ARM machine.
  2. Unpack it anywhere.
  3. Double-click pathmemo.exe for the window, or run it from a terminal:
    pathmemo scan, pathmemo top --min 1GB, pathmemo audit.

Windows will warn that the publisher is unknown, because the executable is not
code-signed. Choose More info -> Run anyway, or check your download against the
SHA-256 below first.

Administrator rights are optional, and change what the scanner can see: with them it
reads $MFT directly, which is roughly 40x faster and reaches paths a directory walk is
denied.

Nothing is deleted without an explicit confirmation, and what is deleted goes to a
quarantine that pathmemo restore reverses.


The Reclaim tab, in the window, and five rules for a JavaScript and Solana machine.

Added

  • Reclaim in the window. The tab that said not in the window yet now shows the report:
    the rules that matched the last scan, largest first, each with what deleting it gives
    back, its share, both axes (safe redownload, caution irreversible), a note and the
    number of places. A double-click or Enter lists the paths behind a rule; the word
    Reclaim above the list leads back, and the cursor returns to the rule it left. The risk
    ceiling is three segments — safe, caution, danger — and t cycles it; y copies the
    paths under the cursor.
  • It reports and does not delete. Deleting is still pathmemo reclaim --apply and the
    terminal's Reclaim screen, where the guard checks every path first, and the tab says so.
    The headline counts only what pathmemo can delete itself; what needs another tool
    (git gc) or a person (a disk image) is listed, dimmed, and named beside the total
    rather than added to it. It ends in the id of the scan the numbers came from, and over a
    scan that was stopped early the tab says so: what was not read is not listed, so every
    number is a floor.
  • The rules run on a worker, so the tab opens at once and says Applying 36 rules… until
    they are done: from the key to the list is under a second on a 1.2M-file snapshot,
    loading the snapshot included.
  • Five rules for a JavaScript and Solana machine. dev.bun_cache (bun's global cache),
    dev.next (a .next beside a package.json), dev.playwright_browsers
    (%LOCALAPPDATA%\ms-playwright), dev.solana_tools (the platform tools in
    ~\.cache\solana, a copy per version) and dev.rustup_toolchains, which only reports
    and names rustup toolchain uninstall. dev.cargo also takes Solana's
    target\sbpf-solana-solana and target\sbf-solana-solana, and never target\deploy,
    where the program keypairs live. 36 rules now.

Fixed

  • After a scan, the Tree tab said "run a scan first". A scan drops the snapshot the tab
    was showing, and nothing loaded the new one until the tab was left and re-entered. The
    Tree and Reclaim tabs now reload when a scan finishes under them.
  • The scan card's Stop button sat on top of the path being read. The card was one line
    shorter than its contents; its height is now added up from them.

Known limitations

Audit and duplicates are still the commands and the terminal screens, and the window has no
delete dialog, which is why its Reclaim tab only reports. The rest is unchanged from 0.2.2.

406 tests; ten of the new ones drive the Reclaim tab through the shell, two hold the
scan card's lines clear of its button, and four pin the new rules.


SHA-256

1545e6fa37915b7ac0c92481d9625835e4b10445dd2481175902db67419f7fcf  pathmemo-0.2.3-win-arm64.zip
bbb65a7192ea8afd2aee765cb39918ad8892aef6c1c9d9b002e6372ef2b5eabc  pathmemo-0.2.3-win-x64.zip

pathmemo 0.2.2

Choose a tag to compare

@github-actions github-actions released this 21 Sep 22:46

Windows 10 1809 or later, x64 or arm64. One file, self-contained - no installer, and
no runtime to install alongside it.

  1. Download pathmemo-0.2.2-win-x64.zip, or -win-arm64 on an ARM machine.
  2. Unpack it anywhere.
  3. Double-click pathmemo.exe for the window, or run it from a terminal:
    pathmemo scan, pathmemo top --min 1GB, pathmemo audit.

Windows will warn that the publisher is unknown, because the executable is not
code-signed. Choose More info -> Run anyway, or check your download against the
SHA-256 below first.

Administrator rights are optional, and change what the scanner can see: with them it
reads $MFT directly, which is roughly 40x faster and reaches paths a directory walk is
denied.

Nothing is deleted without an explicit confirmation, and what is deleted goes to a
quarantine that pathmemo restore reverses.


The walk scanner's numbers, corrected — and, by the same change, an unelevated scan
several times faster.

Fixed

  • The walk scanner under-reported used space. For every ordinary file it reported the
    logical size as the allocated one: GetCompressedFileSize, which it asked once per file,
    only knows a different number for compressed and sparse files and answers with the plain
    length for everything else. Over the 1.2M files of this machine's C: that was 3 GB missing
    from scanned and booked to unaccounted, which fell from 17.9 GB (8.7%) to 14.8 GB
    (7.2%) — the rest is what the accuracy limits say it is. The MFT scanner, which reads the
    run lists, was right all along; the test that compares the two had never run (below).
  • An unelevated scan is 3–4× faster. The per-file syscall above is gone for ordinary
    files, which now round up to the cluster the way the audit already measured directories.
    A walk of the same C: — 1.21M files, 361k directories — takes 13.5 s where it took 41 s
    (the README's own figure) to 61 s (a cold run the same day) before. See README
    §4.4 and §22.5.

Tests

  • Mft_scanner_agrees_with_the_walk_when_elevated has run and passed, for the first time.
    Since the suite began declaring itself unelevated it had returned on its first line even
    as an administrator, because it asked the declaration rather than the token; it now asks
    Windows directly, and on a CI runner — an administrator — it runs too.
  • Two new tests pin the walk's allocated sizes against real files, unelevated, on every run:
    ordinary files round to the cluster, a compressed file is asked.

Known limitations of this release

Unchanged from 0.2.0: the window shows the volumes and the tree, and audit, reclaim and
duplicates are the commands and the terminal screens for now; the window is unverified on
arm64, above 100% scaling and across monitors of different scale; unelevated, some paths
are unreadable, hard-link deduplication covers only files of 1 MB and over, and alternate
data streams are not counted — elevation removes all three.

390 tests, passing both as an ordinary user and as an administrator.


SHA-256

349bae3335e3a7923c3bc0ae9942e9fa3a1f34fb1189c8098025c2d8ff6fc701  pathmemo-0.2.2-win-arm64.zip
aad5e4f05122094b4818a20281b0ccf1ad1892c36db795662028251376f2d76b  pathmemo-0.2.2-win-x64.zip

pathmemo 0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 12:41

Windows 10 1809 or later, x64 or arm64. One file, self-contained - no installer, and
no runtime to install alongside it.

  1. Download pathmemo-0.2.0-win-x64.zip, or -win-arm64 on an ARM machine.
  2. Unpack it anywhere.
  3. Double-click pathmemo.exe for the window, or run it from a terminal:
    pathmemo scan, pathmemo top --min 1GB, pathmemo audit.

Windows will warn that the publisher is unknown, because the executable is not
code-signed. Choose More info -> Run anyway, or check your download against the
SHA-256 below first.

Administrator rights are optional, and change what the scanner can see: with them it
reads $MFT directly, which is roughly 40x faster and reaches paths a directory walk is
denied.

Nothing is deleted without an explicit confirmation, and what is deleted goes to a
quarantine that pathmemo restore reverses.


The first public release: one self-contained pathmemo.exe, no installer and no
runtime to install alongside it.

The two faces

  • A window. Double-click the executable and it opens a real window — volume
    cards with their used space, a browsable tree of the largest directories with
    a clickable breadcrumb, a treemap panel, and a scan that runs from the toolbar
    without freezing anything. The window is drawn directly on Win32 and GDI, so it
    costs 0.27 MB of the download rather than the 100 MB a UI framework would have.
  • A command line. The same file, typed into a terminal, prints to that
    terminal and answers with exit codes: scan, tree, top, history, diff,
    audit, reclaim, dupes, rm, restore, purge, ops, errors,
    export, config, status, doctor. Every one of them takes --format json
    or csv where a table would be the answer.
  • Terminal screens. pathmemo --tui gives the same browsing in any terminal,
    for a machine with no desktop — overview, tree, reclaim and duplicates.

Finding the space

  • Two scanners. A directory walk that needs no rights, and a scanner that reads
    $MFT directly when run as administrator — roughly 40× faster (1.27M files in
    9.6 s against 41 s), and it sees paths a walk is denied.
  • An incremental rescan from the USN change journal, and scheduling to keep
    snapshots current. Both need administrator rights; without them every scan is a
    full one and doctor says so.
  • Snapshots are stored under %LOCALAPPDATA%\pathmemo with a history, so diff
    can say what changed since last time — two 1.6M-node snapshots compared in
    105 ms.
  • Space Audit: 21 probes for the space no file browser shows — shadow copies,
    the component store, hibernation, page and crash dump files, Windows Update
    leftovers, per-app caches.

Freeing it

  • Reclaim: 31 rules over what a scan found, each with its own risk and
    recovery note, so the recommendation says what is lost as well as what is
    gained.
  • Duplicates: five stages, from a size grouping that cut 1.23M files to 8,508
    candidates in 0.44 s, to a content hash with a cache that makes the second run
    cheap.
  • Deletion, deliberately narrow. Nothing is ever deleted without an explicit
    confirmation, deletions go to a quarantine that restore reverses, and every
    operation is journalled (ops). A path guard refuses system and boot paths
    before anything is touched — it held a canary intact through 19,478 junction
    swaps aimed at making the deleter follow a link out of its own tree.

Known limitations of this release

  • The window shows the volumes and the tree. Audit, reclaim and duplicates are
    the commands and the terminal screens for now, and each tab in the window says
    so rather than pretending otherwise.
  • The window has only been run on x64 at 96 dpi and a single monitor. The arm64
    binary is built and tested by the same suite, but its window is unverified, as
    is scaling above 100% and dragging between monitors of different scale.
  • Unelevated, the walk scanner runs: some paths are unreadable, hard-link
    deduplication covers only files of 1 MB and over, and alternate data streams
    are not counted. Elevation removes all three.

382 tests, passing both as an ordinary user and as an administrator, and the full list
of what is measured rather than claimed is in
README §21.


SHA-256

135538856955aec34d24d7eb25db8eacbbce66cef76b5cc5ff7db1309e1bb0ba  pathmemo-0.2.0-win-arm64.zip
a13618bd5d0763d96b9dcb3d0e96fbfea63815fec44cef367f9c69e5c4bc54a0  pathmemo-0.2.0-win-x64.zip