- Einstellung 'Navigation: Seitenmenue | Untere Leiste' (Handy, Standard
bleibt Seitenmenue): Tabs Chats/Server/Du, Server-Uebersicht als Karten,
Du-Tab mit Profil + Einstellungen, Zurueck-Taste ueber die Tabs
- CallDock als eigenes Widget (Anrufleiste auch ueber der Tab-Leiste)
- Sprachkanaele am Handy als Kachel mit 'wer ist drin'
- Suchfeld mit Lupe, 'Kanaele durchsuchen' im Server, Filter-Chips am PC
umbrechend, '#' nur bei Server-Kanaelen, englische Reste entfernt
- Anrufansicht merkt sich Bubbles/Kacheln, Bubbles mit leichtem Glanz
- UI-Tour: Gruppenanruf (echter zweiter LiveKit-Teilnehmer), Bubbles mit
5/7 Personen, untere Leiste; Version 0.1.42
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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:
- Taub-Knopf setzte bei 1:1-Anrufen nur ein Häkchen. Jetzt wie Discord:
Ton der Gegenseite aus (Empfangsspuren deaktiviert, auch nach
Neuverhandlung) und selbst stumm; beim Aufheben Mikro-Zustand von vorher.
- Stumm: schlug nur das Senden der Status-Info fehl, schaltete Pyramid den
Knopf blind zurück, obwohl das Mikro aus war – danach zeigte der Knopf
das Gegenteil. Jetzt wird der echte SDK-Zustand übernommen.
- Mini-Anrufleiste erschien schon beim Klingeln (vor dem Annehmen).
- Bildschirm-Auswähler: deutsch, Hinweis zur bekannten WebRTC-Grenze bei
HDR unter Windows (blasses Bild; Fenster teilen oder Win+Alt+B).
- Live-Anruftest drückt Stumm und Taub über die echten Knöpfe und prüft,
was bei der Gegenseite ankommt.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bernds Test mit der PC-Testinstanz:
- ✓✓ erschien erst nach erneutem Öffnen: eine Lesebestätigung ohne neue
Nachricht zeichnete nichts neu (Raum-Update kommt im SDK vor der
Bestätigung). Jetzt nach jedem Sync Fingerabdruck der Lesepositionen
prüfen und bei Änderung neu zeichnen.
- Einladung: Chat zeigte leeren Verlauf, Annehmen ging nur in der Liste, und
danach blieb der Chat leer bis zum App-Neustart. Jetzt Annehmen/Ablehnen
direkt im Chat; Annehmen wartet auf den Beitritts-Sync, der Verlauf baut
sich bei invite→join selbst neu auf.
- Trenner blieb stehen, wenn nach dem Öffnen/Zurückkommen nicht gescrollt
wurde. Jetzt: neueste Nachrichten sichtbar (≤ halbe Bildschirmhöhe
hochgescrollt) → nach 6 s weich ausblenden, auch ohne Scrollen.
- Live-Test mit beiden Testkonten (Gegenprobe: ohne Fix rot) in
scripts/test.ps1 -Ui; Testlauf-Sperre erkennt nur noch eigene Testläufe.
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]>
- rooms_mobile_tile.dart: auf dem Handy grosser Avatar, Name + Uhrzeit der
letzten Nachricht, Vorschau (gleiche Texte wie Push: Medien-Labels,
Antwort-Zitat entfernt; "Du:" bzw. Absender in Gruppen), Ungelesen-Zaehler.
PC behaelt die kompakte Liste, Voice-Kanaele ihre Darstellung.
- utils/date_labels.dart: chatListTime (heute Uhrzeit, Gestern, Wochentag,
Datum; sicher an Zeitumstellungs-Tagen) + 5 Tests.
- Sichtbare englische Texte eingedeutscht (Chats durchsuchen,
Direktnachrichten, Raeume, Nachricht..., Mitglieder, Suchen, ...).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Mit zwei echten Test-Accounts (zwei GUI-Instanzen via PYRAMID_PROFILE_DIR)
durchgeklickt: Beitreten, Teilnehmerliste, bidirektionaler Screenshare,
Live-Qualitaetswechsel (Full HD 60fps), sauberes Verlassen.
- rooms_list.dart: Voice-Channel in der normalen Raumliste war per Klick
nicht beitretbar (oeffnete nur Chat) -> _toggleVoiceChannel wie Space-Liste.
- livekit_call_manager.dart: _callGeneration entwertet laufenden connect
bei Auflegen/Wechsel (keine Geisterverbindung mit offenem Mikro);
Fehlerpfade setzen error sichtbar statt still zu verschwinden.
- rooms_panel_core.dart: raeumt activeVoiceRoomIdProvider auf, wenn der
Voice-Service inaktiv wird, + Fehler-SnackBar.
- test/live_call_setup_test.dart: gegateter Setup-Helfer fuer den Testraum.
UNGETESTET: echtes 2-Peer-Audio, Netz-Abbruch mitten im Call.
Co-Authored-By: Claude Fable 5 <[email protected]>
- CallSignalingService/callSignalingProvider und VoiceChannelService/
voiceChannelProvider als einzige oeffentliche Schnittstellen
- voip_manager.dart / livekit_call_manager.dart in ihre Module verschoben,
Logik unangetastet (nur Klassen-Koepfe, @override, Imports, Provider-Namen)
- Alle Konsumenten entkoppelt; Kompositions-Punkt matrix_client.dart als
dokumentierte Ausnahme. analyze sauber, 29 Tests gruen, Windows-Start ok.
Call-Klick-/Geraetetest steht aus (PROGRESS.md)
Qualitäts-Review-Befund (a): Alle 6 part/part-of-Aufteilungen hatten Code
vollständig übernommen (Zeilen-Multiset-Vergleich Original vs. heutiger
Stand: keine Code-Zeile verloren, keine hinzugefügt), ABER erklärende
Kommentare über den Klassen gingen verloren (24 Blöcke, u. a. die
HTML-Subset-Doku über _MatrixHtmlText, die Selbst-Aussperr-Warnung über
updatePowerLevelsSafely, TURN-Verbrauchskarte, PDF-Cache/Viewer-Doku).
Alle an den richtigen Klassen wiederhergestellt; reine Trennlinien und
ALL-CAPS-Abschnittslabels bewusst nicht (Gott-Datei-Navigation, durch
die neuen Dateinamen ersetzt).
Co-Authored-By: Claude Fable 5 <[email protected]>
Gleiche Technik wie bei settings_modal.dart/message_group.dart: reine
Verschiebung per Dart part/part-of, keine Logikänderung. rooms_panel.dart
schrumpft von 2555 auf 31 Zeilen (nur noch Bibliothekskopf). Verifiziert
per automatisiertem Blockvergleich gegen das Original und flutter analyze.
Co-Authored-By: Claude Sonnet 5 <[email protected]>