Bernds Wunsch 2026-10-08: UI grundsätzlich prüfen (Navigation, Sackgassen,
Anruf-Logik). Audit + Konzept in docs/UI_AUDIT.md, belegt mit neuer
Screenshot-Tour integration_test/ui_audit_tour_test.dart (35 Zustände,
Handy + PC, zwei Testkonten, Test-Space mit Sprachkanal).
Sofort behoben:
- S1/S2: Gegenseite legt auf / Anruf scheitert / Sprachkanal bricht ab →
automatisch zurück zum Chat mit Hinweis (Fehler sichtbar statt still);
leere Anrufansicht deutsch mit Zurück-Knopf (vorher englische Sackgasse
ohne Zurück am Handy).
- S4: toter „Threads“-Knopf entfernt. S5: Space betreten (PC) öffnet
letzten bzw. ersten Textkanal. S6: keine doppelte Anrufsteuerung am PC.
- Annehmen-Fenster mit Anrufer-Avatar und Anrufart; eigene Kachel mit
eigenem Initial statt „D“; Mitgliederliste rund mit Profilbild und „(Du)“;
Tastaturkürzel nur am PC; englische Texte in Anruf/Leerzuständen deutsch.
- Tests: Fehlerempfänger des Testrahmens nach app.main() zurück (vorher
verschwanden Fehlermeldungen), Lesebestätigungs-Test im Wegwerf-Raum statt
in der DM, robustere Schritte; test.ps1 räumt liegengebliebene
Test-Prozesse weg; gemeinsame Hilfen integration_test/support/.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bernds Test 2026-10-08 (Streamen ging weder am PC noch am Handy, Ton kam
nicht an, Trenner blieb manchmal stehen) – mit neuem Live-Anruftest
(zwei Testkonten im selben Prozess) nachgestellt und behoben:
- Bildschirm teilen: Die Stromzuordnung rief ein SDK-getFeeds() auf, das es
nicht gibt; der Fehler wurde geschluckt → Übertragungen wurden nie
angezeigt und beim Sender nie als aktiv erkannt. Jetzt typisierte
Zugriffe (remote/localScreenSharingStream, 'stopped' beachtet).
- Verbindungsaufbau: matrix-SDK verwirft Kandidaten, die vor der fertig
verarbeiteten Einladung bzw. während des Annehmens eintreffen; unter
Windows wirft getRemoteDescription zudem statt null zu liefern. Pyramid
puffert alle Kandidaten der Gegenseite und reicht sie direkt an die
Verbindung nach. Test: vorher nie verbunden, jetzt ~0,5 s (angerufen)
bzw. ~2,7 s (anrufend), Ton beide Richtungen, Teilen beide Richtungen.
- SDK-Aufrufe in eigener Zone: harmlose Plugin-Fehler (Lautsprecher unter
Windows) werden protokolliert statt durchzuschlagen; Ergebnisse/Fehler
per Completer über die Zonengrenze (sonst ewiges Warten).
- Sprech-Ring auch bei 1:1-Anrufen (Pegel aus WebRTC-Statistiken) – zeigt,
ob das eigene Mikrofon Ton liefert und ob die Gegenseite ankommt; großes
Bild springt nicht mehr bei jedem Sprechwechsel.
- „Neue Nachrichten“ mitten in einer Gruppe (mehrere Nachrichten desselben
Absenders) blieb bis zum erneuten Öffnen stehen: Inline-Trenner jetzt nur
mit Ungelesenem, blendet aus und trägt den Sprungschlüssel. Live-Test.
- „Anruf läuft“-Leiste nicht schon beim Klingeln.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Handy: Chat gleitet federnd über die Chatliste (Liste bleibt aufgebaut,
Scrollposition erhalten), beim Zurück wieder hinaus; Liste schon während
des Hinausgleitens bedienbar. Mitgliederleiste gleitet herein.
- Neue/gesendete Nachrichten ploppen weich auf (nur live, nicht beim Öffnen
oder Nachladen), Reaktionen ploppen auf und hüpfen beim Hochzählen,
Ungelesen-Zähler hüpft, Scroll-nach-unten-Knopf federt (Handy größer),
Antwort-Leiste klappt federnd auf/zu, Senden-Pfeil ploppt, Vollansicht
zoomt auf. Alles skaliert mit Einstellung „Animationen“ (0 % = aus).
- Fix: Beim Raumwechsel blieben Antwort-Ziel, Auswahl und getippter Text am
neuen Raum hängen (Antwort auf Raum A konnte in Raum B rausgehen). Jetzt
eigenes Eingabefeld je Raum mit Entwurf im Speicher.
- Antwort-Leiste: größeres Schließen-X auf dem Handy.
- Tests: test/spring_motion_test.dart, UI-Durchlauf mit Übergängen.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bernds Wunsch 2026-10-07: Die Nachrichtenliste reicht jetzt bis ganz unten;
Tipp-Anzeige und Eingabefeld schweben darueber. Um das Feld herum ist die
Flaeche klar (Chat sichtbar), aber beruehrungsdicht - dort reagiert nur die
Eingabe. Hinter dem Feld selbst Milchglas (Unschaerfe + 78 % Flaeche), Rahmen
und Fokus-Ring aussen. Die Liste bekommt unten genau die gemessene Hoehe der
Leiste als Abstand (MeasureSize; waechst mit Antwort-Leiste/mehrzeiligem
Text), damit die neueste Nachricht ganz ueber die Leiste scrollt; der
Nach-unten-Knopf sitzt darueber.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Fünfter und letzter Durchgang der part/part-of-Aufteilung - reine
Verschiebung, keine Logikänderung. chat_view.dart schrumpft von 2116 auf
33 Zeilen (nur noch Bibliothekskopf). Verifiziert per automatisiertem
Blockvergleich gegen das Original und flutter analyze.
Damit sind alle 5 in der M2-Ist-Analyse gefundenen Gott-Dateien aufgeteilt;
ROADMAP-Punkt "Toten Code & Duplikate entfernen, Ordnerstruktur
vereinheitlichen" abgehakt.
Co-Authored-By: Claude Sonnet 5 <[email protected]>