Debug reporting: error/crash capture + "Report a problem" entry point #32

Closed
opened 2026-07-01 04:01:28 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-01 04:01:28 +00:00 (Migrated from github.com)

Part of #10.

Context

There is no crash/error capture today. This ticket adds the capture layer plus a user
entry point; the review-and-submit UI is #33. Per the project decision, nothing is ever
sent automatically — capture only stores locally for the user to review.

Scope

  • Install an uncaught-exception handler that persists a structured crash record locally
    (stack trace + app/version/device metadata) for review on next launch — never auto-sent.
  • A manual "Report a problem" entry point (Settings) to start a report without a crash.
  • Collect a diagnostic bundle: app version, Android version/device, non-PII settings, and
    a recent in-app log ring buffer. Minimize what's captured (server also scrubs, #34).
  • Persist pending reports locally until the user reviews/submits or discards them.

Acceptance criteria

  • A forced crash produces a saved report that is offered for review on next launch.
  • "Report a problem" creates a report on demand.
  • Nothing leaves the device without explicit user action (handled in #33).

Relevant files

  • LibreMailApplication / MainActivity (Thread.setDefaultUncaughtExceptionHandler)
  • new package under org.libremail for reporting; ui/settings/SettingsScreen.kt entry

Dependencies

Feeds #33. Part of the opt-in, F-Droid-safe design (#16).

Part of #10. ## Context There is no crash/error capture today. This ticket adds the capture layer plus a user entry point; the review-and-submit UI is #33. Per the project decision, nothing is ever sent automatically — capture only stores locally for the user to review. ## Scope - [ ] Install an uncaught-exception handler that persists a structured crash record locally (stack trace + app/version/device metadata) for review on next launch — never auto-sent. - [ ] A manual "Report a problem" entry point (Settings) to start a report without a crash. - [ ] Collect a diagnostic bundle: app version, Android version/device, non-PII settings, and a recent in-app log ring buffer. Minimize what's captured (server also scrubs, #34). - [ ] Persist pending reports locally until the user reviews/submits or discards them. ## Acceptance criteria - A forced crash produces a saved report that is offered for review on next launch. - "Report a problem" creates a report on demand. - Nothing leaves the device without explicit user action (handled in #33). ## Relevant files - `LibreMailApplication` / `MainActivity` (`Thread.setDefaultUncaughtExceptionHandler`) - new package under `org.libremail` for reporting; `ui/settings/SettingsScreen.kt` entry ## Dependencies Feeds #33. Part of the opt-in, F-Droid-safe design (#16).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#32