- ChatBubble: useActionSheet replaces custom Modal (native iOS popup, Android bottom sheet) - DM mode (isDM prop): hides like-count, shows Insta-style heart badge under bubble when liked - Group chat unchanged - Cleanup: remove unused Modal/Platform imports, sheet styles, actionsOpen state - deploy.sh: auto-detect ANDROID_HOME + auto-create local.properties for local Gradle - NEXT_RELEASE.md: DM reactions release note - Includes other staged work across binder-mac, marketing, ops/mdm, ios/
136 lines
6.2 KiB
XML
136 lines
6.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<!--
|
|
ReBreak iPhone Protect Profile (Sideload-Variante)
|
|
===================================================
|
|
Scope (2026-05-26, NEFilter-Pivot):
|
|
1. ReBreak nicht entfernbar → Restrictions.allowAppRemoval=false
|
|
2. Profil selbst nicht entfernbar → PayloadRemovalDisallowed=true
|
|
3. System-DNS auf dns.rebreak.org locken → com.apple.dnsSettings.managed (DoH, Belt+Suspenders)
|
|
4. Anti-Tampering → allowEraseContentAndSettings=false,
|
|
allowUIConfigurationProfileInstallation=false
|
|
|
|
Was dieses Profil NICHT mehr macht:
|
|
- KEIN com.apple.vpn.managed (VPN-Toggle entfällt — supervised-Pfad nutzt
|
|
stattdessen NEFilter, der hat keinen User-Toggle in Settings)
|
|
- KEIN MDM-Payload (kein com.apple.mdm) — dieses Profile wird AirDrop-
|
|
sideloaded, NICHT über MDM gepushed. Konsequenz: empirisch verifiziert
|
|
2026-05-24 (feedback_ios_mdm_sideloaded_non_removable_impossible) — pure
|
|
Restrictions-Profile ohne MDM-Payload können sideloaded non-removable
|
|
sein (Remove nur via cfgutil + USB).
|
|
|
|
Ablauf:
|
|
1. iPhone supervised mit Apple Configurator 2 (bringt Apple-Configurator-MDM-Profile mit)
|
|
2. Dieses `rebreak-iphone-protect.mobileconfig` via AirDrop ans iPhone
|
|
3. Settings → Profile installieren → Schutz aktiv, App nicht löschbar
|
|
4. Separater MDM-Push via NanoMDM für `mdmSupervised=true`
|
|
(siehe `rebreak-iphone-mdm-supervised.json`) — schaltet App in NEFilter-Pfad
|
|
|
|
Voraussetzungen:
|
|
- Supervised-Mode aktiv (sonst greifen allowAppRemoval / PayloadRemovalDisallowed NICHT)
|
|
- iOS 14+ (DNS-Settings-Payload erfordert iOS 14)
|
|
- ReBreak-App MIT ContentFilter-Extension installed BEVOR Profile-Install
|
|
|
|
Apple-Referenzen:
|
|
- Restrictions: https://developer.apple.com/documentation/devicemanagement/restrictions
|
|
- DNS Settings: https://developer.apple.com/documentation/devicemanagement/dnssettings
|
|
- Profile Format: https://developer.apple.com/documentation/devicemanagement/toplevel
|
|
|
|
Stand: 2026-05-26, Profile-Version 3 (NEFilter-Pivot — VPN-Payload entfernt)
|
|
-->
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>Configuration</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.20260526</string>
|
|
<key>PayloadUUID</key>
|
|
<string>A1B2C3D9-E5F6-4789-ABCD-EF1234567895</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak Schutz</string>
|
|
<key>PayloadDescription</key>
|
|
<string>Schützt dich vor Glücksspiel-Rückfall: Rebreak nicht entfernbar, DNS-Filter auf dns.rebreak.org gelocked. Profil kann nicht selbst entfernt werden — Notfall-Entfernung via deinem Trustee oder Factory-Reset.</string>
|
|
<key>PayloadOrganization</key>
|
|
<string>ReBreak</string>
|
|
<key>PayloadRemovalDisallowed</key>
|
|
<true/>
|
|
<key>ConsentText</key>
|
|
<dict>
|
|
<key>default</key>
|
|
<string>Du installierst hiermit das ReBreak-Schutz-Profil. Dieses Profil bindet dich freiwillig an folgende Einschränkungen:
|
|
|
|
• Apps können während des Schutzes nicht über Long-Press gelöscht werden
|
|
• System-DNS-Anfragen laufen über dns.rebreak.org (verschlüsselt via DoH)
|
|
• Du kannst dieses Profil nicht selbst entfernen
|
|
|
|
Das ist gewollt. Der Schutz wirkt, weil er gegen deine impulsive Selbst-Override-Tendenz steht. Die Entfernung läuft über deinen Trustee oder deinen 7-Tage-Cooldown in der App.
|
|
|
|
Bei Verlust deines iPhones: das Profil verschwindet mit Factory-Reset, das ist normal.</string>
|
|
</dict>
|
|
|
|
<key>PayloadContent</key>
|
|
<array>
|
|
|
|
<!-- ===================================================================
|
|
1) RESTRICTIONS-PAYLOAD
|
|
Supervised-only Restrictions: blockt App-Removal + Erase-All
|
|
=================================================================== -->
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>com.apple.applicationaccess</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.restrictions</string>
|
|
<key>PayloadUUID</key>
|
|
<string>B3234568-ABCD-4F01-9345-67890ABCDEF7</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak Restrictions</string>
|
|
<key>PayloadDescription</key>
|
|
<string>Verhindert App-Löschung und Factory-Reset.</string>
|
|
|
|
<key>allowAppRemoval</key>
|
|
<false/>
|
|
|
|
<key>allowEraseContentAndSettings</key>
|
|
<false/>
|
|
|
|
<key>allowUIConfigurationProfileInstallation</key>
|
|
<false/>
|
|
</dict>
|
|
|
|
<!-- ===================================================================
|
|
2) DNS-SETTINGS-PAYLOAD
|
|
Lockt System-DNS auf unseren DoH-Endpoint
|
|
Belt+Suspenders: greift auch wenn NEFilter aus irgendeinem Grund
|
|
nicht aktiv ist (Crash, Reinstall, etc.).
|
|
=================================================================== -->
|
|
<dict>
|
|
<key>PayloadType</key>
|
|
<string>com.apple.dnsSettings.managed</string>
|
|
<key>PayloadVersion</key>
|
|
<integer>1</integer>
|
|
<key>PayloadIdentifier</key>
|
|
<string>org.rebreak.protection.iphone.dns</string>
|
|
<key>PayloadUUID</key>
|
|
<string>C1234568-ABCD-4F01-9345-67890ABCDEF3</string>
|
|
<key>PayloadDisplayName</key>
|
|
<string>ReBreak DNS-Filter</string>
|
|
<key>PayloadDescription</key>
|
|
<string>Leitet alle DNS-Anfragen verschlüsselt über dns.rebreak.org. Glücksspiel-Domains werden blockiert.</string>
|
|
|
|
<key>DNSSettings</key>
|
|
<dict>
|
|
<key>DNSProtocol</key>
|
|
<string>HTTPS</string>
|
|
<key>ServerURL</key>
|
|
<string>https://dns.rebreak.org/dns-query</string>
|
|
</dict>
|
|
</dict>
|
|
|
|
</array>
|
|
</dict>
|
|
</plist>
|