rebreak-monorepo/docs/internal/SESSION_2026-06-07_handoff.md
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

5.8 KiB

Session-Handoff 2026-06-07 (Windows-Schutz + Mac-DNS + Marketing-Nav)

Für die nächste Claude-Code-Session. Stand: ~15:40, User macht gleich Mac-Neustart. Memory-Files (MEMORY.md) ergänzen diesen Stand — hier das Session-Spezifische.


🔴 SOFORT-NÄCHSTER SCHRITT (offen, blockt Mac-Entscheidung)

Mac-DNS-Profil: Wall oder stale-state? Nach dem Neustart:

  1. ~/Downloads/rebreak-schutz-signed.mobileconfig installieren (signiertes DNS-Profil, Platzhalter-PW egal).
  2. Installiert → KEINE Wall, manuelles DNS-Profil reicht (heutige Fails = stale Netzwerk-Dienst vom entfernten alten Profil). RemovalPassword-Schutz steht → kein MDM nötig.
  3. Failt auch auf frisch gebootetem Mac („VPN-Dienst konnte nicht erstellt werden") → echte macOS-26-Wall (DNS nur via MDM) → dann MDM-Pfad (NanoMDM, siehe unten).

⚠️ Wichtig: NICHT vorschnell „MDM Pflicht" sagen — das echte ReBreak-DNS-Profil hat bei diesem User VORHER manuell installiert. Beweislage unklar bis Clean-Boot-Test.


Was heute fertig wurde (verifiziert)

  1. Windows-Schutz end-to-end bewiesen (in UTM Win11-ARM64-VM):
    • PowerShell DoH-Takeover → Resolve-DnsName bet365.de = 0.0.0.0/NXDOMAIN
    • Browser-Bypass gelöst: Chrome/Edge umgehen System-DNS via built-in-Resolver+eigenem DoH → Fix = 2 Policies (DnsOverHttpsMode=off + BuiltInDnsClientEnabled=false), beide nötig.
    • Subdomain-Bug (User-Fund): Blocklist war Apex-only (bet365.com geblockt, www.bet365.com offen). Fix deployed (siehe unten).
  2. ReBreak Magic Windows-App (apps/rebreak-magic-win/, Tauri): komplett gecodet, CI-Build grün, Installer gebaut: ReBreak Magic_0.1.0_x64-setup.exe (3,8 MB, in /tmp/rebreak-win-installer/). Browser-Policies im protection-core/apply_script.
  3. Mac Removal-Lock BEWIESEN: Profil mit PayloadRemovalDisallowed + RemovalPassword → macOS verlangt beim Entfernen das Removal-PW, NICHT Admin-PW (Dock-Test-Profil). RemovalPassword hält gegen Admin.
  4. Marketing-Nav umgebaut (apps/marketing/app/layouts/default.vue): Floating-Tabbar raus → Hamburger (mobil) / Header-Nav (Desktop).

🟡 Offene Threads / Entscheidungen

Thread Status Nächster Schritt
Mac-DNS Wall-Test blockt Clean-Boot-Test (oben)
Mac-MDM-Pfad (falls Wall) geplant NanoMDM Mac-Enrollment + DNS-Push testen (rebreak-binder-Domain). Teile da: ops/mdm/rebreak-mac-dns-filter.mobileconfig, backend/server/api/mdm/enroll.get.ts
Backend-Deploys warten auf GO ProhibitDisablement (dns/profile), Geräte-Matrix (plan-features+magic), magic/status — alle uncommitted
Marketing-Content offen „was wir alles bieten" (iOS/Android/Mac/Windows) — braucht User-Steer (Positionierung)
Installer hosten + Download-Link offen Wohin? rebreak.org/downloads/ lt. magic/info. Dann Download-Page um Windows ergänzen
Mac Browser-Policies offen Managed Prefs Chrome/Edge ins Mac-Profil (Chromium umgeht DNS auch auf Mac)
Backend-Cooldown-Flow (Mac-Selbstbindung) offen Backend hält RemovalPassword, App-Release nach 24h, verschlüsselte Delivery
Android: Ina Internal-Test offen Opt-in-Link (Play Console → Interne Tests → „Teilnahme am Test") an Ina; Account inabrini15@gmail.com
Android Open Testing besprochen „Offener Test" (public Link) braucht Google-Review; Glücksspiel-Framing beachten

📦 Working-Tree (uncommitted — NICHT deployed)

Backend (deploy nach GO → triggert Staging via push main):

  • dns/profile.get.tsProhibitDisablement: true ergänzt (gegen Toggle-Bypass)
  • magic/register.post.tsplatform-Feld (windows) + Cross-Counting Desktop-Slots
  • magic/status.get.tsneu (Token-Status-Poll für Win-Tamper-Service)
  • magic/info.get.ts — Windows-Installer-URL
  • plan-features.ts — Pro maxProtectedDevices 0→1 (Geräte-Matrix Pro 1+1 / Legend 3+2)
  • db/devices.ts — MAGIC_DEVICE_LIMIT entfernt (jetzt plan-gated)
  • devices/enroll.post.ts — Cross-Counting Magic+Protected

Native (Frontend, kein Backend-Deploy):

  • devices.tsx (Mac/Win-Menü raus → MagicSheet direkt), MagicSheet.tsx (Mac/Win-Toggle + i18n), DeviceProgressBar.tsx (label), AddMacSheet.tsx, locales ar/de/en/fr

Marketing: layouts/default.vue (Nav-Umbau), locales de/en (Pricing 2/5 Geräte)


🚀 Committed + deployed heute

  • 80be124 blocklist ||domain^ (Subdomain-Fix) → deployed Staging, AdGuard re-pulled (395k Regeln), www.* verifiziert NXDOMAIN
  • 4b4b9fc / 771af0f / 869d8af rebreak-magic-win App + CI → Build grün, Installer-Artefakt da
  • AdGuard-Server (rebreak-mdm): blocking_mode: default → nxdomain (Config-Edit, Backup AdGuardHome.yaml.bak-1780828505). Beides LIVE für alle DNS-Plattformen.

🧪 Artefakte (lokal)

  • /tmp/rebreak-win-installer/ReBreak Magic_0.1.0_x64-setup.exe — Windows-Installer (3,8 MB)
  • ~/Downloads/rebreak-schutz-signed.mobileconfig — signiertes Mac-DNS-Profil (für Clean-Boot-Test)
  • ~/Downloads/removal-lock-test.mobileconfig — Dock+RemovalPassword (beweist Removal-Lock, installiert)
  • ~/Downloads/Windows11-ARM64-de.iso — VM-ISO (4,9 GB)

🧠 Key-Findings (auch in Memory)

  • chromium-dns-bypass — Chrome/Edge/Brave umgehen System-DNS (Mac+Win), Fix = 2 Browser-Policies
  • mac-magic-profile-lock — RemovalPassword > Admin bewiesen; macOS-26 evtl. DNS-nur-via-MDM (Clean-Boot-Test pending); ProhibitDisablement gegen Toggle-Bypass
  • rebreak-magic-win — Windows-App-Architektur + E2E-Validierung
  • — Geräte-Matrix Pro 1+1 / Legend 3+2 final

⚠️ Mac-Speicher: kritisch

460-GB-Disk war voll (865 MB frei). Heute ~29 GB Xcode-DevData gelöscht → ~35 GB frei. Windows-VM braucht ~40 GB. Langfristig: externe NVMe-SSD für VMs/Archive.