Files
andros b04da850e4 EULA gate, block accounts and 24h moderation commitment
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.
2026-05-02 08:45:41 +02:00
..