# 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) 1. **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/status` Regex `{64}`→`{1,63}`. Commit `db6db54` (gepusht + deployed). 2. **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.org` auf **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, pm2 `rebreak-staging`). Win-App + Deploy zeigen dahin. Memory `reference_rebreak_server` korrigiert. - 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 - `ProhibitDisablement` im 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) + Installer `public/downloads/RebreakMagic-Setup.exe` (3,7 MB, aus CI-Artefakt; im Repo, überlebt `rsync --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/*.png` statt 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/status` lastSeen-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.