4 Commits

Author SHA1 Message Date
chahinebrini
63fae25531 fix(android-protection): explicit specialUse FGS type — Samsung/Android 16 crash loop
RebreakVpnService.onStartCommand crashed with SecurityException because Android 16's validateForegroundServiceType rejects the implicit 2-arg startForeground(). Now passes FOREGROUND_SERVICE_TYPE_SPECIAL_USE explicitly (Google's documented best practice) and guards the call so a failed foreground promotion stops the service cleanly instead of crashing the app. Verified vs reported Galaxy A54 / Android 16 signature (97% of crash events, 1-user crash loop).

Bundles pending working-tree work across native/marketing/locales/mac + graphify-out rebuild. gitignore: google-services.json + /screenshots/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:33:28 +02:00
chahinebrini
eb95258b5e docs(marketing): Rebreak Magic (Selbstbindung) als 4. USP in alle 3 Mails
iOS no-erase Supervision als therapeutisches Selbstbindungs-/Commitment-Device-
Argument formuliert (Schutz im Drang-Moment nicht löschbar, nur via Vertrauens-
person/Cooldown, ohne Geräte-Reset). Maßvoll positioniert: in DE/für Glücksspiel-
sucht einzigartig, gratis im Legend-Tier (vs. kostenpflichtige US-Tools wie TechLockdown).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 06:08:17 +02:00
chahinebrini
db8e38ae6c docs(marketing): FAGS+NLS Förder-/Partnerschafts-Plan + 3 Mail-Entwürfe
Konkreter Go-to-Market-/Funding-Plan für die Marketing-Phase:
- Strategie: 2 Knoten (FAGS/Ilona + NLS Hannover), Geld-Mechanik (Modellprojekt →
  gemeinnütziger Träger → Rebreak als bezahlter Partner), Win-Win pro Partner.
- Sequenz: erst echte Daten + Fachstellen-Validierung (Phase 1), dann Förderung
  via NLS/NDS-Modellprojekt (Phase 2). Daten machen den Förder-Pitch glaubwürdig.
- Plan B/C: nicht single-threaden auf Ilona — STEP gGmbH / Lukas-Werk / NLS parallel.
- GmbH-Reframe: keine 25k Cash nötig (UG/Sachgründung), Kredit erst später.
- 3 sende-fertige Mails: Ilona (warm, ohne Förder-Ask), Lukas-Werk/STEP (Testphase
  = echte Daten), NLS (digitale Ergänzung zu abgezockt! + Modellprojekt).
- Gamban-Vergleich + USP-Hervorhebung (IMAP-IDLE-Mail-Schutz, Lyra).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 06:02:54 +02:00
chahinebrini
d31e45e2a8 feat(streak): protection-coverage metric (DiGA core) replacing broken streak
The old streak was non-functional: streaks.current_days was always 0 (never
computed/incremented), and the profile page read me.streak (0) + account
created_at as the "since" date — showing "0 days protected since <signup>"
for everyone. This is the DiGA key metric, so it had to be rebuilt.

New model: optimistic protection-coverage based on actual VPN/MDM protection
state, never resets to 0.
- backend: append-only protection_state_log + migration; POST /api/protection/event
  (ingestion, deduped) + GET /api/protection/coverage (read-time compute, no cron);
  server-side cooldown_disable event on cooldown resolve. Generous >6h-off/day rule.
- frontend: report protection on/off transitions (initial + flips, deduped) from
  useProtectionState; rewrote profile StreakSection → half-donut (protected vs
  unprotected) + progress bar (current streak → personal record) + empty state.
- coverage starts fresh from deploy (no historical backfill — clean data for DiGA).
- spec: docs/specs/protection-coverage-streak.md (shared contract).
- old streaks/streak_events/profiles.streak left intact (coach/scores consumers).

Also adds go-to-market one-pagers under docs/marketing/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:54:55 +02:00