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>
91 lines
5.8 KiB
Markdown
91 lines
5.8 KiB
Markdown
# 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.ts` — `ProhibitDisablement: true` ergänzt (gegen Toggle-Bypass)
|
|
- `magic/register.post.ts` — `platform`-Feld (windows) + Cross-Counting Desktop-Slots
|
|
- `magic/status.get.ts` — **neu** (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
|
|
- **[[Legend-USP = Multi-Device-Protection]]** — 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.
|