Browse and recover by folder (1.4.0) #1

Merged
lucasrguerra merged 5 commits from feat/navegacao-pastas into main 2026-11-03 17:10:46 +00:00
Owner

What

A Folders view in the explorer, next to grid and list, for browsing what was found the way a file manager does, plus recovering whole folders or parts of them.

  • One level at a time. Subfolders come first, each with its file count and size (recursive), then the files, under a clickable breadcrumb. Double-click or Enter opens a folder, Backspace or Alt+↑ goes up, and the sidebar folder tree navigates. Carved files sit in "By signature". Filters still apply.
  • Tri-state selection that persists while navigating. A ticked folder takes everything inside it, at any depth. Unticking a subfolder or file inside it leaves the folder half-ticked and keeps that item out. The bottom bar shows the exact total, which comes from the core (selection_count).
  • Recovery relative to the ticked folder. Documents/Clients/Project becomes Project/.... Files ticked on their own go to the root of the destination, and duplicate names get (2). The hash manifest is written as always.
  • Core. New RPCs browse and selection_count; recover_start accepts selection { folders, ids, exclude, exclude_folders }; recover_resumable_with takes the folder roots. Existing call sites keep their behavior.
  • Release. Version 1.4.0, with CHANGELOG and docs/interface.md in EN and PT-BR.

Verified

  • Unit tests:
    • browse: aggregation, filters, a prefix that is not a parent, pagination;
    • selection resolution: subfolder exclusion, carved files;
    • destination paths: relative, nested, duplicate name, loose file, sanitization.
  • Service test on fat32.img (real scan + recovery): checks paths and hashes, the unticked file left out, and the error for an empty selection.
  • scripts/check.sh passes, and so does the full core suite.
  • Chrome headless on the synthetic photo image:
    • navigation and breadcrumb;
    • tick DCIM, untick one file → 23 of 24, half-ticked state on the parents;
    • add Viagens/Recife and recover: the destination has DCIM/100CANON (11), DCIM/Camera (12) and Recife (12), and the manifest has 35 entries;
    • a half-ticked folder becomes fully ticked on click;
    • the dialog warns when a filter is active;
    • grid and list unchanged.

🤖 Generated with Claude Code

## What A **Folders** view in the explorer, next to grid and list, for browsing what was found the way a file manager does, plus recovering whole folders or parts of them. - **One level at a time.** Subfolders come first, each with its file count and size (recursive), then the files, under a clickable breadcrumb. Double-click or Enter opens a folder, Backspace or Alt+↑ goes up, and the sidebar folder tree navigates. Carved files sit in "By signature". Filters still apply. - **Tri-state selection that persists while navigating.** A ticked folder takes everything inside it, at any depth. Unticking a subfolder or file inside it leaves the folder half-ticked and keeps that item out. The bottom bar shows the exact total, which comes from the core (`selection_count`). - **Recovery relative to the ticked folder.** `Documents/Clients/Project` becomes `Project/...`. Files ticked on their own go to the root of the destination, and duplicate names get ` (2)`. The hash manifest is written as always. - **Core.** New RPCs `browse` and `selection_count`; `recover_start` accepts `selection { folders, ids, exclude, exclude_folders }`; `recover_resumable_with` takes the folder roots. Existing call sites keep their behavior. - **Release.** Version 1.4.0, with CHANGELOG and `docs/interface.md` in EN and PT-BR. ## Verified - Unit tests: - `browse`: aggregation, filters, a prefix that is not a parent, pagination; - selection resolution: subfolder exclusion, carved files; - destination paths: relative, nested, duplicate name, loose file, sanitization. - Service test on `fat32.img` (real scan + recovery): checks paths and hashes, the unticked file left out, and the error for an empty selection. - `scripts/check.sh` passes, and so does the full core suite. - Chrome headless on the synthetic photo image: - navigation and breadcrumb; - tick `DCIM`, untick one file → 23 of 24, half-ticked state on the parents; - add `Viagens/Recife` and recover: the destination has `DCIM/100CANON` (11), `DCIM/Camera` (12) and `Recife` (12), and the manifest has 35 entries; - a half-ticked folder becomes fully ticked on click; - the dialog warns when a filter is active; - grid and list unchanged. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
lucasrguerra added 4 commits 2026-11-03 16:39:49 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A marked folder a/b/Projeto is recreated as Projeto/... with everything
inside it; single marked files go to the destination root and unmarked
files inside a marked folder are left out. recover_start accepts
{selection: {folders, ids, exclude}}.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Folders mode next to grid and list shows one level at a time: subfolders
first with their file count and size, then the files, under a clickable
breadcrumb. Folders and files are marked with tri-state boxes that persist
while navigating; the bar shows the exact total from the core, and the
selection is recovered relative to each marked folder. The sidebar folder
tree navigates in this mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chore(release): 1.4.0
CI / Format and clippy (pull_request) Successful in 2m25s
CI / Dependency audit (pull_request) Successful in 11s
CI / Check desktop app (Linux) (pull_request) Successful in 1m22s
CI / Tests (Linux) (pull_request) Successful in 8m45s
bf93ca01b4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lucasrguerra added 1 commit 2026-11-03 16:59:14 +00:00
docs: folder browsing screenshots and docs; translate folder counts
CI / Format and clippy (pull_request) Successful in 31s
CI / Dependency audit (pull_request) Successful in 22s
CI / Check desktop app (Linux) (pull_request) Successful in 1m12s
CI / Tests (Linux) (pull_request) Successful in 4m59s
c5f21f749d
Retakes the explorer screenshots on 1.4.0 (they still showed 0.4.0) and adds
the Folders view in English and Portuguese. The folder rows' file count sat
inside .xp-lnm, which the DOM translator skips, so it stayed in Portuguese
in the English UI; it is now translated explicitly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lucasrguerra merged commit db5b972650 into main 2026-11-03 17:10:46 +00:00
lucasrguerra deleted branch feat/navegacao-pastas 2026-11-03 17:10:46 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ciberfauna/guara#1