feat: Call-Robustheit + Standalone-Voice-Channel per Klick beitretbar (M3)
Mit zwei echten Test-Accounts (zwei GUI-Instanzen via PYRAMID_PROFILE_DIR) durchgeklickt: Beitreten, Teilnehmerliste, bidirektionaler Screenshare, Live-Qualitaetswechsel (Full HD 60fps), sauberes Verlassen. - rooms_list.dart: Voice-Channel in der normalen Raumliste war per Klick nicht beitretbar (oeffnete nur Chat) -> _toggleVoiceChannel wie Space-Liste. - livekit_call_manager.dart: _callGeneration entwertet laufenden connect bei Auflegen/Wechsel (keine Geisterverbindung mit offenem Mikro); Fehlerpfade setzen error sichtbar statt still zu verschwinden. - rooms_panel_core.dart: raeumt activeVoiceRoomIdProvider auf, wenn der Voice-Service inaktiv wird, + Fehler-SnackBar. - test/live_call_setup_test.dart: gegateter Setup-Helfer fuer den Testraum. UNGETESTET: echtes 2-Peer-Audio, Netz-Abbruch mitten im Call. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+76
@@ -13,6 +13,82 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-06 – Nacht-Session (C+B): 60-FPS-Streaming + Call mit ZWEI echten Test-Accounts real durchgeklickt
|
||||
|
||||
**Erledigt:** Fokus (C) Streaming und (B) Calls – beides mit zwei echten
|
||||
Test-Logins (pyramidtest1 GUI-Fenster links, pyramidtest2 rechts, zwei
|
||||
getrennte Profile über `PYRAMID_PROFILE_DIR`) am laufenden Windows-Build
|
||||
verifiziert, nicht nur analysiert.
|
||||
|
||||
**(C) 60-FPS-Streaming (`docs/STREAMING_60FPS.md`, Commit ffd70ca):**
|
||||
- Neue Presets `hd60` (720p·60, 5 Mbit/s) und `fhd60` (1080p·60, 8 Mbit/s)
|
||||
in `qualityPresets` + `screenShareEncodings`; im SENDEN-Menü als
|
||||
„HD 60fps"/„Full HD 60fps" ergänzt. Preset-Auflösung UND -FPS werden
|
||||
jetzt bis in `ScreenShareCaptureOptions.params` durchgereicht (vorher
|
||||
blieb der LiveKit-Default 1080p/15 aktiv, egal welches Preset). 60-FPS-
|
||||
Modi publishen ohne Simulcast mit
|
||||
`DegradationPreference.maintainFramerate` (unter Last Auflösung statt
|
||||
Frames opfern). `contentHint='motion'` ist in flutter_webrtc 1.4.1 aus
|
||||
Dart NICHT setzbar (Pub-Cache geprüft) – im Code ehrlich dokumentiert.
|
||||
4 Vertragstests für die Preset-Tabellen (grün).
|
||||
- **Real getestet:** pyramidtest1 teilt Bildschirm → pyramidtest2 sieht den
|
||||
Stream (und umgekehrt, beide Richtungen). Über das SENDEN-Menü live auf
|
||||
„Full HD 60fps" umgeschaltet: Screenshare-Track wird mit dem neuen
|
||||
Encoding neu published, kein Absturz, Empfänger bekommt weiter Bild.
|
||||
- **UNGETESTET (ehrlich):** subjektives „flüssiges 60-FPS-Gefühl" –
|
||||
Sender und Empfänger liefen auf DEMSELBEN PC (Selbst-Streaming =
|
||||
Hall-of-Mirrors), das taugt nicht zur Ruckel-Beurteilung. Ob
|
||||
`sender.parameters.encodings` real `maxFramerate==60` trägt, ist nur am
|
||||
Preset-Vertrag belegt, nicht am Live-RTP-Report. Braucht zwei echte
|
||||
Geräte + Netz.
|
||||
|
||||
**(B) Call-Robustheit (Commit siehe git log):**
|
||||
- **Bug gefunden + gefixt:** Standalone-Voice-Channels (nicht in einem
|
||||
Space, sondern in der normalen Raumliste) waren per Klick GAR NICHT
|
||||
beitretbar – `rooms_list.dart` öffnete für sie nur die Chat-Ansicht.
|
||||
Jetzt tritt ein Klick dem Kanal bei/verlässt ihn (Toggle), exakt wie in
|
||||
der Space-Liste (`_toggleVoiceChannel`). Real verifiziert: beide
|
||||
Test-User beigetreten, Teilnehmerliste zeigt beide, Zähler „2".
|
||||
- **Zustands-Härtung `livekit_call_manager.dart`:** (1) `_callGeneration`
|
||||
entwertet einen noch laufenden `connect`, wenn zwischendurch aufgelegt/
|
||||
gewechselt wird – vorher konnte eine Geisterverbindung mit offenem Mikro
|
||||
im alten Kanal zurückbleiben, während die UI „nicht verbunden" zeigte.
|
||||
(2) Fehlerpfade setzen `error` sichtbar (unerwarteter
|
||||
`RoomDisconnectedEvent` mit Grund, fehlgeschlagener Beitritt) statt
|
||||
still aus dem Kanal zu verschwinden – CLAUDE.md „keine stillen
|
||||
Fehlerpfade". (3) `rooms_panel_core.dart` hört auf den Voice-Service und
|
||||
räumt `activeVoiceRoomIdProvider` auf, sobald der Service inaktiv wird
|
||||
(Kanal-Highlight/eigener Teilnehmer-Eintrag blieben sonst hängen),
|
||||
und zeigt den Fehler als SnackBar.
|
||||
- **Real getestet:** Beitreten (beide), Teilnehmerliste, Screenshare
|
||||
bidirektional, Qualitätswechsel live, sauberes Verlassen (pyramidtest1
|
||||
legt auf → bei test1 Voice-Widget weg + Kanal nicht mehr aktiv, bei
|
||||
test2 Teilnehmerzähler auf 1, test1-Stream verschwunden).
|
||||
- **Setup-Helfer `test/live_call_setup_test.dart`** (gegated wie die
|
||||
Encryption-Tests): legt den Voice-Testraum an und bringt beide Test-User
|
||||
rein, damit die zwei GUI-Instanzen sofort joinen können.
|
||||
- **UNGETESTET (ehrlich):** echtes 2-Peer-AUDIO (beide auf einem PC =
|
||||
Rückkopplung, nicht sinnvoll prüfbar). VerbindungsABBRUCH mitten im Call
|
||||
(Netz weg → `RoomDisconnectedEvent`-Pfad mit meiner Fehlermeldung) nur
|
||||
im Code abgesichert, nicht live simuliert – braucht kontrollierten
|
||||
Netzausfall. M3-Punkt „Voice-Channel-Logik robust" daher nur annotiert,
|
||||
nicht abgehakt.
|
||||
|
||||
**Offen/Nächster Schritt:** auth_log-Check des Beobachtungslaufs (Bernds
|
||||
echtes Profil neu gestartet 22:49:22 `loggedIn`, keine Re-Migration) –
|
||||
Einträge seit 2026-07-06 22:49 prüfen. Für Bernd: 60-FPS-Streaming auf zwei
|
||||
ECHTEN Geräten übers Netz gegentesten (Ruckeln?), echtes 2-Peer-Audio.
|
||||
|
||||
**Stolperfallen:** (1) `PYRAMID_PROFILE_DIR` leitet DB/Media um, aber NICHT
|
||||
flutter_secure_storage – zwei Profile teilen sich denselben
|
||||
`db_cipher_key`. Für reine Login-Tests unkritisch (Schlüssel wird nur
|
||||
gelesen). (2) Der SENDEN-Qualitäts-Zahnrad taucht erst beim Hovern über den
|
||||
Hero-Videobereich auf (Bottom-Bar slidet ein). (3) Eine per
|
||||
`flutter build` neu gebaute exe lässt sich nicht überschreiben, solange die
|
||||
Beobachtungs-exe läuft – vorher beenden.
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-06 – Nacht-Session (A): SQLCipher mit ECHTEM Login live verifiziert (Test-Account, 2 neue E2E-Tests grün)
|
||||
|
||||
**Erledigt:** Bernds Fokus (A) für die Nacht – die Verschlüsselung nicht nur
|
||||
|
||||
Reference in New Issue
Block a user