diff --git a/CHANGELOG.md b/CHANGELOG.md index 29cedef..1c5659a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ Todas las versiones notables de NextSync se documentan aquí. El formato sigue [Keep a Changelog](https://keepachangelog.com/es/1.1.0/) y el versionado es **+0.0.2 por release, reiniciado en 0.1.4** (decisión del usuario, 22-Ago-2026; sustituye al +0.02 anterior). +## [0.2.20] - 2026-09-08 + +### Mejorado +- **El resumen de un borrado masivo ahora muestra una vista previa de los archivos sueltos**: cuando la revisión se agrupa por carpeta (más de 50 archivos), los archivos que estaban en el nivel raíz ya no se reducen a un simple contador. Ahora se agrupan en una fila expandible "En el nivel raíz · N archivos" con una vista previa de los primeros 15 y un "y M más…", para que veas qué se va a borrar sin tener que recorrer una lista de cientos de filas. + ## [0.2.18] - 2026-09-08 ### Añadido diff --git a/Cargo.lock b/Cargo.lock index 3ef9461..d9ba8f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1283,7 +1283,7 @@ dependencies = [ [[package]] name = "nextsync" -version = "0.2.18" +version = "0.2.20" dependencies = [ "async-channel", "data-encoding", diff --git a/Cargo.toml b/Cargo.toml index 16944c2..2066df2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nextsync" -version = "0.2.18" +version = "0.2.20" edition = "2021" rust-version = "1.83" license = "GPL-3.0-or-later" diff --git a/PKGBUILD b/PKGBUILD index a1aa77e..e2ef713 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: gnacho pkgname=nextsync -pkgver=0.2.18 +pkgver=0.2.20 pkgrel=1 pkgdesc='Nextcloud desktop synchronization client for GNOME (Rust rewrite)' arch=('x86_64' 'aarch64') diff --git a/README.es.md b/README.es.md index 2e568b7..9a5eadf 100644 --- a/README.es.md +++ b/README.es.md @@ -17,7 +17,7 @@

Estado de CI - Versión 0.2.18 + Versión 0.2.20 GNU GPL v3 o posterior

@@ -84,7 +84,7 @@ Ambos motores se esconden detrás del mismo trait pequeño, así que un proveedo Descarga el `.pkg.tar.zst` de la [última release](https://github.com/gnacho/nextsync/releases/latest) e instálalo: ```bash -sudo pacman -U nextsync-0.2.18-1-x86_64.pkg.tar.zst +sudo pacman -U nextsync-0.2.20-1-x86_64.pkg.tar.zst ``` El paquete depende de `gtk4` y `libadwaita`. Para cuentas Nextcloud instala `nextcloud-client` (aporta `nextcloudcmd`); para cuentas OpenCloud, el `opencloudcmd` oficial. diff --git a/README.md b/README.md index 070909f..1c7b209 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@

CI status - Version 0.2.18 + Version 0.2.20 GNU GPL v3 or later

@@ -84,7 +84,7 @@ Both engines sit behind the same small trait, so a new provider is a command bui Download the `.pkg.tar.zst` from the [latest release](https://github.com/gnacho/nextsync/releases/latest) and install it: ```bash -sudo pacman -U nextsync-0.2.18-1-x86_64.pkg.tar.zst +sudo pacman -U nextsync-0.2.20-1-x86_64.pkg.tar.zst ``` The package depends on `gtk4` and `libadwaita`. For Nextcloud accounts install `nextcloud-client` (it provides `nextcloudcmd`); for OpenCloud accounts, the official `opencloudcmd`. diff --git a/data/io.github.gnacho.nextsync.metainfo.xml b/data/io.github.gnacho.nextsync.metainfo.xml index f3dafe0..613bbf2 100644 --- a/data/io.github.gnacho.nextsync.metainfo.xml +++ b/data/io.github.gnacho.nextsync.metainfo.xml @@ -32,6 +32,7 @@ io.github.gnacho.nextsync + diff --git a/landing/index.html b/landing/index.html index 316b2bf..e9bf8e9 100644 --- a/landing/index.html +++ b/landing/index.html @@ -210,7 +210,7 @@

Lo que NextSync no hace (todavía)

Instalación fácil y rápida

En Arch, CachyOS y derivadas hay paquete listo en cada release.

-
sudo pacman -U nextsync-0.2.18-1-x86_64.pkg.tar.zst
+
sudo pacman -U nextsync-0.2.20-1-x86_64.pkg.tar.zst

Descarga el paquete .pkg.tar.zst más reciente desde GitHub Releases y ajusta el nombre del fichero.

diff --git a/src/ui/main_window.rs b/src/ui/main_window.rs index 1949533..c1d6486 100644 --- a/src/ui/main_window.rs +++ b/src/ui/main_window.rs @@ -1372,7 +1372,9 @@ impl MainWindow { // the per-file wall. Show folder-level counters only (the alert // body already carries the exact total), so several hundred // flat files stay readable instead of a 200-row list. + const LOOSE_PREVIEW_CAP: usize = 15; let mut loose_count = 0usize; + let mut loose_preview: Vec = Vec::new(); for row in &review_rows { match row { crate::core::delete_guard::DeletionReviewRow::Group { @@ -1388,16 +1390,39 @@ impl MainWindow { group_row.set_enable_expansion(false); list.append(&group_row); } - crate::core::delete_guard::DeletionReviewRow::File(_) => loose_count += 1, + crate::core::delete_guard::DeletionReviewRow::File(path) => { + if loose_preview.len() < LOOSE_PREVIEW_CAP { + loose_preview.push(path.clone()); + } + loose_count += 1; + } } } if loose_count > 0 { - let loose_row = libadwaita::ActionRow::builder() + let loose_row = libadwaita::ExpanderRow::builder() .title(t("At the top level")) .subtitle(t("{count} files").replace("{count}", &loose_count.to_string())) - .activatable(false) - .selectable(false) .build(); + for path in &loose_preview { + let child = libadwaita::ActionRow::builder() + .title(path) + .activatable(false) + .selectable(false) + .build(); + loose_row.add_row(&child); + } + if loose_count > LOOSE_PREVIEW_CAP { + let more = + libadwaita::ActionRow::builder() + .title(t("{count} more…").replace( + "{count}", + &(loose_count - LOOSE_PREVIEW_CAP).to_string(), + )) + .activatable(false) + .selectable(false) + .build(); + loose_row.add_row(&more); + } list.append(&loose_row); } t("These deletions will be propagated to the server when it synchronizes.") diff --git a/version.json b/version.json index 2d37976..1d45203 100644 --- a/version.json +++ b/version.json @@ -1,11 +1,11 @@ { "schema_version": 1, - "version": "0.2.18", + "version": "0.2.20", "mandatory": false, - "summary": "Added a proactive desktop notification when the deletion guard pauses synchronization for a mass local deletion.", + "summary": "Improved the mass-deletion review summary for a large number of flat files.", "changelog": [ - "The deletion guard now raises a critical desktop notification when it detects an abnormal number of missing local files and pauses synchronization to protect them before they can be deleted from Nextcloud. The notification explains the pause and offers a Review Now button that opens the deletion review directly, even when the app is running only in the tray.", - "Deletions originating from the server, the web interface or a mobile client continue to be handled by the sync engine and never require local confirmation." + "When the deletion guard pauses for many files sitting at the top level of a folder, the review now shows a preview of the first files and a 'N more' note instead of just a bare counter, so you can see what was removed without scrolling a hundreds-row list.", + "Files inside subfolders keep the folder grouping; individual rows are only listed when the number of missing files is small." ], "released_at": "2026-09-08T00:00:00Z" }