When the game falls over, we’d like to hear about it. Up to now the only feedback loop has been the goodwill of players willing to write the bug down somewhere; from this release the game tells us itself, scrubbed of anything we don’t need to see. Default-on, opt-out, EU storage, 90 days, no chat, no IPs, no save data. Privacy policy on resinhead.au updated to match.

  • Crash reporting: wire the Sentry .NET SDK across Client.Desktop, Client.Android, and Facilitator via a shared SentryBootstrap helper in Shared. Locked down to no-PII defaults (SendDefaultPii=false, IPs scrubbed, no environment vars, breadcrumbs filtered to drop chat + Lua source); tagged per binary (app=client.desktop|client.android|facilitator) and per RID so a Windows crash is one filter click from an Android one. Release tag is blight@$VERSION so dashboard rows line up with gh release rows.
  • Lua loader errors: wrap the auto-load loops in LuaApi (songs) and QuestLuaApi (quests) with SentryBootstrap.CaptureLuaError, so a malformed script ships a real ticket instead of just a print() line nobody reads. Dev-console input and runtime load() calls stay un-instrumented; those are dogfooding noise, not crashes.
  • Opt-out path: new Shared.BlightSettings reads/writes a JSON file at %LOCALAPPDATA%\Blight\settings.json (and the Linux/macOS/Android equivalents) with a sendCrashReports toggle, default ON. Editing the file to false disables crash reporting on next launch. An in-game toggle UI is on the TODO list (Stuff Ken cares about right now).
  • GHA release: new sentry-release job creates the Sentry release, uploads managed PDBs for every RID (desktop + Android) with --include-sources, and finalises. Gated on vars.SENTRY_ORG so forks without Sentry configured skip cleanly. Build jobs embed the DSN via -p:SentryDsn=$SENTRY_DSN; Directory.Build.props writes it onto the entry assembly as AssemblyMetadata, so user devices have a DSN even when env vars aren’t around.
  • Privacy policy on resinhead.au: disclose crash reporting and Sentry (Functional Software, Inc.) as a data subprocessor, document EU storage and 90-day retention, document the settings.json opt-out path. “No analytics or telemetry” softened to “crash reports only”; effective date bumped.
  • docs/sentry.md: design note covering plan/region/data model/integration phases/release pipeline, plus the privacy-policy diff that just landed.