docs: Wiederaufnahme 2026-10-07 - Tests/Benchmarks dokumentiert, SDK-Wettlauf + Abhaengigkeiten in ROADMAP

Neue Punkte: SDK-Sync-Wettlauf (Logout-Pfad pruefen), Abhaengigkeits-Updates
(sqlcipher_flutter_libs EOL - nie auf 0.7.0 heben, matrix 6.2 -> 13,
flutter_markdown eingestellt; WebRTC-Audio-Fix weiterhin nicht upstream).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Bernd Steckmeister
2026-10-07 11:55:32 +02:00
co-authored by Claude Opus 5.5
parent df1b392ed8
commit dbc0340eeb
5 changed files with 208 additions and 0 deletions
+38
View File
@@ -169,6 +169,21 @@ Punkte abhaken (`[x]`), wenn erledigt UND in `PROGRESS.md` protokolliert.
E2EE-Empfang live belegt, auth_log unauffällig; App läuft seit 12:43
für die Langzeit-Beobachtung weiter. **Offen (Klick/Bernd):**
Senden, Logout-Warnung, Re-Login mit Lesbarkeits-Check.
- [ ] **SDK-Wettlauf: verspätete 401 einer alten Sync-Anfrage löscht ggf. die
NEUE Session** (gefunden 2026-10-07 über einen sporadisch roten
Live-Test, siehe PROGRESS.md). matrix 6.2 `Client._innerSync` wirft den
Fehler einer Sync-Antwort, BEVOR geprüft wird, ob die Anfrage noch
aktuell ist (`_currentSyncId`). Läuft beim Logout noch ein Long-Poll
(bis 30 s) mit dem alten Token, kommt dessen M_UNKNOWN_TOKEN danach an
und das SDK ruft `clear()` – nach einem schnellen Re-Login auf
demselben Client wäre das ein „Random-Logout" direkt nach dem Login.
Upstream (famedly/matrix-dart-sdk `main`, 2026-10-07) unverändert;
neuere SDKs versuchen bei vorhandenem Refresh-Token aber zuerst einen
Refresh statt `clear()` (entschärft). Im Live-Test per
`_logoutWithoutStraySync` umgangen. **Offen:** App-Logout-Pfad prüfen
(läuft der Re-Login auf demselben Client-Objekt? dann vor
`client.logout()` Sync anhalten + laufenden Long-Poll abwarten) –
heiliger Pfad, nur mit Gerätetest; ggf. Upstream-Issue melden.
## M2 – Das große Refactoring (erst nach M0/M1!)
@@ -253,6 +268,29 @@ lassen, ohne dass andere Module angefasst werden müssen.
prüfen), siehe „Fragen an Bernd"/Nächster-Schritt in den jeweiligen
PROGRESS.md-Einträgen)
- [ ] Nach JEDEM Schritt: App läuft, Kernflows getestet, Commit
- [x] Test-/Benchmark-Gerüst: `scripts/test.ps1` (Analyse, Unit-, Live-Tests,
Benchmarks mit einem Befehl), `benchmark/` mit Baseline, lokale Suche
als testbares Modul (`lib/features/search/`). Siehe
`docs/TESTS_UND_BENCHMARKS.md`, PROGRESS.md 2026-10-07.
- [ ] **Abhängigkeiten aktualisieren (3 Monate Stand, 119 Pakete veraltet)** –
einzeln, jeweils mit `scripts/test.ps1 -All` abgesichert:
- **`sqlcipher_flutter_libs` ist EOL:** 0.7.0 ist ein leerer Platzhalter
(pub.dev). Unsere Bindung `^0.6.8` schließt ihn aus – NIEMALS per
`pub upgrade --major-versions` mitziehen, sonst fehlt SQLCipher und
die App kann die verschlüsselte DB nicht mehr öffnen
(`AppDatabase` wirft dann bewusst, kein Datenverlust, aber Aussperren).
Nachfolger: `sqlite3` 3.x mit `hooks: user_defines: sqlite3: source:
sqlcipher` – Kompatibilität mit `sqflite_common_ffi` und Android
vorher klären; Migrations-/DB-Tests + Gerätetest Pflicht.
- `matrix` 6.2 → 13.x (großer Sprung, Breaking Changes; heiliger
Login-/Krypto-Pfad), `flutter_vodozemac` 0.5 → 0.8 gehört dazu.
- `livekit_client` 2.7 → 2.13 (innerhalb der Bindung möglich),
`flutter_webrtc`-Override 1.4.1 → 1.6.2: der Windows-Audiogeräte-Fix
(libwebrtc #142) ist auch in 1.6.2+hotfix.4 NICHT enthalten
(Changelog geprüft 2026-10-07) → Dummy-PeerConnection-Workaround
bleibt nötig.
- `flutter_markdown` ist eingestellt (pub: „replaced by
flutter_markdown_plus“) → umstellen (Markdown-Vorschau im Dokument-Viewer).
## M3 – Calls: Logik, UI & Audio (Discord als Referenz)