Bernd Steckmeister 9dc83f7bcb fix: Refresh-Token beim Login anfordern (Uta-Random-Logout, M1)
Ursache gefunden: Ohne Refresh-Token eskaliert das matrix-SDK jeden
Soft-Logout (z. B. abgelaufenes Access-Token, M_UNKNOWN_TOKEN mit
soft_logout=true) automatisch zu einem echten, destruktiven Logout —
_handleSoftLogout() versucht refreshAccessToken(), das ohne
gespeicherten Refresh-Token sofort mit "No refresh token available"
scheitert, und ruft danach client.logout() auf (client.dart:2374-2384
im matrix-Paket, Version 6.2.0).

Mit refreshToken: true beim Login bekommt der Client vom Server einen
Refresh-Token und kann einen Soft-Logout künftig durch stillen
Token-Refresh überstehen, statt die Sitzung zu zerstören. Falls der
Server keine Refresh-Tokens unterstützt, bleibt das Verhalten
unverändert (response.refreshToken ist dann null).

Wichtig: gilt nur für neue Logins. Bereits eingeloggte Geräte (z. B.
Uta) profitieren erst nach einmaligem Neu-Login. Zur Diagnose siehe
den mit 63e4919 eingeführten AuthLog.

UNGETESTET (Pi, kein GUI/Login hier möglich) – nächster PC-Lauf muss
den vollen Kreislauf prüfen: Login → Nachrichten → Logout → erneuter
Login → alte verschlüsselte Nachrichten noch lesbar?
2026-07-03 09:51:40 +02:00

Pyramid

Pyramid ist ein eigenständiger Matrix-Client (Flutter), kein Fork von FluffyChat oder Element. Er läuft gegen den selbst gehosteten Homeserver steggi-matrix.work (Continuwuity) und ist bei echten Nutzern im Einsatz Stabilität und Datensicherheit haben Vorrang vor Feature-Tempo.

Funktionsumfang

  • Matrix-Chat mit Timeline, Reply, Medien, Link-Vorschauen, lokaler Volltextsuche über entschlüsselte Nachrichten (server-seitige Suche funktioniert bei E2EE nicht)
  • Ende-zu-Ende-Verschlüsselung (vodozemac/Olm/Megolm) inkl. Key-Backup
  • Sprach-/Video-Calls und Bildschirmübertragung über LiveKit (wss://livekit.steggi-matrix.work)
  • Push-Benachrichtigungen mit clientseitiger Entschlüsselung auch bei gekillter App (FCM + Sygnal, siehe docs/NOTIFICATIONS.md)
  • Größenverstellbares Panel-Layout (Rooms/Chat/Members) statt starrer Tabs

Build

Voraussetzung: Flutter (stable channel, siehe environment.sdk in pubspec.yaml für die unterstützte Dart-Version).

flutter pub get
flutter run -d windows   # schnellster Praxistest während der Entwicklung
flutter analyze          # muss sauber bleiben

Unterstützte Zielplattformen: Android, Windows, Linux, iOS, macOS (Ordner android/, windows/, linux/, ios/, macos/ sind Standard-Flutter-Projekte). Release-Build (signiert, Windows + Android): scripts/release.ps1.

Projektstruktur

lib/
  core/        Matrix-Client, Auth, VoIP-Manager, Storage, App-State
  features/
    auth/      Login, Server-Auswahl
    rooms/     Raumliste, Spaces
    chat/      Timeline, Composer, Medien, Dokumentenvorschau
    call/      LiveKit-Calls, Voice-Channel, Mini-Call-Widget
    members/   Mitgliederliste/-panel
    settings/  Einstellungen
  layout/      Panel-Layout (resizable)
  widgets/     geteilte UI-Bausteine
  utils/       Hilfsfunktionen

Weiterführende Dokumentation

  • CLAUDE.md Arbeitsregeln und Infrastruktur für die Zusammenarbeit mit Claude
  • ROADMAP.md / PROGRESS.md aktueller Stand und nächste Schritte
  • docs/NOTIFICATIONS.md Push-Architektur (native Anzeige vs. Hintergrund-Entschlüsselung)
  • docs/matrix-sdk/ Hinweise zum verwendeten Matrix-SDK
S
Description
Pyramid – Flutter Matrix Client
Readme 6.9 MiB
2026-04-28 21:54:27 +02:00
Languages
Dart 83.4%
JavaScript 6.2%
CSS 3.6%
Kotlin 2.2%
C++ 1.9%
Other 2.6%