Datenschutz: Fehlerberichte nur mit Zustimmung senden (Opt-in)
Uebertragung eines Befunds aus dem Security-Audit der alten Melo-App
(21.08.2026) in die neue Codebasis.
Ausgangslage hier war eine ANDERE als dort: LoggerService lud jeden Fehler
unbedingt zu logs.baka-net.de hoch, es gab ueberhaupt keinen Schalter. In
der alten App existierte er zwar, wirkte aber nicht ueber einen Neustart
hinaus.
Neu:
- Schalter "Fehlerberichte senden" in den Einstellungen unter Datenschutz,
Standard AUS. Ohne ausdrueckliche Zustimmung verlaesst kein Bericht das
Geraet - auch nicht beim allerersten Start und auch nicht im Zeitfenster
zwischen logger.init() und settings.init().
- Sperre an der einzigen Stelle, durch die jeder Upload laeuft. Lokales
debugPrint bleibt, aber nichts verlaesst das Geraet; der Puffer wird
geleert, damit er nicht unbegrenzt waechst.
- Die Entscheidung ueberlebt den Neustart: AppSettings speichert sie und
reicht sie an den Logger durch, UND LoggerService liest sie beim Start
zusaetzlich selbst.
- LoggerService bekam einen injizierbaren http.Client (Muster wie BakaAuth),
damit sich belegen laesst, dass ohne Zustimmung KEIN Request rausgeht.
Auswirkung auf bestehende Installationen: Wer bisher unfreiwillig Berichte
gesendet hat, sendet ab diesem Update keine mehr, bis er zustimmt. Das ist
gewollt - die Zustimmung wurde nie eingeholt.
Nicht uebernommen: der zweite Befund (Logout liess Zugangsdaten zurueck)
trifft hier nicht zu. BakaAuth.abmelden() loescht genau die Schluessel, die
anmelden() schreibt, und Navidrome hat mit loescheZugangsdaten() ein
eigenes, vollstaendiges Trennen.
Auf main (34d6d8e) rebast. settings_screen.dart hat sich sauber automatisch
zusammengefuehrt - die Umbenennungen und MeloTheme-Farben der UI-Politur
bleiben erhalten, der Datenschutz-Abschnitt fuegt sich ein. Im CHANGELOG
kollidierten beide Seiten am Kopf; beide Eintraege wurden behalten.
Tests: 340 gruen (main allein: 328), 12 neue in
test/settings/diagnose_opt_out_test.dart. Fuenf tragende Stellen per
Mutationsprobe geprueft. flutter analyze: keine Befunde.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QbuWT267W8rFDsaavANuEn
This commit is contained in:
co-authored by
Claude Opus 5
parent
34d6d8e52a
commit
bb800adb61
@@ -111,6 +111,38 @@ Lieder/Kategorie bleiben unverändert.
|
||||
(Material 3: 48 dp, Theme über `context`) und die Token-Disziplin aus
|
||||
**Hue** (Primitives → benannte Rollen).
|
||||
- ✅ **Getestet:** 318 Tests grün (23 neue), `flutter analyze` ohne Befund.
|
||||
### 🛡️ Fehlerberichte nur noch mit Zustimmung (Opt-in) (2026-08-21)
|
||||
- **Neu: Schalter „Fehlerberichte senden"** in den Einstellungen unter
|
||||
*Datenschutz*. Bisher lud `LoggerService` jeden Fehler unbedingt zu
|
||||
`logs.baka-net.de` hoch — es gab **keine** Möglichkeit, das abzustellen.
|
||||
- Aus heißt wirklich aus: Die Sperre sitzt an der einzigen Stelle, durch die
|
||||
jeder Upload läuft. Lokales Protokollieren (`debugPrint`) bleibt unberührt,
|
||||
aber nichts verlässt mehr das Gerät. Der Puffer wird dabei geleert, damit er
|
||||
im Dauerbetrieb nicht unbegrenzt wächst.
|
||||
- Die Entscheidung **überlebt den Neustart**: `AppSettings` speichert sie, und
|
||||
`LoggerService` liest sie beim Start zusätzlich selbst — denn `main()`
|
||||
startet den Logger, *bevor* die Einstellungen geladen sind, und schon dieses
|
||||
Zeitfenster darf bei Widerspruch nichts senden.
|
||||
- Hintergrund: Übertragung eines Befunds aus dem Security-Audit der alten
|
||||
Melo-App. Dort gab es den Schalter zwar, er hatte aber keine Wirkung über
|
||||
einen Neustart hinaus — die Anzeige stand auf „aus", gesendet wurde weiter.
|
||||
Hier ist das strukturell ausgeschlossen und durch Tests festgehalten.
|
||||
- **Der Standard ist AUS.** Ohne ausdrückliche Zustimmung verlässt kein
|
||||
Fehlerbericht das Gerät — auch nicht beim allerersten Start, bevor die
|
||||
Einstellungen jemals geöffnet wurden. Wer Berichte senden möchte, schaltet
|
||||
den Regler bewusst an.
|
||||
- Tests: 12 neue in `test/settings/diagnose_opt_out_test.dart` (**340 gesamt**,
|
||||
vorher 328). Fünf tragende Stellen per Mutationsprobe geprüft — ohne Sperre,
|
||||
ohne Durchreichen an den Logger, ohne Lesen beim Start und mit wieder auf
|
||||
„an" gedrehtem Standard (je einmal im Logger und in den Einstellungen) fallen
|
||||
jeweils genau die zuständigen Tests um.
|
||||
- Für die Testbarkeit bekam `LoggerService` einen injizierbaren HTTP-Client
|
||||
(gleiches Muster wie `BakaAuth`), damit sich belegen lässt, dass ohne
|
||||
Zustimmung wirklich **kein** Request rausgeht.
|
||||
|
||||
> Auswirkung auf bestehende Installationen: Wer bisher (unfreiwillig) Berichte
|
||||
> gesendet hat, sendet ab diesem Update keine mehr, bis er zustimmt. Das ist so
|
||||
> gewollt — die Zustimmung wurde nie eingeholt.
|
||||
|
||||
### 📋 Backlog-Datei angelegt (2026-08-21)
|
||||
- Neu: `BACKLOG.md` — bewusst zurückgestellte Punkte an einer Stelle, damit
|
||||
|
||||
Reference in New Issue
Block a user