From ac6e8375600fc11899404d99f904e9b4371f7424 Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:03:29 +0200 Subject: [PATCH] docs: describe bug reports instead of telemetry Update the site privacy policy (no telemetry/analytics, bug-report only, v1.2) and the README/apple README to reflect that only user-submitted bug reports remain. --- README.md | 10 +++--- apple/README.md | 6 ++-- docs/app/privacy/page.tsx | 67 ++++++++++++++++----------------------- 3 files changed, 36 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 395adf5..2b33bf9 100644 --- a/README.md +++ b/README.md @@ -127,18 +127,18 @@ people, especially when using **Anyone with this transfer**. - Native SwiftUI apps on iOS, iPadOS, and macOS; Compose apps on Android, Windows, and Linux - Strict custom HTTPS relay profiles with safe apply and rollback -- Opt-in diagnostics with transfer contents, invitations, and file paths - excluded +- Optional user-submitted bug reports with transfer contents, invitations, and + file paths excluded ## Privacy by design -- **No hosted transfer copy.** VniDrop does not upload file contents to its - diagnostics service or a VniDrop storage bucket. +- **No hosted transfer copy.** VniDrop does not upload file contents to a bug-report + service or a VniDrop storage bucket. - **Encrypted in transit.** Iroh connections are authenticated and encrypted end to end, including when a relay is needed. - **Local control.** Transfer history and sharing state stay on the device. - **Sensitive invitations.** An invitation can grant access, so it is - deliberately excluded from product logs and diagnostics. + deliberately excluded from product logs and bug reports. - **Explicit access.** Approval is required by default, and stopping a share removes access immediately. diff --git a/apple/README.md b/apple/README.md index 008ece4..6048bb7 100644 --- a/apple/README.md +++ b/apple/README.md @@ -114,7 +114,7 @@ The Rust core (iroh network stack) links `SystemConfiguration`, `Security`, and Screens mirror the Compose UI in `shared/`. Two deliberate simplifications: - Empty-state Lottie animations are rendered as SF Symbols (no `lottie-ios` dependency); swap in `lottie-ios` if exact-parity animation is required. -- The full diagnostics/telemetry stack (`diagnostics/*`) is stubbed behind - `BugReportService` / `DiagnosticsBuildConfig` and lands in a later phase; the UI - hides the diagnostics toggle when not compiled in. +- Bug reporting is stubbed behind `BugReportService` (`NoopBugReportService`) and + a real transport lands in a later phase. There is no telemetry or crash + auto-reporting. ``` diff --git a/docs/app/privacy/page.tsx b/docs/app/privacy/page.tsx index 575983e..944690d 100644 --- a/docs/app/privacy/page.tsx +++ b/docs/app/privacy/page.tsx @@ -3,14 +3,14 @@ import type { Metadata } from "next"; export const metadata: Metadata = { title: "Privacy policy", description: - "How VniDrop handles transfers, local app data, optional diagnostics, bug reports, and website visits.", + "How VniDrop handles transfers, local app data, optional bug reports, and website visits.", }; const sections = [ ["scope", "Scope"], ["transfers", "Transfers"], ["local-data", "Local data"], - ["diagnostics", "Diagnostics"], + ["bug-reports", "Bug reports"], ["website", "Website"], ["permissions", "Permissions"], ["providers", "Service providers"], @@ -29,9 +29,9 @@ export default function PrivacyPage() {

Privacy Policy

This policy explains what moves between devices, what stays local, and what is sent - only when you choose to share diagnostics or a bug report. + only when you choose to submit a bug report.

-

Effective July 16, 2026 · Version 1.1

+

Effective August 2, 2026 · Version 1.2

