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]>
Die App signierte LiveKit-Tokens selbst – dafür steckte das SFU-Secret im
App-Code (jeder mit der APK konnte sich Tokens für beliebige Räume und
Identitäten ausstellen). Jetzt holt die App das Token von der bereits
vorhandenen Server-Route /api/livekit-token (whoami-Prüfung, Identität =
geprüfte Matrix-ID). Secret und JWT-Signieren sind aus dem Client entfernt.
- Lesbare Fehlermeldungen (offline, 401, Serverfehler) statt stiller Fehler.
- Gruppenanruf aus dem Chat-Kopf übergibt jetzt den Matrix-Client.
- Tests: Unit-Test mit Mock-HTTP + echter LiveKit-Beitritt (Testkonto).
- Offen: Handy-Anruftest; danach Secret-Rotation durch Bernd (Doku).
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]>
_ReplyPreview nutzt den Sprung-Mechanismus der Suche (pendingJumpEventProvider).
Der Sprung scrollt jetzt schrittweise Richtung aeltere Nachrichten, wenn das
Ziel zwar geladen, aber in der lazy ListView noch nicht gezeichnet ist (vorher
gab er dann nach 40 Versuchen auf); dasselbe Zitat darf erneut angetippt
werden. UI-Durchlauf prueft den Sprung per Screenshot.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bernds Feedback 2026-10-07:
- Schrift-Standard Handy 110 % (statt 115 %).
- PyrIconBtn: im Handy-Layout Symbol 22 px (vorher fest 16), Flaeche 40,
Tippflaeche 44; Farben aus dem Farbmodus statt fest verdrahtet.
- Eingabeleiste: Anhaengen/GIF/Emoji/Senden auf dem Handy 22-23 px statt
12-13 px.
- Chat-Kopf (Handy): Anrufen + Videoanruf sichtbar, Suchen + Mitglieder im
Drei-Punkte-Menue.
- Aufklappbarer DM-Kopf als Ebenen: Zurueck + Symbole bleiben oben,
Profilbereich gleitet darunter und nutzt die volle Breite (vorher Name zu
"p..." gekuerzt, Symbole rutschten in die Mitte); Kuerzel im Avatar
mittig, skaliert mit.
- SpringPress (widgets/spring_press.dart): federnde Druck-Rueckmeldung,
aus bei "Animationen 0 %".
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Bernds Entscheidungen 2026-10-07:
- theme.dart: ThemeVariant (Dunkel = neues weiches Dunkelgrau als Standard,
Schwarz = bisheriges Fast-Schwarz, Hell) mit PyramidPalette; Nebentexte
kontrastreicher. Alte Einstellung theme_dark wird uebernommen
(dunkel -> weiches Dunkel). Fest verdrahtete Dunkelfarben im Profil-Popup
und GIF-Picker folgen jetzt dem Farbmodus.
- appearance.dart: Schriftgroesse = Pyramid-Regler x Systemeinstellung
(Handy-Standard 115 %, PC 100 %), MessageStyle Automatisch/Sprechblasen/
Liste, gemeinsame isMobileLayout-Regel.
- message_bubbles.dart: Sprechblasen-Darstellung (eigene rechts in
Akzentfarbe, Gruppen mit Name + Avatar, Bilder ohne Blase in voller Groesse);
Listen-Darstellung unveraendert, Weiche in MessageGroup.
- Formatierte Nachrichten (u. a. Antworten) nutzten RichText ohne
Schriftskalierung -> erschienen kleiner; jetzt Text.rich.
- Einstellungen auf dem Handy als ganze Seite, Schalter unter dem Text.
- UI-Durchlauf um Liste/Hell/Gruppe/Einstellungen erweitert; Tests fuer
Theme-Varianten, Uebernahme alter Werte, Schriftfaktor, Darstellung.
Co-Authored-By: Claude Opus 5.5 <[email protected]>