docs: Push-Regression vermutlich identische Ursache wie Random-Logout

getEventByPushNotification() ruft ensureNotSoftLoggedOut() auf, das ohne
Refresh-Token (siehe 9dc83f7) denselben destruktiven Auto-Logout auslösen
kann wie beim normalen Sync — nur eben aus dem Hintergrund-Isolat, mit
Zugriff auf dieselbe DB. Der bestehende Fix deckt vermutlich beide
Symptome ab. ROADMAP abgehakt, UNGETESTET (Pi) bis Praxistest am PC.
This commit is contained in:
Bernd Steckmeister
2026-07-03 09:56:02 +02:00
parent fb7669a65b
commit e8ab626c92
2 changed files with 52 additions and 6 deletions
+42
View File
@@ -13,6 +13,48 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format:
---
## 2026-07-03 M1: Push-Regression vermutlich dieselbe Ursache wie Random-Logout
**Erledigt:** Vor dem Blick in den Push-Code die Vermutung geprüft, ob die
Push-Entschlüsselungs-Regression und der Uta-Random-Logout-Bug (siehe Eintrag
weiter unten) zusammenhängen Ergebnis: **sehr wahrscheinlich ja, exakt
dieselbe Ursache.**
- `client.getEventByPushNotification(...)` (aufgerufen in `_bgDecryptAndShow`,
`background_push.dart:84`) ruft als ALLERERSTES `ensureNotSoftLoggedOut()`
auf (matrix-Paket `client.dart:1878`). Diese Funktion prüft, ob der
Access-Token in < 1 Minute abläuft, und löst dann `_handleSoftLogout()` aus
**dieselbe Funktion**, die ohne Refresh-Token (unser Zustand vor Commit
9dc83f7) sofort einen echten `client.logout()` auslöst (siehe Eintrag unten).
- Der Hintergrund-Client aus `_buildClient()` liest **dieselbe** `pyramid.sqlite`
wie der Haupt-Client. Ein `logout()`/`clear()` aus dem Hintergrund-Isolat
würde also die komplette Session (inkl. Krypto-Schlüssel) für die GESAMTE
App zerstören nicht nur für den einen Push. Das erklärt, warum das Problem
als dauerhafte Regression erscheint ("seit dem letzten Update nie wieder"):
Nach dem ersten Auto-Logout-Ereignis (ausgelöst beim Sync ODER beim
Entschlüsseln eines Pushs) sind die Schlüssel weg, jede folgende
Entschlüsselung schlägt fehl → `BgEngine` zeigt nur noch den
„Neue Nachricht"-Platzhalter (Fallback nach 6 s), nie mehr den echten Text.
- Der bereits committete Fix (`refreshToken: true` beim Login, 9dc83f7) behebt
damit vermutlich BEIDE Symptome gleichzeitig: der Refresh-Token liegt in der
gemeinsamen DB, also kann auch der Hintergrund-Client ihn lesen und einen
drohenden Soft-Logout durch stillen Refresh abwenden, statt die Session zu
zerstören.
**Offen/Nächster Schritt:** Gehört zum selben Praxistest wie der
Random-Logout-Punkt oben zusätzlich beobachten, ob nach einer Weile
(mehrere Stunden/Tage) echte Push-Inhalte statt Platzhalter ankommen. Schlägt
das fehl, liegt eine zweite, unabhängige Ursache vor (dann `docs/NOTIFICATIONS.md`
+ Memory „Pyramid Push" erneut konsultieren, insbesondere die 3 dort gelisteten
Fallstricke der Hintergrund-Entschlüsselung).
**Stolperfallen:** Diese Verbindung wurde rein durch Lesen des matrix-SDK-
Quellcodes hergeleitet (`~/.pub-cache/hosted/pub.dev/matrix-6.2.0/lib/src/client.dart`),
nicht durch Beobachtung auf einem echten Gerät bewusst als Vermutung
markiert, bis der PC-Praxistest sie bestätigt.
---
## 2026-07-03 M1: Uta-Random-Logout Ursache gefunden + Fix (UNGETESTET/Pi)
**Erledigt:**