From a30d57ba699e451e72a232bf8ed335e91be59ae8 Mon Sep 17 00:00:00 2001 From: Bernd Steckmeister Date: Wed, 7 Oct 2026 22:15:00 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20PROGRESS/ROADMAP=20=E2=80=93=20Runde=20?= =?UTF-8?q?4=20(UI,=20Animationen,=20Lesebest=C3=A4tigung,=20LiveKit,=20Ma?= =?UTF-8?q?rkdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- PROGRESS.md | 42 ++++++++++++++++++++++++++++++++++++++++++ ROADMAP.md | 22 ++++++++++++++-------- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index 4948b06..da143b0 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,6 +13,48 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format: --- +## 2026-10-07 (Teil 4) – Handy-UI-Feinschliff, Animationen, Lesebestätigung, LiveKit ohne Secret → Test-Version 0.1.38 + +**Erledigt (je ein Commit, alles gepusht):** +- **Handy-UI** (382747c): größere Symbole (Anruf, Video, Anhang, GIF, Emoji), + Suche/Mitglieder im ⋮-Menü, aufgeklapptes Kontakt-Banner (Kürzel mittig, + Symbole bleiben an ihrem Platz), Schrift-Standard 110 %, federnde Knöpfe. +- **Antwort-Zitat antippen** springt zur Nachricht (7063ebf). +- **Schwebende Eingabeleiste** (223c944): Chat läuft darunter weiter, + Milchglas nur im Eingabefeld, Fläche fängt Berührungen ab. +- **Lesebestätigung** (1d0ccfd): nur bei Fokus/Vordergrund, je Event einmal + (vorher bei jedem Neuaufbau, auch im Hintergrund – die gerade gezeigte + Benachrichtigung verschwand sofort); „Neue Nachrichten“-Trenner nach + Rückkehr in die App; „Lesebestätigungen senden“ aus = private Bestätigung + statt gar keiner (Ungelesen-Zähler stimmen). Haken-Logik geprüft: Uhr = + wird gesendet, ✓ = beim Server, goldenes ✓✓ = gelesen. Matrix kennt kein + „auf dem Gerät angekommen“ – daher keine zweistufigen grauen Haken. +- **Animationen** (ae6f651): Chat gleitet auf dem Handy federnd über die + Liste (Liste bleibt aufgebaut), neue Nachrichten/Reaktionen ploppen auf, + Zähler hüpfen, Scroll-Knopf/Antwort-Leiste/Senden-Pfeil federn, Vollansicht + zoomt auf; alles mit Einstellung „Animationen“ skaliert. Fix dabei: beim + Raumwechsel blieben Antwort-Ziel und getippter Text am neuen Raum hängen – + jetzt Entwurf je Raum. +- **LiveKit-Secret aus der App** (756486d): Token kommt von + `/api/livekit-token`; echter Beitritt mit Testkonto grün. +- **flutter_markdown_plus** statt eingestelltem flutter_markdown (0ad06e3). +- **Version 0.1.38+39** (df377d7). + +**Offen/Nächster Schritt:** Bernd testet 0.1.38 auf dem Handy (Push, neue +Animationen, schwebende Leiste, Anruf/Sprachkanal wegen LiveKit-Umbau). +Danach: LiveKit-Secret rotieren (Bernd, wenn alle Geräte aktualisiert), +SQLCipher-Nachfolger (sqlite3 3.x), matrix-SDK-Sprung. + +**Stolperfallen:** (1) Wischen-zum-Antworten gibt es nur auf echten Handys +(Platform-Check) – im Windows-UI-Test über Lange-Drücken → Antworten, und +NEBEN die Sprechblase drücken (im Text greift am PC die Textauswahl und +der Test bricht undurchsichtig ab). (2) `Matrix4.getMaxScaleOnAxis` liefert +bei 2D-Skalierung < 1 immer 1 (z-Achse) – `storage[0]` lesen. +(3) LiveKit protokolliert auf dem Pi nur Warnungen – Beitritte sind dort +nicht sichtbar; Nachweis über die Identität aus der Beitrittsantwort. + +--- + ## 2026-10-07 (Teil 3) – Beta-Feedback umgesetzt: Push-Verlauf, Handy-UI, neues Aussehen → Test-Version 0.1.37 **Erledigt (je ein Commit, alles gepusht):** diff --git a/ROADMAP.md b/ROADMAP.md index def0a6f..db72fa8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -129,9 +129,11 @@ Punkte abhaken (`[x]`), wenn erledigt UND in `PROGRESS.md` protokolliert. PROGRESS.md 2026-07-04). `POST /api/livekit-token` läuft live in `server.py` (whoami-Auth, stdlib-HS256-Minting aus `livekit.yaml`), headless geprüft (401/400/413/200, JWT-Signatur unabhängig gegen `livekit.yaml` gültig, Identität = - geprüfte user_id). **Offen:** Client-Umstellung (`livekit_token.dart`/ - `livekit_call_manager.dart`) + Secret-Rotation – beides PC/Gerät (heiliger - Call-Pfad), siehe `docs/LIVEKIT_TOKEN_MIGRATION.md`. + geprüfte user_id). **Client umgestellt 2026-10-07 (756486d):** kein Secret + mehr in der App, echter LiveKit-Beitritt mit Testkonto grün + (`integration_test/livekit_token_connect_test.dart`). **Offen:** Anruftest + auf dem Handy, danach Secret-Rotation durch Bernd (erst wenn alle Geräte die + neue Version haben), siehe `docs/LIVEKIT_TOKEN_MIGRATION.md`. - [ ] **SICHERHEIT: geleakte Secrets rotieren + aus dem Client holen** (Fable-5-Review (k), PROGRESS.md 2026-07-04). Das Gitea-Repo ist öffentlich (`private:false`), und es lagen vier aktive Secrets drin – teils schon bereinigt (release.ps1, Admin-Doku), aber: @@ -140,6 +142,7 @@ Punkte abhaken (`[x]`), wenn erledigt UND in `PROGRESS.md` protokolliert. `apiSecret`, Giphy-Key. Alte jeweils widerrufen. - **LiveKit-Token server-seitig minten:** kleiner Token-Endpoint auf dem Pi, damit `apiSecret` aus `lib/core/livekit_token.dart` verschwindet (App holt nur das JWT). + **Client-Teil ERLEDIGT 2026-10-07** (Secret aus dem Code; Rotation steht noch aus). **Umsetzungsplan liegt fertig in `docs/LIVEKIT_TOKEN_MIGRATION.md`** (2026-07-04, gegen Code + Pi-Konfig geschrieben) – braucht echten Call-Test auf einem Gerät. - **E2EE-Diagnose-Upload: ERLEDIGT (2026-07-04).** Der Dashboard-Server auf dem Pi @@ -303,11 +306,14 @@ lassen, ohne dass andere Module angefasst werden müssen. (libwebrtc #142) ist auch in 1.6.2+hotfix.4 NICHT enthalten (Changelog geprüft 2026-10-07) → Dummy-PeerConnection-Workaround bleibt nötig. - - Android-Build: Gradle 8.13 → 8.14.3 ERLEDIGT (2026-10-07). Offen: Umstieg auf - „Built-in Kotlin“ (Flutter kündigt Build-Fehler für das Kotlin-Plugin an; - betrifft auch Plugins wie flutter_webrtc/livekit_client). - - `flutter_markdown` ist eingestellt (pub: „replaced by - flutter_markdown_plus“) → umstellen (Markdown-Vorschau im Dokument-Viewer). + - Android-Build: Gradle 8.13 → 8.14.3 ERLEDIGT (2026-10-07). „Built-in Kotlin“ + **bewusst noch nicht** (Entscheidung 2026-10-07): AGP bleibt 8.11; die vom + Flutter-Migrator gesetzten Flags `android.builtInKotlin=false` / + `android.newDsl=false` halten den Build stabil. Umstieg erst zusammen mit + AGP 9 und wenn flutter_webrtc, livekit_client, media_kit & Co. ihn + unterstützen – vorher Release-APK + Anruftest. + - ERLEDIGT 2026-10-07 (0ad06e3): `flutter_markdown` → `flutter_markdown_plus` + (Rendertest `test/document_markdown_test.dart`). ## M3 – Calls: Logik, UI & Audio (Discord als Referenz)