Skip to content

fix: tray cloud-check, per-file progress, wizard and account polish - #89

Merged
gnacho merged 18 commits into
mainfrom
fix/76-tray-cloud-check
Aug 20, 2026
Merged

gnacho merged 18 commits into
mainfrom
fix/76-tray-cloud-check

Conversation

@gnacho

@gnacho gnacho commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Accumulated batch of UI and reliability fixes, installed and validated on the desktop since 2026-08-20.

Highlights:

Closes #50
Closes #73
Closes #74
Closes #75
Closes #76
Closes #77
Closes #78
Closes #79
Closes #80
Closes #81
Closes #82
Closes #83
Closes #84
Closes #85
Closes #86
Closes #87
Closes #88

gnacho added 18 commits August 20, 2026 12:15
…come

The wizard window was cached forever, so reopening Add Account
re-presented the old window with the previously typed values, and the
title said Set Up NextSync. Now the cache is dropped when the window
closes and each opening builds a fresh wizard titled Add Account. The
welcome page no longer uses AdwStatusPage, whose internal
GtkScrolledWindow showed an unwanted scrollbar; a compact header
replaces it.

Closes #80
The avatar fetch existed but nothing called it outside tests, so the
cache stayed empty and the sidebar always fell back to initials. The
sidebar now fetches missing avatars in the background, stores them and
repaints through the current avatar widget. Nextcloud answers 404 with
the generated placeholder avatar in the body when the user never
uploaded one, so image bodies are accepted on 200 and 404 and error
JSON/text bodies are ignored.

Closes #50
The plain cloud glyph read as "app running", not as "everything
synced". The all-synced aggregate (IdleOk, icon_key "ok") now shows a
Lucide cloud-check SVG shipped next to the other tray glyphs; paused,
offline and error states keep the plain cloud and the unconfigured
install keeps the struck-out cloud.

Closes #76
The folders step ended with a Sign In button even though sign-in had
already happened, and the summary page it led to only repeated what was
just picked before the real first-sync review. The folders step now
finishes setup directly: with folders it opens the first-sync review,
without them it connects right away.

Closes #73
The paragraph explaining what the hidden journals record and what each
choice does repeated what the Keep Synchronization History and Start
Fresh buttons already say. The section is now a single line; merge and
oversized findings keep their longer wording.

Closes #74
Absolute paths in the folder rows were long and got cut off in the 620
px wizard. Rows now show ~/ prefixed paths with the absolute path in a
tooltip, and the window defaults to 720 px.

Closes #75
Clearing a batch of conflicted copies meant the same per-row click
repeated for every file. The conflicts page now shows two bulk buttons
when a scan finds conflicts; each asks for confirmation with the real
count, applies keep-local or keep-remote across the list and reloads.
Per-row buttons stay for mixed decisions.

Closes #77
Folder rows carried their title in the regular weight and a subtitle
led by Remote: /path. The title label is now styled bold through an
app-wide CSS rule on the new folder-source class, and the subtitle
reads Synced in local {folder} with the remote path stripped of its
leading slash. The wizard rows keep the Remote: label.

Closes #78
Step one mentioned the local Nextcloud folder only and step two, the
typed confirmation, said nothing about files at all. Both steps now
state plainly that nothing is deleted locally or on the server and the
wording is provider-neutral.

Closes #79
The summary squeezed state, server and full quota into one line. It now
stacks two lines: state light and server host, then login user and used
space only, with no capacity. Add Folder sits on the right with the
suggested-action class so it renders in the theme accent.

Closes #81
First-run setup asked for the remote path as plain text. The dialog now
offers a dropdown with the server's existing folders, filled right after
sign-in with the credentials already entered in the wizard; the manual
entry stays the source of truth for new paths. OpenCloud keeps the
manual entry until its listing lands.

Closes #82
The Lucide-default stroke of 2 read thin and washed out at tray sizes;
3 keeps the geometry legible on panels.

Closes #83
Both entries duplicate controls that live in the main window, one Open
click away. The tray menu keeps Open, Log and Quit; the pause-all state
handling stays for the header button.

Closes #84
…required

Killing and relaunching the app left every folder in needs-attention
until a manual sync: a credential lookup that failed for infrastructure
reasons (session bus not ready at startup, secret service hiccup) was
classified as rejected credentials, which armed the #72 gate and parked
all automatic triggers. Locked and unavailable lookups now report the
keyring as locked, a state with no brute-force risk, and the scheduler
re-attempts the run on the next automatic trigger instead of only
queuing it. A genuinely missing keyring item keeps the auth-rejected
meaning.

Closes #85
While a run is in flight the row showed a bare spinner, so large folders
looked frozen. The row now renders a small dim line with the translated
action, the file being operated on and the run's operation counter,
driven by the progress events the engine already publishes; it
disappears when the run ends.

Closes #86
The tray showed the plain cloud for everything but all-synced and
unconfigured. Syncing and queued states now show the Lucide cloud-sync
swirl, problem states (error, auth required, keyring locked) show
cloud-alert, and the unconfigured install shows the canonical Lucide
cloud-off instead of the old struck-out cloud. All glyphs keep the
stroke width 3 of the tray family.

Closes #87
Remote folders with spaces showed up percent-encoded in the pickers
(Mis%20documentos), and picking one stored the encoded name, which the
engine re-encoded into a %2520 URL and a 404 on every sync. The listing
now decodes the href segment so pickers show and store the real name;
the engine's single encoding stays the only one. Round-trip tests cover
spaces, accents and malformed escapes.

Closes #88
@gnacho
gnacho merged commit d444487 into main Aug 20, 2026
1 check passed
@gnacho
gnacho deleted the fix/76-tray-cloud-check branch August 20, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment