Integrate Windows scanning, drive picker and navigation fixes - #42
Merged
Merged
Conversation
`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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
cargo xtask lintpassed.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.