docs: PROGRESS/ROADMAP – Runde 4 (UI, Animationen, Lesebestätigung, LiveKit, Markdown)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
df377d7c4b
commit
a30d57ba69
+42
@@ -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
|
## 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):**
|
**Erledigt (je ein Commit, alles gepusht):**
|
||||||
|
|||||||
+14
-8
@@ -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`
|
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
|
(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 =
|
(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`/
|
geprüfte user_id). **Client umgestellt 2026-10-07 (756486d):** kein Secret
|
||||||
`livekit_call_manager.dart`) + Secret-Rotation – beides PC/Gerät (heiliger
|
mehr in der App, echter LiveKit-Beitritt mit Testkonto grün
|
||||||
Call-Pfad), siehe `docs/LIVEKIT_TOKEN_MIGRATION.md`.
|
(`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),
|
- [ ] **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
|
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:
|
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.
|
`apiSecret`, Giphy-Key. Alte jeweils widerrufen.
|
||||||
- **LiveKit-Token server-seitig minten:** kleiner Token-Endpoint auf dem Pi, damit
|
- **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).
|
`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,
|
**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.
|
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
|
- **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
|
(libwebrtc #142) ist auch in 1.6.2+hotfix.4 NICHT enthalten
|
||||||
(Changelog geprüft 2026-10-07) → Dummy-PeerConnection-Workaround
|
(Changelog geprüft 2026-10-07) → Dummy-PeerConnection-Workaround
|
||||||
bleibt nötig.
|
bleibt nötig.
|
||||||
- Android-Build: Gradle 8.13 → 8.14.3 ERLEDIGT (2026-10-07). Offen: Umstieg auf
|
- Android-Build: Gradle 8.13 → 8.14.3 ERLEDIGT (2026-10-07). „Built-in Kotlin“
|
||||||
„Built-in Kotlin“ (Flutter kündigt Build-Fehler für das Kotlin-Plugin an;
|
**bewusst noch nicht** (Entscheidung 2026-10-07): AGP bleibt 8.11; die vom
|
||||||
betrifft auch Plugins wie flutter_webrtc/livekit_client).
|
Flutter-Migrator gesetzten Flags `android.builtInKotlin=false` /
|
||||||
- `flutter_markdown` ist eingestellt (pub: „replaced by
|
`android.newDsl=false` halten den Build stabil. Umstieg erst zusammen mit
|
||||||
flutter_markdown_plus“) → umstellen (Markdown-Vorschau im Dokument-Viewer).
|
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)
|
## M3 – Calls: Logik, UI & Audio (Discord als Referenz)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user