b04da850e4
App Store guideline 1.2 requires four UGC controls; this lands three of them and updates the privacy policy with the 24 h response commitment. EULA gate: a fullScreenCover is shown over RootView whenever the stored eulaAcceptedVersion is below EULAView.currentVersion. The view links to the Apple Standard EULA and spells out the project-specific zero-tolerance clause that the rejection letter quoted verbatim. Bumping currentVersion forces re-acceptance after the terms change. Settings -> About -> "Terms of Use" reopens the same view in read-only mode. Block accounts: BlockList is an @Observable singleton that persists a JSON array of FollowCoordinator-normalised feed URLs in UserDefaults. ProfileView gains a Block / Unblock button next to View social.org for non-own profiles. Settings exposes the list with an Unblock action per row. Filtering happens at render time in TimelineView and NotificationsView so blocking from a profile removes content from the feed instantly, as the rejection letter requires; load-time filtering in the view models stays as defense in depth. PRIVACY.md grows a "Moderation and reports" section that names the three tools, commits to acting on reports within 24 hours, and restates the zero-tolerance policy. Apple expects this text in the public privacy policy; the same wording will go into the App Review Information Notes when we resubmit. Report post and the in-app mirror of the 24 h paragraph remain open; both depend on the developer-notification channel decision.