feat(rebreak-native): AppAlert composable, avatar compression, FamilyControls gate
- components/AppAlert.tsx — one parametrized alert composable (error / success /
confirm), replacing scattered Alert.alert(). error mode sanitizes raw response
bodies (strips HTML, detects 413/5xx/nginx → friendly generic text, raw text
only in a collapsible "Details" section). Light backdrop, TouchableOpacity.
- profile/AvatarCropSheet — compress the cropped avatar via expo-image-manipulator
(max 512×512, JPEG q0.7 → ~50–150 KB) before upload, so the nginx 1 MB cap on
staging.rebreak.org/api/ no longer 413s; compress errors shown via AppAlert.
(adds expo-image-manipulator ~14.0.7 — needs a fresh dev build)
- lib/protection.ts — FAMILY_CONTROLS_AVAILABLE = expoConfig.extra.familyControlsEnabled
- app/(app)/blocker.tsx — App-Lock toggle only rendered when FAMILY_CONTROLS_AVAILABLE;
otherwise a quiet "App-Lock — coming soon" row + "bald" badge. The URL-filter
banner / ProtectionLockedCard stay positive (the filter carries the protection).
- de/en strings for alert.* and blocker.app_lock_coming_soon_*
Follow-ups: nginx client_max_body_size → ≥5 MB on staging (backyard, separate);
ConfirmAlert/SuccessAlert call-site sweep onto AppAlert (separate).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>