The issue the crash flow prefills took its title and body from string
resources, so both followed the device language: a crash on a French
phone opened the tracker with a French issue, which is unreadable to
whoever has to triage it. The report itself was always English — only
the wrapper around it wasn't.
That text is posted rather than shown, so it is no longer a resource at
all: title and body are fixed English in CrashReportSubmit, and
CrashConfig drops issueTitle (apps pass one fewer argument and can
delete their own crash_report_issue_title / crash_report_body_* strings).
What the reporter sees in the app — the dialog, the toasts, the
clipboard label — stays translated, which is the line the kdoc and the
resource header now draw.
First Android-library module in the kit. Privacy-respecting crash capture
(writes a self-contained, allowlist-only report to private storage, chains to
the platform handler, uploads nothing), startup crash-loop detection, a report
dialog showing the full text before it leaves the device, and an issue-tracker
hand-off. Extracted from Calendula and generalised: app label + issue URLs come
from a CrashConfig supplied at install(); each app keeps its own thin themed
CrashReportActivity. Lean deps (Compose + core-ktx). 3 unit tests on the pure
report builder.
Adds AGP/android-library + compose plugins and the compose/core-ktx libs to the
kit catalog; core-time stays a plain JVM module.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>