Repository navigation
feat(platform): integrate Obiente support intake #351
Copy link
Copy link
Open
Labels
area:platformAndroid, desktop, iOS, Windows, macOS, and Linux platform workAndroid, desktop, iOS, Windows, macOS, and Linux platform workarea:releaseBuilds, CI, security, packaging, and releasesBuilds, CI, security, packaging, and releasesarea:uxNavigation, accessibility, responsive design, and interactionNavigation, accessibility, responsive design, and interactionplatform:androidAndroid-specific implementation or validationAndroid-specific implementation or validationplatform:desktopDesktop-specific implementation or validationDesktop-specific implementation or validationpriority:P1Required for the pre-release product experienceRequired for the pre-release product experiencetype:featureNew product capabilityNew product capabilitytype:reliabilityCorrectness, crash prevention, recovery, and data safetyCorrectness, crash prevention, recovery, and data safetytype:securityAuthentication, privacy, secrets, or data protectionAuthentication, privacy, secrets, or data protection
Milestone
Description
User problem
Exporting a ZIP leaves Nextcloud Native users with a file they cannot act on unless they already know where and how to send it. Users should be able to send the existing bounded, anonymized report directly from Diagnostics without first downloading or locating a file.
Outcome
Integrate Nextcloud Native with the product-neutral support portal and private intake service tracked in Obiente/support#1.
The shared service must support every registered Obiente product. This issue owns only the Nextcloud Native client integration and must not introduce a Nextcloud Native-specific backend.
Keep Save a copy available for users who prefer to inspect or share the archive themselves.
User experience
- Show the existing report summary, included files, recent sanitized events, and optional reproduction steps before submission.
- Explain what is sent, that it goes to Obiente Support, how long it is retained, and that submission happens only after confirmation.
- Generate and upload the report from app-private temporary storage without requiring a file picker or downloaded ZIP.
- Show packaging and upload progress, allow cancellation, and distinguish retryable network failures from permanent rejection.
- After success, show the support code and private status link returned by the shared service.
- Never submit automatically, in the background, during a crash, or as telemetry.
Client requirements
- Use the versioned, product-neutral intake API defined by feat: build the Obiente support portal and private intake support#1.
- Reuse the current sanitizer and bundle generator; submission must not introduce a less-redacted payload path.
- Keep the current 4 MiB archive limit.
- Send only registered product identity, release/platform metadata, user-approved reproduction steps, and the generated report.
- Do not send Nextcloud account identity, server URL, credentials, filenames, file contents, or a stable device fingerprint.
- Write the bundle to an app-private temporary file, stream it with bounded memory, and remove it after success, cancellation, or terminal failure.
- Preserve cancellation and retry state across the relevant Android and desktop lifecycle.
- Treat an unknown upload outcome as ambiguous and reconcile it by idempotency key before retrying.
- Keep Save a copy behavior and local diagnostic-history clearing intact.
- Record only privacy-safe submission lifecycle events; never record the intake capability, status link, receipt secret, or report contents.
Acceptance criteria
- Android and desktop can review, confirm, send, cancel, retry safely, and copy the returned support code.
- No downloaded or user-selected ZIP is required for direct submission.
- Submission never occurs without explicit confirmation.
- Network interruption and an ambiguous response do not duplicate a report.
- Temporary client files are removed after every terminal outcome.
- The privacy notice and confirmation accurately describe contents, destination, and retention.
- Existing local export, redaction, bounds, and transport-classification tests remain green.
- Contract tests use the shared service schema and synthetic fixtures.
- Relevant Android, desktop, lifecycle, accessibility, and repository-hygiene checks pass.
Dependencies
- feat: build the Obiente support portal and private intake support#1 provides the generic portal, private intake API, receipts, moderation, retention, and maintainer workflow.
- Builds on feat(platform): export anonymized app diagnostics #317 and fix(platform): classify transport failures in support reports #339.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:platformAndroid, desktop, iOS, Windows, macOS, and Linux platform workAndroid, desktop, iOS, Windows, macOS, and Linux platform workarea:releaseBuilds, CI, security, packaging, and releasesBuilds, CI, security, packaging, and releasesarea:uxNavigation, accessibility, responsive design, and interactionNavigation, accessibility, responsive design, and interactionplatform:androidAndroid-specific implementation or validationAndroid-specific implementation or validationplatform:desktopDesktop-specific implementation or validationDesktop-specific implementation or validationpriority:P1Required for the pre-release product experienceRequired for the pre-release product experiencetype:featureNew product capabilityNew product capabilitytype:reliabilityCorrectness, crash prevention, recovery, and data safetyCorrectness, crash prevention, recovery, and data safetytype:securityAuthentication, privacy, secrets, or data protectionAuthentication, privacy, secrets, or data protection
Type
Projects
- StatusShow more project fieldsTodo
Activity
[-]feat(platform): send anonymized diagnostics from the app[/-][+]feat(platform): integrate Obiente support intake[/+]