Skip to content

feat(platform): export anonymized app diagnostics #317

Description

@veryCrunchy

User problem

When Nextcloud Native reports an error, users and maintainers usually receive only a short UI message. The context needed to reproduce failures across network, sync, storage, updates, media, and native platform integrations is lost, while asking users for raw system logs risks exposing account data.

Outcome

Provide a bounded app-wide incident recorder and an in-app support report that users can review and export with identifying data removed before it is persisted or packaged.

Acceptance criteria

  • Record structured failures and meaningful state transitions across authenticated transport, adaptive APIs, Files and folder sync, media transfers, caches and offline storage, app updates, virtual files, and native platform integrations.
  • Persist only bounded, rotated diagnostic history in app-private storage and recover safely after interruption or malformed records.
  • Sanitize before persistence: never record credentials, authorization or cookie values, HTTP bodies, private response payloads, raw server URLs, usernames, account IDs, local paths, remote filenames, or user content.
  • Preserve reproducible relationships through non-reversible keyed aliases, status and error codes, operation names, counts, timing, retry state, and bounded sanitized exception frames.
  • Capture Windows Cloud Files batch context including processed count, failing entry result and index, placeholder state, and anonymized path identity so creation collisions can be identified.
  • Let users add reproduction steps, preview exactly what categories and files are included, export through the native platform flow, and clear stored diagnostics.
  • Include app and package version, operating-system family and version, architecture, relevant feature state, and recent event sequence without stable device fingerprints.
  • Keep reports local until the user explicitly exports them. Do not add automatic upload or telemetry.
  • Cover redaction bypass attempts, bounds, rotation, concurrent writers, interrupted persistence, export contents, and representative subsystem failures with deterministic tests.
  • Provide accessible Android and desktop UI states for empty history, export progress, success, cancellation, and failure.

Related work

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:platformAndroid, desktop, iOS, Windows, macOS, and Linux platform workarea:uxNavigation, accessibility, responsive design, and interactionplatform:androidAndroid-specific implementation or validationplatform:desktopDesktop-specific implementation or validationpriority:P1Required for the pre-release product experiencetype:featureNew product capabilitytype:reliabilityCorrectness, crash prevention, recovery, and data safety

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions