diff --git a/pkg/service/handlers/web/index.html b/pkg/service/handlers/web/index.html
index c7b09fc..d2bef36 100644
--- a/pkg/service/handlers/web/index.html
+++ b/pkg/service/handlers/web/index.html
@@ -1511,6 +1511,19 @@
findings that may need attention. Quick fixes are offered
for issues the service knows how to remediate.
+
+ What does the diagnostic report contain?
+
+ - Health check results and current device state
+ - Device XML files from the datastore (no passwords)
+ - HTTP response samples from speaker endpoints
+ - System files: CA bundle, DNS resolver config
+ - Speaker CA bundle and kernel log (via SSH, if reachable)
+ - Service log tail
+ - Settings file with secrets redacted
+
+ The archive is encrypted with the project maintainer's public key — only they can open it.
+
Loading…
diff --git a/pkg/service/handlers/web/js/script.js b/pkg/service/handlers/web/js/script.js
index bcb2b32..bd5852b 100644
--- a/pkg/service/handlers/web/js/script.js
+++ b/pkg/service/handlers/web/js/script.js
@@ -4038,7 +4038,16 @@ async function downloadDiagnostic() {
document.body.removeChild(a);
URL.revokeObjectURL(url);
- if (statusEl) statusEl.textContent = `Downloaded: ${filename}`;
+ if (statusEl) {
+ const safe = filename.replace(/&/g, "&").replace(//g, ">");
+ statusEl.innerHTML =
+ `Downloaded: ${safe}
` +
+ `To share it, please prefer email: ` +
+ `aftertouch-support@gesellix.net. ` +
+ `Alternatively, open a GitHub issue ` +
+ `and attach the file renamed to ${safe}.txt ` +
+ `(GitHub blocks .age uploads; adding .txt works around that).`;
+ }
} catch (e) {
if (statusEl) statusEl.textContent = `Failed to download diagnostic: ${e.message || e}`;
}