Feedback and Diagnostics
The Support flow is how a user reports a problem or idea from inside the app, and how the app itself tells the RaceTagger team something went wrong without the user doing anything. There are three parts: (1) the Support button (bottom-right floating action button, "Report a bug, request a feature, or share your feedback — we're listening!") opens a modal that always attaches full diagnostics and creates a GitHub issue; (2) Automatic Error Reporting silently reports critical failures and hard crashes as they happen, deduplicated and turned into GitHub issues without any user action; (3) an occasional satisfaction check-in after a large analysis, whose negative branch routes into the same Support pipeline. None of this requires the user to find or attach a log file themselves — diagnostics are collected and uploaded automatically as part of both flows.
How to use it
- 1Click the Support button (bottom-right corner, visible on the main window and on the Results screen) to open the modal…: titled "Support".
- 2Pick a tab: Bug Report, Feature Request, or General — each shows a short contextual banner explaining what will be sent.
- 3Fill in Title (required, up to 200 characters) and Description (required, up to 5000 characters), then click Submit: You must be logged in; if not, the modal shows "Please log in to submit feedback." instead of the form.
- 4On success the modal shows "Report Sent" — "Thank you!: Your feedback and full system diagnostics have been received." On failure it shows "Submission Failed" with Back / Try Again buttons.
- 5To turn automatic error reporting off, go to Settings → Privacy & AI and toggle Automatic Error Reporting off (see the…: settings-and-preferences page; note the restart caveat below).
- 6The satisfaction check-in appears on its own, at most once, when you click Done on the Results screen after a…: large-enough analysis (the threshold is set server-side). Rate it and it either offers your referral invite link (positive) or opens a short "what went wrong" form (negative) that submits straight into the Support pipeline, tagged as coming from a dissatisfied survey respondent. Maybe later / Not now dismiss it without submitting anything.
Limits and known behaviour
- The GitHub issue link is not shown to the user.
submit-support-feedbackreturnsissueNumber/issueUrlon success, butfeedback-modal.jsonly shows a generic "Report Sent" message — if a customer wants to reference their issue, ask support/dev to look it up, don't expect the app to have told them the number. - "Automatic Error Reporting" resets to ON every app restart. The toggle
(
set-telemetry-enabled) only flips an in-memory flag (ErrorTelemetryService.enabled, defaulttrue) — nothing is persisted to disk. A user who disabled it will have it re-enabled the next time they launch the app. (Also documented on the settings-and-preferences page.) - Full diagnostics are always attached to a Support submission —
includeDiagnosticsis hardcodedtrueinfeedback-modal.js; there is no way to send feedback without them from the UI. - Diagnostic upload happens before GitHub issue creation but is non-blocking: if the Supabase Storage upload fails, the issue is still created, just without a diagnostic report link.
- Automatic error telemetry is rate-limited: max 5 reports per execution, 20 per day per user, and deduplicated by a fingerprint (error type + normalized message + phase + platform) — a repeat of the same error within 5 minutes is silently skipped, and a repeat later just adds a comment to the existing GitHub issue rather than opening a new one.
- Telemetry reports queued before login, or queued in the ~30s before the
periodic flush when the app crashes, are not lost: they are written to
a
telemetry-pending.jsonfile in the userData folder and retried on the next launch (capped at 50 items, 7 days, 5 attempts). - Native crash minidumps (Crashpad) are written to disk only, never uploaded — only the fact that a crash happened (plus sanitized log context) is sent through the same telemetry pipeline as a handled error.
- An abnormal exit (OOM kill, force-quit, power loss — no minidump) is
detected from a missing
[SESSION END]marker in the previous session's log and reported as a lower-severityabnormal_exit, capped at 3 reports per launch to avoid flooding after a crash loop. - The satisfaction check-in and the referral milestone nudges are
admin-controlled server-side (enable/disable, photo threshold, reward
shown, milestones) via the
satisfaction-surveyEdge Function — nothing in the desktop app itself gates when they appear, so behaviour can change without an app update. - Both flows are online-required:
survey:get-eligibilityandsubmit-support-feedbackneed an authenticated session; if there is no network or the user is logged out, the survey simply never appears and Support submission fails with an explicit error.