# PC-Testplan – alle aufgelaufenen UNGETESTET(Pi)-Punkte

Stand: 2026-07-03. Alle Pi-Sessions seit dem 2026-07-03 konnten nur
`flutter analyze` + automatisierte Textvergleiche fahren (kein GUI auf dem Pi).
Dieser Plan konsolidiert JEDEN ausstehenden Praxistest aus PROGRESS.md an einer
Stelle. Beim nächsten Windows-Lauf von oben nach unten abarbeiten, Ergebnis je
Punkt hier eintragen (✅/❌ + Datum), Befunde als eigene PROGRESS-Einträge.

Schnellster Weg: `flutter run -d windows`.

## 0. Vorab (1 Minute)

- [ ] `flutter test` – die Regressionstests unter `test/` (Soft-Logout-Guard,
      Power-Levels-Schutz, AuthLog, Storage-Fassade `settings_prefs` –
      Stand 2026-07-03: 24 Tests) müssen grün sein, bevor irgendetwas
      anderes geprüft wird.

## 1. Härtetest Login/Krypto (M1 – PFLICHT, zuerst!)

Deckt die Fixes 63e4919, 9dc83f7, 891f348 ab (Uta-Random-Logout + Guard).

- [ ] Login mit Test-Account → Nachrichten in verschlüsseltem Raum senden/lesen
- [ ] `auth_log.txt` (App-Support-Verzeichnis) prüfen: LoginState-Wechsel
      werden mitgeschrieben, keine unerwarteten Warnungen
- [ ] Logout (Warnung bei fehlendem Key-Backup erscheint? b5762ea)
- [ ] Erneuter Login → **alte verschlüsselte Nachrichten noch lesbar?**
- [ ] Mehrere Stunden laufen lassen: kein Random-Logout, kein
      Login-Screen-Flackern (isLoggedInProvider-Änderung), `auth_log.txt`
      zeigt ggf. „Soft-Logout durch Token-Refresh abgewendet"
- [ ] Ergebnis als „Härtetest"-Eintrag in PROGRESS.md dokumentieren
      (= ROADMAP-M1-Punkt „Härtetest dokumentieren" abhaken)
- [ ] Android: nach Neu-Login beobachten, ob Push-Inhalte wieder echt
      entschlüsselt ankommen (statt „Neue Nachricht"-Platzhalter). Falls nicht:
      zweite Ursache, siehe `docs/NOTIFICATIONS.md` + Memory „Pyramid Push"
- [ ] Danach Uta: einmal aus- und wieder einloggen (erst dann hat ihre
      Session einen Refresh-Token!)

## 2. Settings-Split (5d77238, 12 Teildateien)

Alle Reiter öffnen und benutzen: Profil, Benachrichtigungen, Erscheinungsbild,
Voice, Tastaturkürzel, Privatsphäre, Sessions, Verschlüsselung, Account, Über.

- [ ] Verschlüsselung (HEILIG): Recovery-Key anzeigen, Megolm-Export UND
      -Import (Passphrase), SAS/QR-Verifizierung starten
- [ ] Sessions: Gerät umbenennen, Einzel-Logout, Massen-Logout-Dialog
      (Passwort-Reauth) nur bis zur Abfrage
- [ ] Account: Passwort-ändern-Dialog öffnen, Account-löschen-Dialog öffnen
      (NICHT bestätigen)
- [ ] Logout-Warnungs-Text bei fehlendem Backup sichtbar (settings_about/shared)

## 3. Chat-Timeline-Split (5bf45a9) + tote-Code-Bereinigung (6400fb6)

Einen Chat mit allen Nachrichtentypen durchgehen:

- [ ] Text mit Link-Vorschau, Bild, Video, Audio, Datei-Anhang
- [ ] Download-/Entschlüsselungs-Fehlerpfade in `message_media.dart` gezielt
      ansehen (am wenigsten geprüfter Teil)
- [ ] Reaktionen setzen/entfernen, Hover-Aktionsleiste, Antworten/Zitat
- [ ] Datums-Trenner, „Neue Nachrichten"-Divider
- [ ] Gescheiterte Nachricht: bleibt mit Retry/Löschen stehen, Retry geht
- [ ] Zeitanzeige bei aufeinanderfolgenden Nachrichten + Hover-Uhrzeit bei
      Fortsetzungsnachrichten (`_formatMessageTime`-Zusammenführung)

## 4. Raumlisten-Split (a863fa3) + Reorder-Fix (401bd6a)

- [ ] Space wechseln, Raum beitreten/verlassen
- [ ] **Drag&Drop-Umsortieren: landet der Raum EXAKT an der Zielposition?**
      (onReorder→onReorderItem, Index-Korrektur jetzt im Framework – Off-by-One
      wäre hier sichtbar; nach oben UND nach unten ziehen testen)
- [ ] Voice-Channel-Teilnehmerliste in der Raumliste
- [ ] Einladung annehmen/ablehnen, Ungelesen-Badge, DM-Avatare

## 5. Space-Admin-Split (0c7d359)

An einem TEST-Space, nicht an Utas echtem:

- [ ] Übersicht: Sichtbarkeit umschalten, Banner ändern (Danger-Zone nur ansehen)
- [ ] Mitglieder: einladen, Rolle ändern (Selbst-Aussperr-Schutz
      `updatePowerLevelsSafely` greift?), kicken
- [ ] Berechtigungen ändern, Kanäle: erstellen + bestehenden Raum hinzufügen

## 6. Chat-View-Split (31e4001)

- [ ] Chat-Header (normal + DM mit ausklappendem Header/Presence)
- [ ] Tippanzeige, Offline-/Reconnect-Banner (Netz kurz trennen)
- [ ] Datei per Drag&Drop in den Chat ziehen (Overlay + Senden)

## 7. Dokument-Viewer-Split (daf4cf3) + Matrix4-Fix (401bd6a)

- [ ] PDF inline im Chat, Vollbild-Viewer: **Zoom per Buttons/Strg+Mausrad**
      (translateByDouble/scaleByDouble-Umbau – zoomt es zentriert wie vorher?),
      Seiten-Navigation, Thumbnail-Leiste, Speichern-Button
- [ ] Text/Markdown/SVG-Vorschau, Office-Text-Extraktion
- [ ] ZIP/TAR-Archiv-Browser, PSD-Thumbnail
- [ ] Bild im Chat öffnen (Fallback-Pfade)

## 8. Kleinkram aus den Lint-Commits

- [ ] Mini-Call-Widget: Buttons zeigen jetzt Hover-Farbe (9dc1175, gewollt) –
      sieht das ok aus?
- [ ] Anhang-Dialog + Raum-erstellen-Dialog: Switches (activeThumbColor) sehen
      aus wie vorher
- [ ] Voice-Channel beitreten/verlassen (Kernflow laut CLAUDE.md, von den
      Splits nicht berührt, aber Pflicht nach jedem Refactoring)

## Danach

- [ ] Alle ✅ hier eintragen, PROGRESS.md-Eintrag „PC-Praxistest" schreiben,
      erst DANN neue riskante Punkte anfangen (Call-Fassade, SQLCipher –
      siehe `docs/SQLCIPHER_MIGRATION.md`)
