Skip to content

FIX: select the next row after a delete, bound the folder tree and test every file operation - #91

Merged
CodingDiego merged 1 commit into
masterfrom
FIX/parity-gaps-tree-and-rar
Nov 13, 2026
Merged

CodingDiego merged 1 commit into
masterfrom
FIX/parity-gaps-tree-and-rar

Conversation

@CodingDiego

Copy link
Copy Markdown
Owner

First batch of the open v1.0 issues that need no hardware, no Windows setting and no install. Changes are under Unreleased in the changelog; the crate version stays 1.0.0-rc.2.

Changes

  • Selection after Delete (Parity gaps left after the 1.0.0-rc.1 live tests #88). After the user deletes the selection, the reload selects the row that took its place, in folders and in search results. The rule is armed only by a delete made in rexplorer (Deleted in nav.rs, armed in list.rs verb_on_selection), for that tab and folder, within 10 seconds, and never on Home. A delete cancelled in the confirmation disarms it. Every other reload still selects nothing when the selected items are gone.
  • This PC row in the sidebar (Parity gaps left after the 1.0.0-rc.1 live tests #88).
  • Tab tear-out (Parity gaps left after the 1.0.0-rc.1 live tests #88). A release counts as "over another rexplorer window" only inside that window's visible frame, and only when it is shown, not minimized and not cloaked (lands_on in instance.rs).
  • Folder tree (Folder tree: drops are not undoable and ancestors expand on the window thread #87). The tree sync runs from a timer, so navigation never waits for it. It expands only quick local paths: no reparse point on the way, no network, removable or optical drive, no virtual folder below the known roots. It follows Explorer's "Expand to open folder" option, with a settings key to override it.
  • Multi-volume .rar (Parity: Archive view #43). Three small fixture volumes made with WinRAR from our own test data; the two skipped tests now run everywhere.
  • Data-loss checks (Reliability: No data-loss paths #26). crates/core/tests/data_ops.rs has an automated check for every file operation against the shell's own engine: delete, move, rename, paste and drop with the conflict dialog's Replace and Skip, Keep both, cancel, archive extraction, and New > Folder and New > Text Document.
  • CI: the build-test job has a 25-minute limit.

How it was tested

  • Gate: cargo build --release --locked --all-targets with -D warnings, cargo test --release --locked three times (app 264, core 246, data_ops 11), cargo clippy --workspace --all-targets --locked -- -D warnings, and scripts\smoke.ps1 -Hosted (0 FAIL). The folder tree tests ran 40 more times and the core suite 6 more times without a failure.
  • Driven with window messages on a copy of the release exe and a scratch profile: Delete in search results and in a folder (3 of 3 each, including the last row), the This PC row by click and by keyboard, both states of the tree option, and the multi-volume set (first part lists and extracts with matching hashes; a middle part and a set with a missing part give their messages and write nothing).
  • A security review of the diff found two high-severity problems in the first version of the selection rule (it fired on any reload, and on Home it selected a row the page did not show). Both are fixed here, with tests, along with its medium and low findings.

Not done

  • No real keyboard or mouse input was used: the machine was in use. Still open with real input: a mouse click on the This PC row, six tab tear-outs, and ten drags in a row for a drag that was once lost after a drop (no code changed for that one).
  • The final selection rule, its Home exclusion and the tree's cleared highlight are unit-tested only; they were not run in the app after the review fixes.
  • The tree was not measured on a slow network drive. Folders under OneDrive are reparse points, so the tree no longer auto-expands to them.
  • Keep both is checked through the engine's rename-on-collision flag, not through the Windows 11 dialog, where it sits behind a second dialog.

Issues

Closes #43, closes #26, closes #87.

Progress on #88. Tracking: #71.

…st every file operation

After the user deletes the selection, the reload selects the row that took
its place, in folders and in search results. The rule is armed only by a
delete made in rexplorer, for that tab and folder, and never on Home: any
other reload leaves nothing selected when the selected items are gone, so a
row the user never chose cannot take their next key.

The folder tree no longer makes navigation wait: its sync runs from a timer,
it expands only quick local paths (no reparse point on the way, no network,
removable or optical drive, no virtual folder below the known roots), and it
follows Explorer's "Expand to open folder" option.

The sidebar gets a This PC row. A tab released just outside another
rexplorer window's visible frame opens a new window instead of landing in
that window.

Multi-volume .rar sets are tested from committed fixtures. Every file
operation has an automated check against the shell's own engine, including
the conflict dialog's Skip and Replace, cancel, and New > Text Document.
@CodingDiego CodingDiego added this to the v1.0 milestone Nov 13, 2026
@CodingDiego CodingDiego added bug Something isn't working enhancement New feature or request rust Pull requests that update rust code labels Nov 13, 2026
@CodingDiego CodingDiego self-assigned this Nov 13, 2026
@CodingDiego
CodingDiego merged commit 2c3744a into master Nov 13, 2026
5 checks passed
@CodingDiego
CodingDiego deleted the FIX/parity-gaps-tree-and-rar branch November 13, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Folder tree: drops are not undoable and ancestors expand on the window thread Parity: Archive view Reliability: No data-loss paths

1 participant