Skip to content

Integrate Windows scanning, drive picker and navigation fixes - #42

Merged
tobi merged 25 commits into
mainfrom
windows-integration
Sep 27, 2026
Merged

tobi merged 25 commits into
mainfrom
windows-integration

Conversation

@tobi

@tobi tobi commented Sep 27, 2026

Copy link
Copy Markdown
Owner

Windows users can now switch drives, cancel scans, navigate with mouse side buttons, and scan whole NTFS drives through the file table when elevated. The executable includes its Windows icon, and switching size/file metrics preserves the current folder and selection.

Integrates #30, #33, #34, #35, #37, #39, #40 and #41 while preserving their commits. Resolves overlapping help and test changes, then fixes volume-picker ordering, focused Enter handling, focus restoration, background shortcut suppression, and asynchronous drive discovery so slow devices do not block the UI.

Validation on native Windows x86_64:

  • Strict cargo xtask lint passed.
  • 193 workspace tests passed; the opt-in whole-disk test passed separately (3,696,091 files on C: without elevation), for 194 total.
  • Optimized release build with static C runtime passed.
  • Embedded icon, CLI help/error exit codes, and responsive native window startup on a path containing spaces and Japanese characters verified.

Windows ARM64 and live elevated MFT scanning were not independently exercised on this machine; the MFT parser has unit coverage. Other platforms were not rebuilt locally. Visual inspection through the desktop-control tool was unavailable because it could not initialize in this WSL-hosted task.

adi0x90 and others added 25 commits September 26, 2026 10:50
`cargo xtask bundle` from a fresh clone failed with `rustc 1.94.0 is not
supported by the following package: xtask@0.10.1 requires rustc 1.97` when
the machine's `rustup default` was older than the workspace MSRV. The message
blames xtask only because `.cargo/config.toml` aliases `cargo xtask` to
`cargo run -p xtask`, so it is the first package in the build graph; cargo
rejects the whole workspace before anything compiles.

CI pins 1.97 but nothing provisioned it for builders. rust-toolchain.toml
pins the same version, with the clippy and rustfmt that `make lint` needs, so
rustup fetches it on the first build and local lints match the gate.

Verified from this commit: `cargo xtask --help` (the command that failed)
runs, `cargo xtask lint` is green, and `cargo xtask bundle` produces
target/bundle/disktree-0.10.1-aarch64-macos.zip.
The README has always said the mouse's side buttons retrace the visited
directories, and on_mouse_down had the two MouseButton::Navigate arms for
it, but nothing ever delivered buttons 8 and 9: the mosaic registered
listeners per button, for Left and Middle only. The arms were dead code.

Replaced the two registrations with on_any_mouse_down, so every button
reaches on_mouse_down and the Navigate arms work. One listener rather
than four, and the per-button form would have needed a new registration
for each button the platform names.

Guarded the arms on Screen::Explore, matching the alt-arrow path: on the
review screen the marked list is not somewhere history should move.

The help screen and the hover card on `<` and `>` named only the keys,
so the in-app bindings were narrower than the README's. Both now mention
the side buttons.
Elevated scans of a whole NTFS drive read the master file table in large parallel reads instead of walking directories; any failure falls back to the walk. The walk also allocates once per entry, tallies progress per directory and folds hardlink de-dup into the parallel aggregate pass.
# Conflicts:
#	crates/disktree-app/src/tests.rs
# Conflicts:
#	crates/disktree-app/src/tests.rs
# Conflicts:
#	crates/disktree-app/src/tests.rs
# Conflicts:
#	README.md
#	crates/disktree-app/src/views.rs
#	crates/disktree-core/src/windows.rs
@tobi
tobi merged commit d02d421 into main Sep 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants