Commit Graph

116 Commits

Author SHA1 Message Date
Bernd Steckmeister b2413ef627 chore: Version 0.1.36+37 (Beta-Release) v0.1.36 2026-07-07 06:22:30 +02:00
Bernd Steckmeister a4f9fd70e6 chore: Anzeigename gross geschrieben -> 'Pyramid' (Launcher-Label, Fenstertitel, Windows-Produktname); Paket-ID/Binaername unveraendert 2026-07-07 06:22:29 +02:00
Bernd Steckmeister bf552ee194 feat: Windows-Audiogeraete-Erkennung reparieren - Dummy-PeerConnection weckt das Audio-Device-Modul (M3) 2026-07-07 06:22:28 +02:00
Bernd Steckmeister e0179ad907 chore: auth_log-Check 23:12-03:06 - Mehr-Stunden-Fenster erfuellt, Langzeit-Punkt abgehakt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 03:07:40 +02:00
Bernd Steckmeister 8b36d16cdd chore: auth_log-Check 18:29-22:49 + 22:49-23:12 im PC_TESTPLAN dokumentiert
Dritter Netzausfall (18:41-18:46, ~4,5 min) selbst erholt ohne Logout;
8. Start mit verschluesselter DB sauber, Beobachtung laeuft weiter.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 23:13:40 +02:00
Bernd Steckmeister f8f5332d90 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>
2026-07-06 22:50:58 +02:00
Bernd Steckmeister ffd70caffd feat: 60-FPS-Streaming-Presets (hd60/fhd60) fuer Bildschirm-Streams (M4)
Nach docs/STREAMING_60FPS.md: neue Presets 720p/1080p mit 60 FPS und
hoher Bitrate (5/8 Mbit/s), Preset-Aufloesung+FPS werden jetzt bis in
die Capture-Constraints durchgereicht (vorher blieb der LiveKit-Default
1080p/15 aktiv), 60-FPS-Presets publishen ohne Simulcast mit
DegradationPreference.maintainFramerate (unter Last Aufloesung statt
Frames opfern). contentHint 'motion' ist in flutter_webrtc 1.4.1 aus
Dart nicht setzbar (geprueft) - im Code dokumentiert.
4 neue Vertragstests fuer die Preset-Tabellen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:19:25 +02:00
Bernd Steckmeister 9f797279eb test: Live-E2E-Verifikation SQLCipher mit echtem Login (Test-Account)
Neuer gegateter Test (PYRAMID_LIVE_TEST=1, Windows): echter Login als
pyramidtest1, Byte-Pruefung der Platte (kein SQLite-Header, Token +
Nachricht nicht im Klartext, Positiv-Kontrolle in Klartext-DB),
Neustart aus verschluesselter DB, Logout/Re-Login, Migration einer
Klartext-DB mit echter eingeloggter Session. Zugangsdaten bleiben
ausserhalb des Repos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:11:48 +02:00
Bernd Steckmeister dba4b64df8 feat: PYRAMID_PROFILE_DIR-Override fuer Desktop-Testprofile (app_dirs.dart)
DB, auth_log und Media-Cache laufen jetzt ueber appSupportDir(); nur auf
Desktop und nur wenn PYRAMID_PROFILE_DIR gesetzt ist, landet alles in einem
eigenen Profilverzeichnis - fuer Autopilot-Testlogins parallel zur echten
Session. Ohne Variable exakt das bisherige Verhalten. secure_storage/
shared_preferences bewusst nicht umgeleitet (Begruendung im Dateikopf).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 18:55:30 +02:00
Bernd Steckmeister fdc16afa70 docs: Streaming-60fps-Task fuer Autopilot (M4) - hohe Aufloesung + 60 FPS, Ist-Analyse + Umsetzungsschritte 2026-07-06 18:51:59 +02:00
Bernd Steckmeister 9950e1eb29 chore: CHANGES-Hook-Log nachgezogen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 18:29:49 +02:00
Bernd Steckmeister 17b3798dc0 docs: zweiter Netz-Blip 18:25 ebenfalls ohne Logout ueberstanden; Frage an Bernd (Test-Account fuer Emulator-Tests) notiert
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 18:29:36 +02:00
Bernd Steckmeister f2b9afbfea test: SQLCipher auf Android-Emulator verifiziert (Neuanlage verschluesselt, Klartext-Migration, Neustart ohne Re-Migration)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 18:28:25 +02:00
Bernd Steckmeister 9693174de9 docs: auth_log-Check 17:43-Fenster - echter 7-min-Netzausfall ohne Logout ueberstanden, Sync selbst erholt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 18:20:24 +02:00
Bernd Steckmeister bca7abb206 docs: Session-Abschluss protokolliert (Analyse-Korrektur, VoicePrefs-Tests, 32 Tests im Testplan, Beobachtung laeuft seit 17:43)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:55:03 +02:00
Bernd Steckmeister 3698048b26 test: VoicePrefs-Fassade abgesichert - historische Keys, null/leer-Loeschen, Fallback 1.0 (3 neue Tests, gesamt 32)
Nagelt den dokumentierten Vertrag der M2-Fassade (d22f9c2) fest, damit
bestehende Nutzer-Einstellungen (Utas Geraet) bei weiteren Umbauten der
Call-Schicht nachweislich erhalten bleiben.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:54:06 +02:00
Bernd Steckmeister 3300a44c4a docs: State-Management-Doc korrigiert - MediaCache-Umstellung ist NICHT risikoarm (Chat-Timeline haengt dran), zurueckgestellt
Der erste Befund beruhte auf einem durch head-limit abgeschnittenen grep;
message_media.dart (am wenigsten geprueft laut PC_TESTPLAN 3) nutzt den
Cache ebenfalls, inkl. statischem Wrapper ohne ref-Zugang.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:52:09 +02:00
Bernd Steckmeister 6b0ae21f2b docs: State-Management-Ist-Analyse + Umbauplan (M2), ROADMAP-Punkt annotiert
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:50:05 +02:00
Bernd Steckmeister 41bcaf2a88 chore: toten incomingCallProvider aus app_state.dart entfernt (seit M2-Call-Pilot unreferenziert)
Repo-weit verifiziert: einzige Fundstelle war die Definition selbst -
der Pilot hat die Call-Provider ersatzlos in die Module verlegt
(callSignalingProvider/voiceChannelProvider), dieser StateProvider
blieb ungenutzt zurueck. analyze sauber, 29 Tests gruen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:48:16 +02:00
Bernd Steckmeister 52b0ae975a docs: settings_encryption-Split + auth_log-Check 17:14-Fenster protokolliert, Beobachtung auf 17:43 umgestellt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:45:36 +02:00
Bernd Steckmeister 6128953e28 refactor: settings_encryption.dart (1470 Zeilen) in 4 thematische part-Dateien unter encryption/ geteilt (M2, zeichenidentisch verifiziert)
Vorbereitung fuer Schnitt-Doc Schritt 3 (verification-Modul), ohne den
Verschluesselungs-heiligen Code anzufassen: megolm_crypto (Export/Import-
Krypto-Helfer), encryption_section (Enums + _EncryptionSection),
recovery_key_dialogs (_ChangeRecoveryKeyDialog/_ShowKeyBody/_ConfirmKeyBody),
fingerprint_passphrase (_FingerprintGroup/_PassphraseDialog).
Rekonstruktion zeichenidentisch (1468 Code-Zeilen, ordinaler Vergleich),
analyze sauber, 29 Tests gruen, App-Start ok (auth_log 17:43:14 loggedIn).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 17:43:53 +02:00
Bernd Steckmeister c8cc1480a8 docs: PC_TESTPLAN - Beobachtungsfenster auf 17:14 aktualisiert (Neustarts durch Refactoring-Praxistests) 2026-07-06 17:16:20 +02:00
Bernd Steckmeister 643ba662dd docs: voice_channel-Split protokolliert, ROADMAP-Nachtrag (app_shell bleibt bewusst ungeteilt) 2026-07-06 17:15:46 +02:00
Bernd Steckmeister 95d9b07dbd refactor: call_ui/voice_channel.dart (1123 Zeilen) in 5 thematische part-Dateien unter view/ geteilt (M2, zeichenidentisch verifiziert) 2026-07-06 17:15:12 +02:00
Bernd Steckmeister b131f56b72 docs: M2-Teilschritte call_ui-Modul + VoicePrefs-Fassade protokolliert, ROADMAP/Schnitt-Doc nachgezogen 2026-07-06 17:10:37 +02:00
Bernd Steckmeister d22f9c2961 refactor: voice_*-Prefs hinter VoicePrefs-Fassade in settings_prefs (M2 storage-Leitplanke, gleiche Keys/Semantik) 2026-07-06 17:09:41 +02:00
Bernd Steckmeister b2335da2fb refactor: Call-UI als Modul lib/features/call_ui (M2, Pilot-Schritt vervollstaendigt - reine Umbenennung) 2026-07-06 17:09:40 +02:00
Bernd Steckmeister b84d31ca87 docs: auth_log-Langzeit-Check - 12:43-Lauf endete frueh (kein Logout), Beobachtung 16:57 neu gestartet 2026-07-06 16:59:34 +02:00
Bernd Steckmeister f87db183ea docs: Haertetest-Stand in PC_TESTPLAN/ROADMAP/PROGRESS - automatisierbarer Teil erledigt
- flutter test gruen (29), Session ueber 3 Starts + DB-Migration stabil,
  E2EE-Empfang belegt, auth_log unauffaellig
- Langzeit-Beobachtung laeuft (App entkoppelt gestartet 12:43); Klick-Teile
  (Senden, Logout/Re-Login, Splits 2-8, Voice-Join) fuer Bernd abgegrenzt
2026-07-06 12:45:20 +02:00
Bernd Steckmeister 3c7eb9ddca refactor: M2-Call-Pilot – Module call_signaling + voice_channel mit Fassaden (Entscheidung 2)
- CallSignalingService/callSignalingProvider und VoiceChannelService/
  voiceChannelProvider als einzige oeffentliche Schnittstellen
- voip_manager.dart / livekit_call_manager.dart in ihre Module verschoben,
  Logik unangetastet (nur Klassen-Koepfe, @override, Imports, Provider-Namen)
- Alle Konsumenten entkoppelt; Kompositions-Punkt matrix_client.dart als
  dokumentierte Ausnahme. analyze sauber, 29 Tests gruen, Windows-Start ok.
  Call-Klick-/Geraetetest steht aus (PROGRESS.md)
2026-07-06 12:42:59 +02:00
Bernd Steckmeister f64398d3c6 feat: SQLCipher-Verschluesselung der pyramid.sqlite (M1) via neue Storage-Fassade app_database.dart
- AppDatabase.open()/openForPush() kapseln Factory, Schluessel (Keystore),
  Klartext->SQLCipher-Migration (Backup/Verify/atomarer Tausch) und PRAGMAs
- Android/Windows/Linux verschluesselt, iOS/macOS bewusst Klartext
- 5 neue Tests mit echter SQLCipher-DLL; Windows-Praxistest mit echter DB
  erfolgreich (23 Tabellen verifiziert, E2EE intakt); Android UNGETESTET
2026-07-06 12:31:38 +02:00
Bernd Steckmeister cead62ccb2 fix: Autopilot fest auf nordmann-Konto (Bernd 2026-07-06) – Review (aa): private E-Mail vor Publikation entfernt, *.bak-* gitignored
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 11:58:32 +02:00
Bernd Steckmeister 4d16d49012 docs: Fable-5-Review (z) – (y)-Protokoll geprüft (kein Befund), Ende-Kriterium der Review-Kette geschärft
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:03:56 +02:00
Bernd Steckmeister 725f03abb0 docs: Fable-5-Review (y) – (x)-Hinterlassenschaft geprüft/nachgeholt, kein Pi-bearbeitbarer ROADMAP-Punkt offen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 18:41:20 +02:00
Bernd Steckmeister 15001ae80a docs: Fable-5-Review (x) – Protokoll-Commit der abgebrochenen Vorsession nachgeholt
Der (x)-Eintrag (Review von 66bf54b, kein Befund) lag fertig geschrieben,
aber uncommitted im Arbeitsbaum – die Session wurde vor ihrem
Protokoll-Commit abgebrochen. Inhalt in dieser Session gegengeprüft
(66bf54b-Diff, keine lib/-Änderungen seit 925aafb, A/B-Frage überall
geschlossen) und unverändert übernommen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 18:40:06 +02:00
Bernd Steckmeister 1ef32c0022 chore: CHANGES.md (auto-Hook) 2026-07-05 14:54:38 +02:00
Bernd Steckmeister 66bf54bdff docs: Dashboard bleibt Heimnetz-only (Bernd Nr. 3) – ROADMAP-Punkt geschlossen, Doku nachgezogen, Nr.-4-Vermerk am Secrets-Punkt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 14:53:27 +02:00
Bernd Steckmeister 81ec06398f docs: Fable-5-Review (v)+(w) – PC-Commits 825481e/4477ed9 geprüft, Fix korrekt, 1 Doku-Lücke (Entscheidung 3 nicht nachgezogen)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 14:52:09 +02:00
Bernd Steckmeister 4477ed9101 fix: Hauptkonto-Profil ohne CLAUDE_CONFIG_DIR ansprechen (Config-Pfad-Falle)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CPrAGBxBT6GfPXzeWQ4AXb
2026-07-05 14:47:35 +02:00
Bernd Steckmeister 825481e6fa docs: Bernds Richtungsfragen beantwortet (ANTWORTEN_BERND.md) - SQLCipher vor M2, Call-Pilot zuerst, Dashboard Heimnetz-only, History unangetastet 2026-07-05 07:41:36 +02:00
Bernd Steckmeister db4d001ef1 chore: CHANGES.md (auto-Hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 20:06:53 +02:00
Bernd Steckmeister af7c538e18 docs: Fable-5-Review (u) – (t)-Fix verifiziert, server.py-Review-Kette konvergiert
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:44:55 +02:00
Bernd Steckmeister 4c6efa2a7a chore: CHANGES.md (auto-Hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:22:29 +02:00
Bernd Steckmeister d3e75c36a1 security: server.py Restbefund aus Review (t) – registration-status antwortet generisch statt str(e)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:21:19 +02:00
Bernd Steckmeister 326cc598c7 chore: CHANGES.md (auto-Hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 18:57:29 +02:00
Bernd Steckmeister 13b333cbec security: server.py Restbefunde aus Review (s) – ban/unban-Body vor ADMIN_LOCK, generische 500er auf oeffentlichen Routen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 18:56:42 +02:00
Bernd Steckmeister 4d4044b888 chore: CHANGES.md (auto-Hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 14:48:07 +02:00
Bernd Steckmeister 5ada0e5038 security: server.py Restbefunde aus Review (r) – GET-Leser-Lock, Content-Length-Haertung, secrets-Token
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 14:46:27 +02:00
Bernd Steckmeister c8ff850c98 security: server.py Admin-Routen serialisieren (ADMIN_LOCK, Review-Befund q)
Threading-Umstellung aus (p) hatte eine Nebenlaeufigkeits-Race in den
Admin-Routen erzeugt: conduit.toml Read-Modify-Write + docker restart und
der send_admin-Readback-nach-sleep waren seit multithreaded race-faehig.
ADMIN_LOCK serialisiert NUR die Admin-Mutationen; die oeffentlichen Routen
(livekit-token, e2ee-diagnostics) laufen zuerst und bleiben nebenlaeufig,
der Slow-Loris-Schutz aus (p) bleibt erhalten. Headless verifiziert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 14:20:42 +02:00
Bernd Steckmeister d42beaf7ab chore: CHANGES.md (auto-Hook)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 13:52:07 +02:00