Wire up self-hosted Sentry + PostHog credentials via Info.plist
Replace upstream's unreplaced placeholder strings (__SENTRY_DSN__ etc.)
with Makefile-driven Info.plist injection from Config/Secrets.env
(gitignored). The archive target now forwards PROWL_SENTRY_DSN,
PROWL_POSTHOG_API_KEY, and PROWL_POSTHOG_HOST to xcodebuild; the app
reads them at startup and skips SDK init when a value is empty or still
contains an unsubstituted $(VAR) placeholder.
Swap the hardware UUID identifier for an install UUID persisted in
UserDefaults so opt-out can actually forget the user. AnalyticsClient
gains reset() which clears both the PostHog identity and the install ID;
SettingsFeature triggers it whenever analyticsEnabled transitions from
true to false.
Tune Sentry options for production on the free tier: tracesSampleRate
0.05, enableAppHangTracking true, environment and releaseName set.
Watchdog termination tracking is intentionally not added because it is
unsupported on native macOS.