Skip to content

Audit batch: 11 fixes + live progress fix (v0.118.0) - #132

Merged
gnacho merged 14 commits into
mainfrom
fix/v118-lote-auditoria
Aug 21, 2026
Merged

gnacho merged 14 commits into
mainfrom
fix/v118-lote-auditoria

Conversation

@gnacho

@gnacho gnacho commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Audit batch from a four-area code review (core, nextcloud, ui, storage). Every change lands as its own commit closing its issue.

Fixes:

Closes #120
Closes #121
Closes #122
Closes #123
Closes #124
Closes #125
Closes #126
Closes #127
Closes #128
Closes #129
Closes #130
Closes #131

gnacho added 14 commits August 21, 2026 15:03
keep_remote promoted the conflicted copy over the working file but left the
'(Nextcloud conflicted copy ...)' file on disk, so the next discovery
reported the same conflict and nextcloudcmd reprocessed it every run.

Closes #120
Each FolderStatusRow held its state and progress subscriptions without a
Drop impl, so rows discarded while rebuilding the account view left their
callbacks alive on the StateController, capturing row widgets. That is the
same crash vector as #102 plus an unbounded listener leak.

Closes #121
show_conflicts_for cached a single ConflictResolverWindow and never cleared
it: on_close was None, so opening 'Resolve conflicts' from another folder
raised the stale window (wrong folder's conflicts and deletions) and its
Recent poll stayed stopped after the first close.

Closes #122
The 'Connected'/'Not connected' label was set once at construction while
only the light icon updated live, so the text stayed 'Connected' after the
connection dropped. The aggregate subscription now refreshes both, and the
text follows the actual state (only Offline reads 'Not connected').

Closes #129
WebDAV URLs were built from the raw remote_path and username, so folders
with spaces, accents or reserved characters ('Musica Albums', 'My
Documents') produced invalid URIs and MKCOL/PROPFIND failed with a
transport error. Each path segment and the username are now percent-encoded
(restore_trash_item already did this; the rest did not).

Closes #123
The picker filtered every path segment, including the username and the
fixed dav root, so a login containing 'trash' or 'versions' hid all
folders and a legit folder named '.dotfiles' disappeared too. The filter
now looks at the last segment (the folder name) only.

Closes #128
The sync engine only ran the structural redaction passes, so a password or
token echoed by nextcloudcmd on its diagnostics was stored verbatim in the
run tail. The resolved credential now feeds a Redactor that scrubs it
before the line reaches the capture buffer or the log.

Closes #126
The Recent tab matched only the English substring 'completed successfully',
so localized outcome lines (the ones actually written to the daily log)
got the INFO icon instead of the OK check. Success is now recognized from
the fixed outcome msgids and their Spanish catalog forms.

Closes #125
cooldown_finished used the queued snapshot captured when the run ended, so
a trigger arriving during the 4s cooldown was queued but never started
until the next trigger (Manual included). It now re-reads the real queue
and starts if anything is pending, online and not paused.

Closes #127
The 'Type \u201cremove\u201d to confirm account removal.' toast was hardcoded English
even though the catalog already carried its Spanish translation.

Closes #130
t(&format!(...)) built a key that never matched a catalog entry, so the
Remove, password-store and space labels always fell back to English even
with translations present. The messages now use the static msgid with
.replace() and the missing catalog entries are filled in.

Closes #124
The propagation whitelist only counted DownloadFile/UploadFile/PropagateJob
and PropagateDirectory, so during local/remote removes, renames/moves,
mkdirs and encrypted transfers the per-file label and counter froze on the
last parsed file even though the engine kept working. Every propagator
completion now advances the counter, mapped to 'processing' for the phases
that are not transfers.

Closes #131
@gnacho
gnacho merged commit 381603a into main Aug 21, 2026
1 check passed
@gnacho
gnacho deleted the fix/v118-lote-auditoria branch August 22, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment