feat(core,fuse,cli,gui): discard a queued change and undo it here

A change Drive will not take could be exported or retried, never let go
of. The Sync page's Discard button (with a confirmation) and
`pdfs sync discard <id>` drop it: a node made here goes, as if deleted
before it was sent; a node Drive has goes back to what Drive has, under
the same inode, with every change queued on it, while what is queued
below it stays. A change on the wire or an open file is refused.
This commit is contained in:
nvrl committed 2026-10-05 00:57:02 +02:00
1 parent da013c29d6
commit 9dfe4c5450
22 files changed
+1530 -710

No files matched your search

+130 -79
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-10-05 00:14+0200\n"
"POT-Creation-Date: 2026-10-05 00:50+0200\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Italian\n"
@@ -64,7 +64,7 @@ msgstr "%A %-d %B %Y, %H:%M"
#: crates/pdfs-gui/src/app/pages/browser.rs:1217
#: crates/pdfs-gui/src/app/pages/browser.rs:2090
#: crates/pdfs-gui/src/app/pages/browser.rs:2167
#: crates/pdfs-gui/src/app/pages/locations.rs:1554
#: crates/pdfs-gui/src/app/pages/locations.rs:1624
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:252
#: crates/pdfs-gui/src/app/pages/trash.rs:191 crates/pdfs-gui/src/prompt.rs:171
msgid "My files"
@@ -267,9 +267,10 @@ msgstr ""
#: crates/pdfs-gui/src/app/pages/devices.rs:979
#: crates/pdfs-gui/src/app/pages/devices.rs:1031
#: crates/pdfs-gui/src/app/pages/devices.rs:1075
#: crates/pdfs-gui/src/app/pages/locations.rs:943
#: crates/pdfs-gui/src/app/pages/locations.rs:1418
#: crates/pdfs-gui/src/app/pages/locations.rs:1468
#: crates/pdfs-gui/src/app/pages/locations.rs:809
#: crates/pdfs-gui/src/app/pages/locations.rs:1013
#: crates/pdfs-gui/src/app/pages/locations.rs:1488
#: crates/pdfs-gui/src/app/pages/locations.rs:1538
#: crates/pdfs-gui/src/app/pages/login.rs:312
#: crates/pdfs-gui/src/app/pages/photos.rs:2055
#: crates/pdfs-gui/src/app/pages/shared.rs:946
@@ -513,7 +514,7 @@ msgstr "Opzioni di visualizzazione"
#: crates/pdfs-gui/src/app/pages/browser.rs:2639
#: crates/pdfs-gui/src/app/pages/devices.rs:325
#: crates/pdfs-gui/src/app/pages/locations.rs:192
#: crates/pdfs-gui/src/app/pages/locations.rs:1053
#: crates/pdfs-gui/src/app/pages/locations.rs:1123
#: crates/pdfs-gui/src/app/pages/shared.rs:422
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:347
#: crates/pdfs-gui/src/app/pages/trash.rs:284
@@ -1021,19 +1022,25 @@ msgstr ""
#, rust-format
msgid ""
"It no longer exists on Proton Drive, so your changes were uploaded as {name}"
msgstr "Non esiste più su Proton Drive, quindi le tue modifiche sono state caricate come {name}"
msgstr ""
"Non esiste più su Proton Drive, quindi le tue modifiche sono state caricate "
"come {name}"
#: crates/pdfs-gui/src/app/pages/activity_text.rs:356
#, rust-format
msgid ""
"It was moved to the Trash on Proton Drive, so your changes were uploaded as "
"{name}"
msgstr "È stato spostato nel cestino su Proton Drive, quindi le tue modifiche sono state caricate come {name}"
msgstr ""
"È stato spostato nel cestino su Proton Drive, quindi le tue modifiche sono "
"state caricate come {name}"
#: crates/pdfs-gui/src/app/pages/activity_text.rs:362
#, rust-format
msgid "It was changed on Proton Drive, so your changes were uploaded as {name}"
msgstr "È stato modificato su Proton Drive, quindi le tue modifiche sono state caricate come {name}"
msgstr ""
"È stato modificato su Proton Drive, quindi le tue modifiche sono state "
"caricate come {name}"
#. Translators: {name} is the copy the changes made on this
#. computer were uploaded as.
@@ -1046,19 +1053,25 @@ msgstr "Le tue modifiche sono state caricate come {name}"
#, rust-format
msgid ""
"It no longer exists on Proton Drive, so your changes were kept in {path}"
msgstr "Non esiste più su Proton Drive, quindi le tue modifiche sono state conservate in {path}"
msgstr ""
"Non esiste più su Proton Drive, quindi le tue modifiche sono state "
"conservate in {path}"
#: crates/pdfs-gui/src/app/pages/activity_text.rs:383
#, rust-format
msgid ""
"It was moved to the Trash on Proton Drive, so your changes were kept in "
"{path}"
msgstr "È stato spostato nel cestino su Proton Drive, quindi le tue modifiche sono state conservate in {path}"
msgstr ""
"È stato spostato nel cestino su Proton Drive, quindi le tue modifiche sono "
"state conservate in {path}"
#: crates/pdfs-gui/src/app/pages/activity_text.rs:389
#, rust-format
msgid "It was changed on Proton Drive, so your changes were kept in {path}"
msgstr "È stato modificato su Proton Drive, quindi le tue modifiche sono state conservate in {path}"
msgstr ""
"È stato modificato su Proton Drive, quindi le tue modifiche sono state "
"conservate in {path}"
#. Translators: {path} is the file on this computer that holds the
#. changes which could not be uploaded.
@@ -1069,7 +1082,7 @@ msgstr "Le tue modifiche sono state conservate in {path}"
#. Translators: {name} is the file the conflicting copy was made from.
#: crates/pdfs-gui/src/app/pages/activity_text.rs:399
#: crates/pdfs-gui/src/app/pages/locations.rs:878
#: crates/pdfs-gui/src/app/pages/locations.rs:948
#, rust-format
msgid "Differs from {name}"
msgstr "Diverso da {name}"
@@ -1257,11 +1270,12 @@ msgstr "Impossibile caricare gli album"
#: crates/pdfs-gui/src/app/pages/devices.rs:1120
#: crates/pdfs-gui/src/app/pages/duplicates.rs:220
#: crates/pdfs-gui/src/app/pages/locations.rs:536
#: crates/pdfs-gui/src/app/pages/locations.rs:769
#: crates/pdfs-gui/src/app/pages/locations.rs:793
#: crates/pdfs-gui/src/app/pages/locations.rs:1012
#: crates/pdfs-gui/src/app/pages/locations.rs:1510
#: crates/pdfs-gui/src/app/pages/locations.rs:1530
#: crates/pdfs-gui/src/app/pages/locations.rs:783
#: crates/pdfs-gui/src/app/pages/locations.rs:840
#: crates/pdfs-gui/src/app/pages/locations.rs:863
#: crates/pdfs-gui/src/app/pages/locations.rs:1082
#: crates/pdfs-gui/src/app/pages/locations.rs:1580
#: crates/pdfs-gui/src/app/pages/locations.rs:1600
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1425
#: crates/pdfs-gui/src/app/pages/photos.rs:1420
#: crates/pdfs-gui/src/app/pages/photos.rs:2140
@@ -2206,7 +2220,7 @@ msgid "Add Folder to Sync"
msgstr "Aggiungi cartella da sincronizzare"
#: crates/pdfs-gui/src/app/pages/devices.rs:686
#: crates/pdfs-gui/src/app/pages/locations.rs:1523
#: crates/pdfs-gui/src/app/pages/locations.rs:1593
msgid "Syncing folder…"
msgstr "Sincronizzazione della cartella…"
@@ -2814,7 +2828,16 @@ msgstr "Esporta"
msgid "Save a copy of this file's content elsewhere"
msgstr "Salva altrove una copia del contenuto di questo file"
#: crates/pdfs-gui/src/app/pages/locations.rs:719
#: crates/pdfs-gui/src/app/pages/locations.rs:713
#: crates/pdfs-gui/src/app/pages/locations.rs:810
msgid "Discard"
msgstr "Scarta"
#: crates/pdfs-gui/src/app/pages/locations.rs:714
msgid "Undo this change here instead of sending it"
msgstr "Annulla questa modifica qui invece di inviarla"
#: crates/pdfs-gui/src/app/pages/locations.rs:733
msgid ""
"Your Proton Drive storage is full. Free up space or upgrade your plan, and "
"this change uploads on its own."
@@ -2822,7 +2845,7 @@ msgstr ""
"Lo spazio di Proton Drive è pieno. Libera spazio o passa a un piano "
"superiore, e questa modifica verrà caricata da sola."
#: crates/pdfs-gui/src/app/pages/locations.rs:722
#: crates/pdfs-gui/src/app/pages/locations.rs:736
msgid ""
"You can no longer change this on Proton Drive. Ask the owner for edit "
"access, or export the file to keep your version."
@@ -2831,7 +2854,7 @@ msgstr ""
"proprietario l'accesso in modifica, o esporta il file per tenere la tua "
"versione."
#: crates/pdfs-gui/src/app/pages/locations.rs:725
#: crates/pdfs-gui/src/app/pages/locations.rs:739
msgid ""
"The folder this change belongs in is gone from Proton Drive. Export the file "
"to keep your version."
@@ -2839,7 +2862,7 @@ msgstr ""
"La cartella a cui appartiene questa modifica non è più su Proton Drive. "
"Esporta il file per tenere la tua versione."
#: crates/pdfs-gui/src/app/pages/locations.rs:728
#: crates/pdfs-gui/src/app/pages/locations.rs:742
msgid ""
"Proton Drive's limit on items in a folder or on folder depth is reached. "
"Make room in the folder, then retry."
@@ -2847,53 +2870,81 @@ msgstr ""
"È stato raggiunto il limite di Proton Drive sugli elementi in una cartella o "
"sulla profondità delle cartelle. Fai spazio nella cartella, poi riprova."
#: crates/pdfs-gui/src/app/pages/locations.rs:731
#: crates/pdfs-gui/src/app/pages/locations.rs:745
msgid "Proton Drive refused this change. It stays queued and is tried again."
msgstr ""
"Proton Drive ha rifiutato questa modifica. Resta in coda e verrà ritentata."
#: crates/pdfs-gui/src/app/pages/locations.rs:741
#: crates/pdfs-gui/src/app/pages/locations.rs:755
msgid "Export File"
msgstr "Esporta file"
#: crates/pdfs-gui/src/app/pages/locations.rs:750
#: crates/pdfs-gui/src/app/pages/locations.rs:764
#: crates/pdfs-gui/src/app/pages/locations.rs:768
#: crates/pdfs-gui/src/app/pages/locations.rs:778
#: crates/pdfs-gui/src/app/pages/locations.rs:782
msgid "Couldn't export the file"
msgstr "Impossibile esportare il file"
#: crates/pdfs-gui/src/app/pages/locations.rs:751
#: crates/pdfs-gui/src/app/pages/locations.rs:765
#: crates/pdfs-gui/src/app/widgets/versions_dialog.rs:351
msgid "That location isn't a local file."
msgstr "Quella posizione non è un file locale."
#: crates/pdfs-gui/src/app/pages/locations.rs:762
#: crates/pdfs-gui/src/app/pages/locations.rs:776
msgid "File exported"
msgstr "File esportato"
#: crates/pdfs-gui/src/app/pages/locations.rs:783
#: crates/pdfs-gui/src/app/pages/locations.rs:795
#, rust-format
msgid ""
"Your changes to {path} are undone here and never reach Proton Drive. Export "
"the file first to keep your version."
msgstr ""
"Le tue modifiche a {path} vengono annullate qui e non arrivano mai su Proton "
"Drive. Esporta prima il file per tenere la tua versione."
#: crates/pdfs-gui/src/app/pages/locations.rs:801
#, rust-format
msgid "The change to {path} is undone here and never reaches Proton Drive."
msgstr ""
"La modifica a {path} viene annullata qui e non arriva mai su Proton Drive."
#: crates/pdfs-gui/src/app/pages/locations.rs:806
msgid "Discard Change?"
msgstr "Scartare la modifica?"
#: crates/pdfs-gui/src/app/pages/locations.rs:830
msgid "Change discarded"
msgstr "Modifica scartata"
#: crates/pdfs-gui/src/app/pages/locations.rs:835
#: crates/pdfs-gui/src/app/pages/locations.rs:839
msgid "Couldn't discard the change"
msgstr "Impossibile scartare la modifica"
#: crates/pdfs-gui/src/app/pages/locations.rs:853
msgid "Retrying now…"
msgstr "Nuovo tentativo in corso…"
#: crates/pdfs-gui/src/app/pages/locations.rs:788
#: crates/pdfs-gui/src/app/pages/locations.rs:792
#: crates/pdfs-gui/src/app/pages/locations.rs:858
#: crates/pdfs-gui/src/app/pages/locations.rs:862
msgid "Couldn't retry"
msgstr "Impossibile riprovare"
#: crates/pdfs-gui/src/app/pages/locations.rs:862
#: crates/pdfs-gui/src/app/pages/locations.rs:932
#, rust-format
msgid "{size}, changed {time}"
msgstr "{size}, modificato {time}"
#: crates/pdfs-gui/src/app/pages/locations.rs:872
#: crates/pdfs-gui/src/app/pages/locations.rs:942
msgid "The original is gone; only this copy is left"
msgstr "L'originale non esiste più; rimane solo questa copia"
#: crates/pdfs-gui/src/app/pages/locations.rs:874
#: crates/pdfs-gui/src/app/pages/locations.rs:944
msgid "Same content as the original"
msgstr "Stesso contenuto dell'originale"
#: crates/pdfs-gui/src/app/pages/locations.rs:915
#: crates/pdfs-gui/src/app/pages/locations.rs:985
#, rust-format
msgid ""
"“{name}” was changed here and elsewhere at the same time.\n"
@@ -2910,7 +2961,7 @@ msgstr ""
"\n"
"Ciò che non viene mantenuto va nel cestino, da cui può essere ripristinato."
#: crates/pdfs-gui/src/app/pages/locations.rs:927
#: crates/pdfs-gui/src/app/pages/locations.rs:997
#, rust-format
msgid ""
"The original “{name}” no longer exists; only the copy is left ({copy}).\n"
@@ -2921,111 +2972,111 @@ msgstr ""
"\n"
"Mantieni la copia per restituirle il nome originale."
#: crates/pdfs-gui/src/app/pages/locations.rs:933
#: crates/pdfs-gui/src/app/pages/locations.rs:1003
msgid "Resolve Conflict"
msgstr "Risolvi conflitto"
#: crates/pdfs-gui/src/app/pages/locations.rs:938
#: crates/pdfs-gui/src/app/pages/locations.rs:1008
msgid "Name for the copy, if keeping both"
msgstr "Nome per la copia, se si mantengono entrambi"
#: crates/pdfs-gui/src/app/pages/locations.rs:945
#: crates/pdfs-gui/src/app/pages/locations.rs:1015
msgid "Keep Original"
msgstr "Mantieni originale"
#: crates/pdfs-gui/src/app/pages/locations.rs:946
#: crates/pdfs-gui/src/app/pages/locations.rs:1016
msgid "Keep Both"
msgstr "Mantieni entrambi"
#: crates/pdfs-gui/src/app/pages/locations.rs:948
#: crates/pdfs-gui/src/app/pages/locations.rs:1018
msgid "Keep Copy"
msgstr "Mantieni copia"
#: crates/pdfs-gui/src/app/pages/locations.rs:1005
#: crates/pdfs-gui/src/app/pages/locations.rs:1011
#: crates/pdfs-gui/src/app/pages/locations.rs:1075
#: crates/pdfs-gui/src/app/pages/locations.rs:1081
msgid "Couldn't resolve the conflict"
msgstr "Impossibile risolvere il conflitto"
#: crates/pdfs-gui/src/app/pages/locations.rs:1054
#: crates/pdfs-gui/src/app/pages/locations.rs:1124
msgid "Reading this computer's Proton Drive locations."
msgstr "Lettura delle posizioni di Proton Drive di questo computer."
#: crates/pdfs-gui/src/app/pages/locations.rs:1075
#: crates/pdfs-gui/src/app/pages/locations.rs:1145
msgid "Unavailable"
msgstr "Non disponibile"
#: crates/pdfs-gui/src/app/pages/locations.rs:1158
#: crates/pdfs-gui/src/app/pages/locations.rs:1228
msgid "No folders yet"
msgstr "Ancora nessuna cartella"
#: crates/pdfs-gui/src/app/pages/locations.rs:1160
#: crates/pdfs-gui/src/app/pages/locations.rs:1230
msgid "The Proton Drive service hasn't reported its folder yet."
msgstr "Il servizio di Proton Drive non ha ancora comunicato la sua cartella."
#: crates/pdfs-gui/src/app/pages/locations.rs:1183
#: crates/pdfs-gui/src/app/pages/locations.rs:1253
#, rust-format
msgid "{path} · {state}"
msgstr "{path} · {state}"
#: crates/pdfs-gui/src/app/pages/locations.rs:1226
#: crates/pdfs-gui/src/app/pages/locations.rs:1296
msgid "Read-only"
msgstr "Sola lettura"
#: crates/pdfs-gui/src/app/pages/locations.rs:1242
#: crates/pdfs-gui/src/app/pages/locations.rs:1312
msgid "Open in Files"
msgstr "Apri in File"
#: crates/pdfs-gui/src/app/pages/locations.rs:1247
#: crates/pdfs-gui/src/app/pages/locations.rs:1317
msgid "Change Location…"
msgstr "Cambia posizione…"
#: crates/pdfs-gui/src/app/pages/locations.rs:1299
#: crates/pdfs-gui/src/app/pages/locations.rs:1369
msgid "Choose whether this folder keeps a full copy on this computer"
msgstr ""
"Scegli se questa cartella conserva una copia completa su questo computer"
#: crates/pdfs-gui/src/app/pages/locations.rs:1315
#: crates/pdfs-gui/src/app/pages/locations.rs:1385
msgid "Keep every file on this computer and in Proton Drive."
msgstr "Conserva ogni file su questo computer e in Proton Drive."
#: crates/pdfs-gui/src/app/pages/locations.rs:1320
#: crates/pdfs-gui/src/app/pages/locations.rs:1390
msgid "Keep the files in Proton Drive and download each one when you open it."
msgstr "Conserva i file in Proton Drive e scarica ciascuno quando lo apri."
#. Translators: a folder mode: files are kept in Proton Drive and fetched when opened.
#: crates/pdfs-gui/src/app/pages/locations.rs:1374
#: crates/pdfs-gui/src/app/pages/locations.rs:1444
msgctxt "folder mode"
msgid "Online only"
msgstr "Solo online"
#. Translators: a folder mode: a full copy is kept on this computer.
#: crates/pdfs-gui/src/app/pages/locations.rs:1377
#: crates/pdfs-gui/src/app/pages/locations.rs:1447
msgctxt "folder mode"
msgid "Synced"
msgstr "Sincronizzata"
#: crates/pdfs-gui/src/app/pages/locations.rs:1388
#: crates/pdfs-gui/src/app/pages/locations.rs:1458
msgid "Sync Now"
msgstr "Sincronizza ora"
#: crates/pdfs-gui/src/app/pages/locations.rs:1392
#: crates/pdfs-gui/src/app/pages/locations.rs:1462
msgid "Resume Syncing"
msgstr "Riprendi sincronizzazione"
#: crates/pdfs-gui/src/app/pages/locations.rs:1394
#: crates/pdfs-gui/src/app/pages/locations.rs:1464
msgid "Pause Syncing"
msgstr "Metti in pausa sincronizzazione"
#: crates/pdfs-gui/src/app/pages/locations.rs:1405
#: crates/pdfs-gui/src/app/pages/locations.rs:1475
msgid "Stop Syncing…"
msgstr "Interrompi sincronizzazione…"
#: crates/pdfs-gui/src/app/pages/locations.rs:1414
#: crates/pdfs-gui/src/app/pages/locations.rs:1484
msgid "Make Folder Online Only?"
msgstr "Rendere la cartella solo online?"
#. Translators: {path} is a local folder path.
#: crates/pdfs-gui/src/app/pages/locations.rs:1416
#: crates/pdfs-gui/src/app/pages/locations.rs:1486
#, rust-format
msgid ""
"Files in {path} will be removed from this computer and kept in Proton Drive "
@@ -3034,11 +3085,11 @@ msgstr ""
"I file in {path} verranno rimossi da questo computer e mantenuti solo in "
"Proton Drive. Ogni file viene scaricato di nuovo quando lo apri."
#: crates/pdfs-gui/src/app/pages/locations.rs:1419
#: crates/pdfs-gui/src/app/pages/locations.rs:1489
msgid "Make Online Only"
msgstr "Rendi solo online"
#: crates/pdfs-gui/src/app/pages/locations.rs:1455
#: crates/pdfs-gui/src/app/pages/locations.rs:1525
#, rust-format
msgid ""
"Every file in {path} will download to this computer and stay synced. {free} "
@@ -3047,61 +3098,61 @@ msgstr ""
"Ogni file in {path} verrà scaricato su questo computer e resterà "
"sincronizzato. Su questo disco sono liberi {free}."
#: crates/pdfs-gui/src/app/pages/locations.rs:1460
#: crates/pdfs-gui/src/app/pages/locations.rs:1530
#, rust-format
msgid "Every file in {path} will download to this computer and stay synced."
msgstr ""
"Ogni file in {path} verrà scaricato su questo computer e resterà "
"sincronizzato."
#: crates/pdfs-gui/src/app/pages/locations.rs:1465
#: crates/pdfs-gui/src/app/pages/locations.rs:1535
msgid "Download Folder?"
msgstr "Scaricare la cartella?"
#: crates/pdfs-gui/src/app/pages/locations.rs:1469
#: crates/pdfs-gui/src/app/pages/locations.rs:1539
msgid "Download"
msgstr "Scarica"
#: crates/pdfs-gui/src/app/pages/locations.rs:1493
#: crates/pdfs-gui/src/app/pages/locations.rs:1563
msgid "Couldn't pause the folder"
msgstr "Impossibile mettere in pausa la cartella"
#: crates/pdfs-gui/src/app/pages/locations.rs:1494
#: crates/pdfs-gui/src/app/pages/locations.rs:1564
msgid "Couldn't resume the folder"
msgstr "Impossibile riprendere la cartella"
#: crates/pdfs-gui/src/app/pages/locations.rs:1500
#: crates/pdfs-gui/src/app/pages/locations.rs:1570
msgid "Folder paused"
msgstr "Cartella in pausa"
#: crates/pdfs-gui/src/app/pages/locations.rs:1501
#: crates/pdfs-gui/src/app/pages/locations.rs:1571
msgid "Folder resumed"
msgstr "Cartella ripresa"
#: crates/pdfs-gui/src/app/pages/locations.rs:1525
#: crates/pdfs-gui/src/app/pages/locations.rs:1529
#: crates/pdfs-gui/src/app/pages/locations.rs:1595
#: crates/pdfs-gui/src/app/pages/locations.rs:1599
msgid "Couldn't sync"
msgstr "Impossibile sincronizzare"
#: crates/pdfs-gui/src/app/pages/locations.rs:1555
#: crates/pdfs-gui/src/app/pages/locations.rs:1625
msgid "Shared folder"
msgstr "Cartella condivisa"
#: crates/pdfs-gui/src/app/pages/locations.rs:1557
#: crates/pdfs-gui/src/app/pages/locations.rs:1627
msgid "Going online only"
msgstr "Passaggio a solo online"
#: crates/pdfs-gui/src/app/pages/locations.rs:1558
#: crates/pdfs-gui/src/app/pages/locations.rs:1628
msgid "Switching to synced"
msgstr "Passaggio a sincronizzata"
#: crates/pdfs-gui/src/app/pages/locations.rs:1568
#: crates/pdfs-gui/src/app/pages/locations.rs:1638
msgctxt "state"
msgid "paused"
msgstr "in pausa"
#. Translators: a folder's files can't be opened right now.
#: crates/pdfs-gui/src/app/pages/locations.rs:1579
#: crates/pdfs-gui/src/app/pages/locations.rs:1649
msgid "not available"
msgstr "non disponibile"