From 460477204b4f5ee7b19a3195b3d88df90ee022e0 Mon Sep 17 00:00:00 2001 From: Bernd Steckmeister Date: Wed, 7 Oct 2026 12:32:36 +0200 Subject: [PATCH] docs: Bernds Beta-Feedback analysiert - Ursachen (Push, Statusleiste, Vollansicht) + Plan + UI-Entscheidungen Co-Authored-By: Claude Opus 5.5 --- PROGRESS.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/PROGRESS.md b/PROGRESS.md index 3e1d051..18088c5 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,6 +13,70 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format: --- +## 2026-10-07 (Teil 2) – Bernds Beta-Feedback analysiert, Plan steht (NOCH KEIN CODE) + +**Bernds Feedback (Beta v0.1.36, Android):** Push kommt an, aber (a) beim +Aufklappen viel weniger Text als bei Element/WhatsApp, (b) immer nur EINE +Nachricht statt mehrerer, (c) keine Bildvorschau. Handy-UI gefällt nicht: +dunkle Farbe, Schrift zu klein, oben kein Platz (Statusleiste überlagert +Text), Bild-/Video-Vollansicht unnötig klein (durchsichtiger Rahmen), lässt +sich nicht durch Tippen ins Leere schließen. Wunsch: genereller UI-Overhaul; +danach Liste weiter, Fokus Stabilität + Flexibilität. Härtetest (PC_TESTPLAN 1) +und Call-Tests (3) kann er noch nicht machen. + +**Bernds Entscheidungen (AskUserQuestion, 2026-10-07):** Farben = „Weiches +Dunkel“ (Dunkelgrau statt #0A0A0C, Hell bleibt Option); Nachrichten- +Darstellung = UMSCHALTBAR (Sprechblasen / Liste, Einstellung); Schrift = +größerer Standard (≈16 statt 14 px) + Regler unter Erscheinungsbild, System- +Schriftgröße weiter beachten. + +**Ursachen (im Code verifiziert):** +- Push (b): `NotificationHelper.show` nutzt EINE notifId pro Raum + (`stableId(roomId)`) und ersetzt die alte Benachrichtigung komplett. +- Push (a): kein Style (nur `setContentText`) UND Dart kürzt hart auf 100 + Zeichen (`_buildBody` in background_push.dart, `_watchEvents` + + `_decryptAndUpdateNotification` in notification_service.dart). +- Push (c): kein Bild-Pfad vorhanden. +- Statusleiste: `main.dart` setzt `SystemUiMode.immersiveSticky`, und + `_MobileShell` (app_shell.dart) hat kein SafeArea → Leiste liegt über + Kopfzeile (auch auf April-Screenshots sichtbar). +- Vollansicht: `media_viewer.dart` Inhalt = Bildschirm minus 24 px, + Barriere 70 % transparent; leere Fläche neben dem Bild gehört zum + GestureDetector (`_toggle`) → Tippen blendet nur Knöpfe aus. +- Zusatzbefunde: Knopf „Gelesen“ schließt nur, sendet KEINE Lesebestätigung; + `_decryptAndUpdateNotification` nimmt `room.lastEvent` statt des gepushten + Events; Access-Token liegt für PushService.kt im Klartext in + FlutterSharedPreferences (`notif_access_token`) – Sicherheitsnotiz. + +**Plan / nächster konkreter Handgriff (je ein Commit):** +1. Push: Dart-Modul für Benachrichtigungs-Inhalt (Text ohne 100er-Kürzung, + Antwort-Zitat entfernt via `calcUnlocalizedBody(hideReply: true)`, + Medien-Labels, `notif_preview` auch im Hintergrund beachten) + Tests; + native `NotificationHelper` auf `MessagingStyle` (Verlauf pro Raum in + SharedPreferences, nur fortführen solange Benachrichtigung aktiv ist; + Ersetzen per eventId statt Anhängen beim Platzhalter→Klartext; neue + Nachricht = Alarm, Update = still); Bild: Dart lädt Thumbnail + (`downloadAndDecryptAttachment(getThumbnail: true)`) nach + `cacheDir/downloads/notif/`, native per FileProvider (`.fileprovider`, + Pfad `downloads/` existiert) + `grantUriPermission("com.android.systemui")`; + „Gelesen“ → echte Lesebestätigung (Haupt-Engine bzw. BgEngine `markRead`). + Test: Debug-only Receiver zum Auslösen auf dem Emulator (kein Login nötig), + dann Bernd auf echtem Gerät. +2. Handy: `edgeToEdge` statt immersiveSticky + SafeArea im MobileShell; + Vollansicht randlos/deckend schwarz, Tippen außerhalb des Bildes schließt, + Wischen nach unten schließt, Doppeltipp-Zoom. +3. UI-Overhaul nach Bernds Entscheidungen (Palette in theme.dart, globaler + TextScaler × Nutzer-Regler, Sprechblasen-Variante in chat/message/). +4. Danach ROADMAP-Liste (SDK-Logout-Wettlauf, Abhängigkeiten, …). + +**Stolperfallen:** Android-Toolchain + Emulator `Medium_Phone_API_36.1` +laufen auf diesem PC (flutter doctor sauber). In die App auf dem Emulator +KEINE Zugangsdaten eintippen (echter Server) – UI im eingeloggten Zustand +per Windows-Build mit `PYRAMID_PROFILE_DIR=…\.pyramid-autopilot\profile1` +und schmalem Fenster (<900 px = Handy-Layout) prüfen. + +--- + ## 2026-10-07 – Wiederaufnahme nach Pause: Bestandsaufnahme, Test-Runner, Benchmarks, Live-Test stabilisiert **Erledigt:**