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() {
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() {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() {
-- 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.
- 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.
- 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.
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() {Depending on where you live, privacy law may provide rights to access, correct, delete, restrict, or object to processing of personal information. Because VniDrop - has no account and automatic diagnostics use an anonymous installation ID, we may + has no account and bug reports use an anonymous installation ID, we may not be able to connect a server record to you without additional information. Use the contact method below and provide only what is needed to locate your submission.
@@ -353,7 +342,7 @@ export default function PrivacyPage() {VniDrop uses authenticated end-to-end encrypted connections, content verification, - deny-by-default share access, bounded diagnostics payloads, redaction, and safe file + deny-by-default share access, bounded bug-report payloads, redaction, and safe file publishing that avoids silently replacing an existing file. No system can guarantee absolute security. Keep invitations private, verify receiver names, keep your device updated, and stop sharing when a transfer is finished.