@@ -56,7 +56,7 @@ export default function PrivacyPage() {

VniDrop has no user accounts and does not upload your transfer to a VniDrop file store. Files travel over an authenticated, end-to-end encrypted connection. - Product diagnostics are opt-in; a bug report is sent only when you submit one. + VniDrop has no telemetry or analytics; a bug report is sent only when you submit one.

@@ -64,7 +64,7 @@ export default function PrivacyPage() {

Scope and who “VniDrop” means

This policy covers the official VniDrop website, the VniDrop applications for - Android, iOS, macOS, Windows, and Linux, and the diagnostics service configured by + Android, iOS, macOS, Windows, and Linux, and the bug-report service configured by the official project. For an official release, VniDrop’s data controller is the individual publisher named in the applicable app-store listing. In this policy, “VniDrop,” “we,” and “us” also include the maintainers acting on that publisher’s @@ -72,7 +72,7 @@ export default function PrivacyPage() {

VniDrop is open-source software. A build distributed or operated by someone else - may use different networking infrastructure, diagnostics settings, or website + may use different networking infrastructure, bug-report settings, or website hosting. That distributor is responsible for explaining its own practices.

@@ -117,9 +117,9 @@ export default function PrivacyPage() {

This information remains until you remove the relevant history, stop or delete a @@ -129,33 +129,27 @@ export default function PrivacyPage() {

-
-

Optional diagnostics and bug reports

-

Automatic product diagnostics

+
+

Optional bug reports

- Official releases indicate in the app settings whether automatic product - diagnostics are included. When included, automatic usage events and crash reports - are disabled until you enable “Share diagnostics.” If enabled, VniDrop may send an - anonymous installation ID, app version, platform, sparse event names and properties, - crash type and message, a redacted stack trace, timestamps, and recent in-app - breadcrumbs. You can turn this off at any time; doing so also removes pending local - crash reports. + VniDrop has no automatic telemetry, usage analytics, or crash auto-reporting. + Nothing is sent to a bug-report service unless you explicitly submit a report.

User-submitted bug reports

- A bug report is separate from the diagnostics toggle and is sent only when you press - submit. It can contain what you say happened, what you expected, reproduction steps, - an optional contact email, app and platform versions, an anonymous installation ID, - device name and model, operating system, network and battery information, recent - breadcrumbs, and optional recent logs. You can exclude logs before submitting. + A bug report is sent only when you press submit. It can contain what you say + happened, what you expected, reproduction steps, an optional contact email, app and + platform versions, an anonymous installation ID, device name and model, operating + system, network and battery information, and optional recent logs. You can exclude + logs before submitting.

Data deliberately excluded

- Automatic diagnostics are designed to exclude transfer contents, invitations, and - file paths. Before diagnostic text or optional logs are sent, VniDrop applies rules - intended to redact invitation tokens, endpoint identifiers, absolute paths, file and - content URIs, and platform document identifiers. No redaction system is perfect, so - review anything you type into a bug report and avoid including secrets. + Bug reports are designed to exclude transfer contents, invitations, and file paths. + Before optional logs are sent, VniDrop applies rules intended to redact invitation + tokens, endpoint identifiers, absolute paths, file and content URIs, and platform + document identifiers. No redaction system is perfect, so review anything you type + into a bug report and avoid including secrets.

@@ -223,7 +217,7 @@ export default function PrivacyPage() {
Cloudflare
Proxies website requests and provides DNS, security, and abuse controls. When - the optional diagnostics service is configured, it uses Cloudflare Workers, D1, + the optional bug-report service is configured, it uses Cloudflare Workers, D1, and R2.
@@ -300,11 +294,7 @@ export default function PrivacyPage() { Until you delete them, clear app data, or uninstall - Pending local crash reports - Up to 30 days and 20 reports; deleted when diagnostics is disabled - - - Server diagnostics and bug reports + Server bug reports The current project configuration is 90 days, with scheduled deletion @@ -317,7 +307,7 @@ export default function PrivacyPage() {

Operational backups, provider logs, and deletion backlogs may persist briefly beyond the stated period where necessary for security, integrity, or legal obligations. If - the production diagnostics retention configuration changes, this policy should be + the production bug-report retention configuration changes, this policy should be updated to match it.

@@ -325,7 +315,6 @@ export default function PrivacyPage() {

Your choices and rights