fix(gui): keep a saved sign-in when the keyring can't be read

The app read the session with `auth::load().ok()`, so a locked keyring, a
Secret Service that was not up yet or any D-Bus error showed the sign-in
form as if nobody were signed in. The session was still saved (B253).

Keyring errors are now kept apart from "not signed in". The login page
shows a banner saying the saved sign-in could not be read, with a Retry
button. The app tries again after 2, 5, 10 and 30 seconds and opens on
Files once the keyring answers. The login page's header also loses the
back button the collapsed split gave it.

Translated into every shipped language.
This commit is contained in:
nvrl committed 2026-10-16 17:21:46 +02:00
1 parent e6971dd702
commit 179b6555c4
12 files changed
+1129 -950

No files matched your search

+26
View File
@@ -100,6 +100,7 @@ a live account since.
| Entry | Title |
|---|---|
| [B253](#b253--the-app-shows-the-sign-in-page-when-the-keyring-is-locked) | The app shows the sign-in page when the keyring is locked |
| [B252](#b252--computers-sharing-a-device-overwrite-each-others-profile) | Computers sharing a device overwrite each other's profile |
| [B251](#b251--two-computers-can-make-the-same-conflict-copy-name) | Two computers can make the same conflict copy name |
| [B250](#b250--a-revision-made-during-a-mirror-download-never-arrives) | A revision made during a mirror download never arrives |
@@ -355,6 +356,31 @@ a live account since.
Newest first.
### B253 — The app shows the sign-in page when the keyring is locked
**Status:** Fixed, not verified live
**Found:** 2026-10-16, user report: "the login each time you reboot or logout and back in".
**Where:** `build_window` in `crates/pdfs-gui/src/app/main.rs`; `wire_login` in
`crates/pdfs-gui/src/app/pages/login.rs`
**Repro:** Sign in, then start `pdfs-app` while the Secret Service is locked, not yet running,
or unreachable. The app shows the sign-in form as if nobody were signed in. The saved session
is still in the keyring, and the daemon waits for it.
**Cause.** The app read the session with `auth::load().ok()`, which turns every keyring error
into "signed out". Only `NotLoggedIn` means that. The tray already told the two apart.
**Fix.** `read_session` keeps `NotLoggedIn` apart from keyring errors. On an error the login
page shows a banner saying the keyring could not be read, with a Retry button. The app reads
the keyring again after 2, 5, 10 and 30 seconds and on Retry, and opens on Files once it
answers, without asking for a sign-in. A sign-in whose session cannot be read back gets the
same banner.
**Test:** None automated; the GTK window has no test harness. Checked by hand with
`DBUS_SESSION_BUS_ADDRESS` pointing nowhere: the banner shows over the form.
---
### B252 — Computers sharing a device overwrite each other's profile
**Status:** Fixed, not verified live