Repository navigation
Description
Is your feature request related to a problem?
When a tester reports a problem, the report often lacks the app state and diagnostic context needed to reproduce it. DevView already exposes useful information through independent modules, but there is no single reviewed, shareable snapshot.
Describe the solution you'd like
Add an opt-in bug-report module that collects a bounded diagnostic snapshot, lets the user inspect and redact it, and shares it through the platform's normal share UI. It should not upload reports automatically.
A first version should support:
- Host-supplied app/build/platform metadata (for example app version, build type, OS version, and device model where available).
- Recent bounded console logs, analytics events, feature-flag values/overrides, and NetworkMock selections when those modules are registered.
- A preview where users can omit sections or redact values before sharing.
- Export as readable text or JSON, with explicit indication if a source was unavailable or failed to contribute data.
Implementation considerations
The information is currently owned by separate modules. Add an opt-in, read-only contribution contract rather than making devview depend directly on every feature module. For example, this is a possible shape, not a required API:
interface DiagnosticSectionProvider {
val sectionId: String
suspend fun collect(): DiagnosticSectionResult
}The report builder should enforce item and byte limits, handle collection failures visibly, and avoid silently presenting a partial report as complete. Make collection and sharing user-initiated. Redact sensitive values by default; logs, analytics properties, feature values, and future network data can contain credentials or personal information. Platform-specific share integration may require a small platform bridge while keeping report formatting in common code.
Keep screenshots, automatic uploads, and network request/response history out of the initial scope unless separately designed.
Acceptance criteria
- A user can explicitly generate, review, redact, and share a report without automatic network transmission.
- Registered supported modules can contribute bounded snapshots without core depending on their implementation modules.
- Missing or failed sources are clearly identified; partial reports are not represented as complete.
- Sensitive values have safe defaults and the report preview makes included sections clear.
- Android and iOS behavior is documented and demonstrated in the sample app.
Activity