diff --git a/CHANGELOG.md b/CHANGELOG.md index 7197583..97ecef4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow SemVer. +## [1.4.0] - 2026-11-03 + +### Added +- **Browse by folder.** A Folders view next to grid and list shows what was found one folder at a time, like a file manager: subfolders first with their file count and size, then the files, under a clickable breadcrumb. The sidebar folder tree navigates in this view, and filters still apply. +- **Recover whole folders or parts of them.** Folders and files are ticked with tri-state boxes that persist while navigating; a ticked folder takes everything inside it, and unticked subfolders or files stay out. Each ticked folder is recreated in the destination from itself down (`Documents/Clients/Project` → `Project/...`), with the usual hash manifest. + ## [1.3.5] - 2026-10-31 ### Added diff --git a/CHANGELOG.pt-BR.md b/CHANGELOG.pt-BR.md index 3d6763b..cd00724 100644 --- a/CHANGELOG.pt-BR.md +++ b/CHANGELOG.pt-BR.md @@ -4,6 +4,12 @@ Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/); versões seguem SemVer. +## [1.4.0] - 2026-11-03 + +### Adicionado +- **Navegação por pastas.** Uma visualização Pastas, ao lado de grade e lista, mostra o que foi encontrado uma pasta por vez, como num gerenciador de arquivos: primeiro as subpastas, com número de arquivos e tamanho, depois os arquivos, sob um caminho clicável. A árvore de pastas da barra lateral navega nessa visualização, e os filtros continuam valendo. +- **Recuperar pastas inteiras ou partes delas.** Pastas e arquivos são marcados por caixas de três estados que continuam ao navegar; uma pasta marcada leva tudo o que está dentro dela, e subpastas ou arquivos desmarcados ficam de fora. Cada pasta marcada é recriada no destino a partir dela mesma (`Documentos/Clientes/Projeto` → `Projeto/...`), com o manifesto de hashes de sempre. + ## [1.3.5] - 2026-10-31 ### Adicionado diff --git a/Cargo.lock b/Cargo.lock index fbc5d6a..8a33440 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -416,7 +416,7 @@ dependencies = [ [[package]] name = "guara-cli" -version = "1.3.5" +version = "1.4.0" dependencies = [ "clap", "ctrlc", @@ -429,7 +429,7 @@ dependencies = [ [[package]] name = "guara-core" -version = "1.3.5" +version = "1.4.0" dependencies = [ "aes", "argon2", diff --git a/Cargo.toml b/Cargo.toml index e75668c..e462cd9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/guara-core", "crates/guara-cli"] [workspace.package] -version = "1.3.5" +version = "1.4.0" edition = "2021" license = "MIT OR Apache-2.0" repository = "https://git.lucasrguerra.dev.br/ciberfauna/guara" diff --git a/apps/gui/src-tauri/Cargo.lock b/apps/gui/src-tauri/Cargo.lock index 28a5186..e9ec621 100644 --- a/apps/gui/src-tauri/Cargo.lock +++ b/apps/gui/src-tauri/Cargo.lock @@ -1342,7 +1342,7 @@ dependencies = [ [[package]] name = "guara-core" -version = "1.3.5" +version = "1.4.0" dependencies = [ "aes", "argon2", @@ -1373,7 +1373,7 @@ dependencies = [ [[package]] name = "guara-gui" -version = "1.3.5" +version = "1.4.0" dependencies = [ "guara-core", "libc", diff --git a/apps/gui/src-tauri/Cargo.toml b/apps/gui/src-tauri/Cargo.toml index 4598033..96ea3eb 100644 --- a/apps/gui/src-tauri/Cargo.toml +++ b/apps/gui/src-tauri/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "guara-gui" description = "Guará: graphical file recovery interface" -version = "1.3.5" +version = "1.4.0" edition = "2021" license = "MIT OR Apache-2.0" authors = ["Guará contributors"] diff --git a/apps/gui/src-tauri/tauri.conf.json b/apps/gui/src-tauri/tauri.conf.json index d28711b..b5cb1cf 100644 --- a/apps/gui/src-tauri/tauri.conf.json +++ b/apps/gui/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Guará", - "version": "1.3.5", + "version": "1.4.0", "identifier": "dev.guara.app", "build": { "frontendDist": "../ui" diff --git a/docs/interface.md b/docs/interface.md index 88b0e1e..c475dd2 100644 --- a/docs/interface.md +++ b/docs/interface.md @@ -17,6 +17,14 @@ After a scan, results open in a file-manager style explorer built for thousands Arrow keys move through the files, and Space opens the full-screen quick look. Selection works like Finder or Explorer (Ctrl, Shift, keyboard). +### Browsing by folder + +The third view button (the folder icon, next to grid and list) turns the explorer into a file manager over what was found. The center shows **one folder at a time**: its subfolders first, each with how many files and how much space it holds counting everything below it, then the files directly inside. A breadcrumb at the top (`Root › Documents › Project`) goes back up; double-click or Enter opens a folder, Backspace or Alt+↑ goes up, and clicking a folder in the sidebar tree jumps to it. Files found only by signature, which have no known folder, sit in **By signature** at the root. Filters (type, date, confidence…) still apply and change the counts. + +To recover, tick folders and files with their boxes; the selection survives navigation. Ticking a folder takes **everything inside it**, at any depth, even what the active filters hide. Unticking a subfolder or a file inside a ticked folder leaves the folder half-ticked and keeps that item out. The bottom bar shows the exact total, and **Recover selection** recreates each ticked folder in the destination **from itself down**: recovering `Documents/Clients/Project` writes `Project/...` with all its subfolders. Files ticked on their own go to the root of the destination, and two ticked folders with the same name become `Project` and `Project (2)`. The manifest with MD5, SHA-1 and SHA-256 is written as always. + +Only folders that hold at least one recovered file appear: Guará knows folders through the paths of the files it finds. + ## Themes The switch at the bottom of the sidebar offers **Auto** (follows the system), **Light** and **Dark**. The choice is saved. diff --git a/docs/pt-BR/interface.md b/docs/pt-BR/interface.md index 5cad278..93a4ed6 100644 --- a/docs/pt-BR/interface.md +++ b/docs/pt-BR/interface.md @@ -17,6 +17,14 @@ Depois da varredura, os resultados abrem num explorador no estilo de um gerencia As setas navegam pelos arquivos e a barra de espaço abre a visualização rápida em tela cheia. A seleção funciona como no Finder ou no Explorer (Ctrl, Shift e teclado). +### Navegando por pastas + +O terceiro botão de visualização (o ícone de pasta, ao lado de grade e lista) transforma o explorador num gerenciador de arquivos sobre o que foi encontrado. O centro mostra **uma pasta por vez**: primeiro as subpastas, cada uma com quantos arquivos e quanto espaço contém somando tudo abaixo dela, depois os arquivos que estão diretamente nela. Um caminho no topo (`Raiz › Documentos › Projeto`) volta para cima; duplo clique ou Enter abre uma pasta, Backspace ou Alt+↑ sobe, e clicar numa pasta da árvore lateral vai direto até ela. Arquivos achados só por assinatura, que não têm pasta conhecida, ficam em **Por assinatura** na raiz. Os filtros (tipo, data, confiança…) continuam valendo e mudam as contagens. + +Para recuperar, marque pastas e arquivos pelas caixas; a seleção continua ao navegar. Marcar uma pasta leva **tudo o que está dentro dela**, em qualquer profundidade, inclusive o que os filtros ativos escondem. Desmarcar uma subpasta ou um arquivo dentro de uma pasta marcada deixa a pasta parcialmente marcada e mantém aquele item de fora. A barra de baixo mostra o total exato, e **Recuperar seleção** recria cada pasta marcada no destino **a partir dela mesma**: recuperar `Documentos/Clientes/Projeto` grava `Projeto/...` com todas as subpastas. Arquivos marcados soltos vão para a raiz do destino, e duas pastas marcadas com o mesmo nome viram `Projeto` e `Projeto (2)`. O manifesto com MD5, SHA-1 e SHA-256 é gravado como sempre. + +Só aparecem pastas que contêm pelo menos um arquivo recuperado: o Guará conhece as pastas pelos caminhos dos arquivos que encontra. + ## Temas O seletor no fim da barra lateral oferece **Auto** (acompanha o sistema), **Claro** e **Escuro**. A escolha fica salva.