Skip to content

Automation: replies hide a file or missing folder on the way to the recovery folder - #7461

Merged
bflatastic merged 3 commits into
storytold:mainfrom
dotCooCoo:fix/recovery-error-ancestor-paths
Nov 14, 2026
Merged

bflatastic merged 3 commits into
storytold:mainfrom
dotCooCoo:fix/recovery-error-ancestor-paths

Conversation

@dotCooCoo

Copy link
Copy Markdown
Contributor

What and why

Follows #7287.

When a recovery copy fails because a folder on the way to the recovery folder is a file or is missing, the error names that folder (<parent> is not a folder, couldn't make <parent>), not the recovery folder. Replies to an automation client confined to read roots hid only the recovery folder itself, so the full path of that ancestor stayed visible.

hide_in_reply now also hides each ancestor of a recovery folder in use or named by a failure, when the reply writes that ancestor as a whole path, with no path text before or after it. The check (writes_whole_path) compares the reply's text only and does not look anything up on disk, so it never touches a path the client cannot read, such as a network share.

How it was tested

  • New test control::tests::a_file_on_the_way_to_a_recovery_folder_outside_the_read_root_is_hidden_in_the_status: a file and a missing folder on the way to the recovery folder are shown by their names; a path that only begins or only ends with one of them stays. It fails without the change.
  • cargo test -p vectorcraft-ui-egui: 4,561 passed, 2 ignored in the lib tests, plus 27 in the integration test binaries.
  • cargo clippy -p vectorcraft-ui-egui --all-targets -- -D warnings: clean.
  • cargo fmt --all -- --check: clean for the changed files (crates/svg/src/lib.rs already fails the check on main).

Checklist

  • cargo xtask ci passes (fmt, clippy, tests, assets, brands, layers, wasm).
  • No panics in shipped code: no unwrap(), expect(), panic!, unreachable!, todo! or
    unimplemented! outside tests, and no unchecked indexing on data from files, parameters or
    messages. Errors are returned as Result and shown to the user
    (why and how).
  • Clean-room: nothing copied from Adobe products or GPL/AGPL code (AGENTS.md).
  • Every new asset has a row in ASSETS.md.

…ecovery folder

When a recovery copy fails because a folder on the way to the recovery
folder is a file or is missing, the error names that folder, not the
recovery folder. Replies to a client confined to read roots hid only
the recovery folder itself, so the full path of that ancestor stayed
visible. A reply now also hides each ancestor of a recovery folder that
it writes as a whole path. The check compares text only and does not
look anything up on disk.

Follows storytold#7287.
@coderabbitai

coderabbitai Bot commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 124e3cc and adc020c.

Files selected for processing: 2

  • crates/ui-egui/src/control.rs
  • crates/ui-egui/src/control/tests.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@bflatastic
bflatastic merged commit 075d817 into storytold:main Nov 14, 2026
7 checks passed
@bflatastic

Copy link
Copy Markdown
Member

Merged, thanks @dotCooCoo! It passed its CI checks.

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.

2 participants