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>
6.1 KiB
Session-Handoff 2026-06-07/08 — Magic-Windows E2E + Geräte-UI + Marketing-Prod
Marathon-Session. Stand: spät nachts 08.06. User macht Feierabend, schreibt die FAGS-Mail (Fachverband Glücksspielsucht meldet Interesse auf Vorstandsebene — strategisch riesig). Nächste Session vorbereitet (unten).
🏆 Das große Ding: ReBreak-Magic für Windows läuft E2E
Der komplette Flow ist live + verifiziert: Download (rebreak.org) → SmartScreen-Warnung → Pair (6-stelliger Code aus iPhone-App) → register → AdGuard-DNS-Client provisioniert → systemweiter Glücksspiel-Block am PC → Push „Neues Gerät verbunden" aufs iPhone. Gerät zeigt „mit ReBreak-Konto verbunden".
Zwei harte Backend-Bugs heute gefunden + gefixt (waren der Blocker)
- DNS-Token 64 Zeichen → AdGuard lehnt Client-ID ab (
hostname label too long: got 64, max 63). Fix:randomBytes(24).hex= 48 Zeichen (register.post.ts),magic/statusRegex{64}→{1,63}. Commitdb6db54(gepusht + deployed). - nginx-IP-Allow-Liste auf
dns.rebreak.org(/control/-API) hatte die neue Staging-Box nicht drin → 403 Forbidden (sah aus wie falsches PW, war IP). Fix:allow 91.99.225.223;in/etc/nginx/sites-available/dns.rebreak.orgauf rebreak-mdm + nginx-reload. Backup liegt da (.bak-*).
⚠️ Wichtige Lektion (kostete ~Stunde): falsche Box
ssh rebreak-server(49.13.55.22) = ALTE migrierte Box, läuft nur noch stale weiter. NICHT für Staging debuggen.- Echte Staging =
staging.rebreak.org= 91.99.225.223 (backend/-Layout, pm2rebreak-staging). Win-App + Deploy zeigen dahin. Memoryreference_rebreak_serverkorrigiert. - AdGuard-Reproduktion + DB-Checks via Infisical-Pattern:
source /etc/environment; infisical login --method=universal-auth --client-id=$INFISICAL_CLIENT_ID --client-secret=$INFISICAL_CLIENT_SECRET --silent --plain→infisical run --projectId=14b11b35-… --env=staging --token=….
✅ Phase A (Backend) — live auf Staging (Commit a95e665)
4 Blöcke + Hard-Lock + Reveal:
- Offline-Enroll → 410 (kein Klartext-PW-Download mehr); stationär nur via Magic
ProhibitDisablementim Mac-DNS-Template- Push „Neues Gerät verbunden" (mobile Tokens) aus
magic/register user_devices-Realtime-Migration (Publication)- Hard-Lock: server-PW (
magic_removal_password) generiert/injiziert, Reveal NUR bei Account-Löschung (user/delete) + Kündigung (stripe/webhook) via Resend-Mail. Signing config-gated INAKTIV.
✅ Marketing — live auf PROD (rebreak.org)
- Windows-Download-Seite
/download/windows(PC-Schutz korrekt geframt) + Installerpublic/downloads/RebreakMagic-Setup.exe(3,7 MB, aus CI-Artefakt; im Repo, überlebtrsync --delete) - Trial-Klarheit: Hero „14 Tage kostenlos testen" + „danach ab 3,99 €/Monat" (löst free-vs-Preis-Verwirrung; 14-Tage-Trial existiert Stripe-seitig)
- OS-Detection (
useOS): Windows-Besucher → Windows-Download, Mac → Mac - Pricing: Device-Cross-Section + Header/Hamburger-Nav (Floating-Tabbar raus) — war nur auf Staging, jetzt Prod
- Deploy:
MARKETING_REMOTE_DIR=/var/www/marketing-prod ./scripts/deploy-marketing.sh. Fix:--info=progress2→--progress(macOS-rsync-kompatibel).
✅ Native UI-Polish (committet LOKAL, 6 Commits ahead von origin = db6db54)
e0eb171 e2e5a10 227c30c 77ce5e5 c3478f4 ca72437 — deployen erst per App-Rebuild:
- Device-PNG-Icons (
assets/devices/*.pngstatt Ionicons) - Geräte-Detail-Sheet (Tap → Status, verbunden-seit, HalfDonut), Row antippbar
- Trash/Menü raus → chevron-forward (Entfernen am Gerät selbst/Cooldown)
- Slot-Anzeige: 2 volle Progress-Circles (Mobil grün / Computer blau) + darunter animierter Gesamt-Verteilungs-Balken (eigener, kein native; grün/blau-Segmente + Legende).
DeviceSlotDonut(segment-API,half-Modus vorhanden aber ungenutzt),DeviceDistributionBar. - Status-Pill in der Liste: Online (grün) / Cooldown · noch Xh (amber, aus
releaseRequestedAt) / Ungeschützt (rot).
🚀 NÄCHSTE SESSION — der eigentliche Gamechanger (User-Priorität)
„ReBreak für Windows echt magic wie Mac" = iPhone-Supervision (no-erase Self-Bind) auf Windows portieren.
- Warum Gamechanger: erreicht die breite Masse — alle mit iPhone/iPad ohne Mac (nur Windows). MDM-enforced → erzwingt Legend-Account → Business/Umsatz.
- Technisch plausibel:
supervise-magic(supervise-magic-phase-1) basiert auf go-ios (cross-platform Go → cross-compile nach Windows). Protokoll (lockdownd, MCInstall.SetCloudConfiguration, MobileBackup2) OS-agnostisch. Windows-usbmuxd via Apple Mobile Device Support (iTunes / „Apple Geräte"-App). - Ungeprüft (= Spike): ob go-ios' Windows-usbmuxd den schweren MobileBackup2-Flow durchzieht. FMI/SDP-Precondition (ErrorCode 211) = gleiche Wall wie Mac.
- Spike-Plan: supervise-magic-Go-CLI für Windows cross-compilen → echtes x64-Windows + „Apple Geräte"-App + Test-iPhone (UTM-ARM64-VM taugt für iPhone-USB-Passthrough wahrscheinlich NICHT). rebreak-binder-Territorium.
Weitere offene Threads (Prio absteigend)
- Native-Rebuild + Push der 6 lokalen UI-Commits (am iPhone testen: Detail-Sheet/Icons/Realtime/Rings/Status)
- Phase B Sleep/Budget (Design: magic-hardlock-offboarding) — 1-Tag/Gerät-Budget, eskal. Cooldown 4/8/12/24h, Auto-Reaktivieren 10h-default, Sleep = AdGuard filtering off
- Signing: Magic-Profile (Cert/Sign-Proxy) + Windows-Code-Signing gegen SmartScreen (Empfehlung: Azure Trusted Signing ~10$/Mon)
magic/statuslastSeen-Heartbeat → für echten Online/Offline-Status der Magic-Geräte in der Liste- Pricing-Inkonsistenz: founding_desc „1 Monat Standard" vs Banner „3 Monate Legend" (+ „Standard" ist alter Plan-Name)
🧠 FAGS (Fachverband Glücksspielsucht) — strategisch
Vorstandsvorsitzender hat Interesse gemeldet (08.06.). Fachliche Validierung + Partnerschafts-/DiGA-Türen. User schreibt die Antwort-Mail. Bei Bedarf: rebreak-strategist / diga-regulatory für Tonalität + fachliche Positionierung.