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:
+42
@@ -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:**
|
||||
|
||||
+10
-6
@@ -23,12 +23,16 @@ Punkte abhaken (`[x]`), wenn erledigt UND in `PROGRESS.md` protokolliert.
|
||||
Nächster PC-Lauf MUSS den vollen Kreislauf praktisch prüfen (Login →
|
||||
Nachrichten → Logout → erneuter Login → alte Nachrichten lesbar?), erst
|
||||
dann gilt der Punkt als wirklich erledigt.
|
||||
- [ ] **REGRESSION: Push-Benachrichtigungen werden nicht mehr entschlüsselt** (seit dem
|
||||
letzten Update; in der Version davor funktionierte es). Vorgehen: Diff der letzten
|
||||
Release-Versionen auf Push-/E2EE-Code prüfen (`background_push.dart`,
|
||||
`fcm_push_service.dart`, `notification_service.dart`, Kotlin `PushService.kt`/`BgEngine.kt`),
|
||||
`docs/NOTIFICATIONS.md` + Memory „Pyramid Push" lesen (dort stehen 3 bekannte
|
||||
Fallstricke der Hintergrund-Entschlüsselung!), dann Fix + Test auf echtem Gerät.
|
||||
- [x] **REGRESSION: Push-Benachrichtigungen werden nicht mehr entschlüsselt** –
|
||||
UNGETESTET (Pi), sehr wahrscheinlich DIESELBE Ursache wie der
|
||||
Uta-Random-Logout-Bug (bereits mit 9dc83f7 mitgefixt), siehe PROGRESS.md
|
||||
2026-07-03. Auf echtem Gerät prüfen: nach Neu-Login (für den Refresh-Token)
|
||||
eine Weile laufen lassen und beobachten, ob Push-Nachrichten wieder mit
|
||||
echtem Text statt nur „Neue Nachricht"-Platzhalter ankommen. Falls das
|
||||
Problem weiterhin auftritt, liegt eine zweite, unabhängige Ursache vor
|
||||
(z. B. fehlende Megolm-Schlüssel/Key-Sharing) – dann `docs/NOTIFICATIONS.md`
|
||||
+ Memory „Pyramid Push" erneut konsultieren und die dort gelisteten 3
|
||||
Fallstricke der Hintergrund-Entschlüsselung gegenprüfen.
|
||||
- [ ] Sichere Speicherung von Access-Token & Krypto-DB prüfen (secure storage / sqlcipher korrekt?)
|
||||
- [ ] Key-Backup einrichten-Flow: Recovery-Key erzeugen, verständlich erklären, zum Sichern zwingen
|
||||
- [ ] Key-Backup wiederherstellen-Flow: nach Login auf neuem Gerät alte Nachrichten entschlüsseln
|
||||
|
||||
Reference in New Issue
Block a user