diff --git a/src/backend/services/feedback/AppFeedbackService.ts b/src/backend/services/feedback/AppFeedbackService.ts index d40343243..0bd179a14 100644 --- a/src/backend/services/feedback/AppFeedbackService.ts +++ b/src/backend/services/feedback/AppFeedbackService.ts @@ -322,7 +322,8 @@ export class AppFeedbackService extends PuterService { // signup, never proven), so using it as Reply-To would let a sender // point the developer's reply at a stranger's inbox. Unverified // senders still get their feedback delivered, just without a - // reply path. The dialog tells the user their email will be shared. + // reply path. The dialog's privacy note mirrors this split (see + // app_feedback_privacy_note / app_feedback_privacy_note_no_email). const senderEmail = sender?.email && sender.email_confirmed ? sender.email : null; diff --git a/src/gui/src/UI/UIWindowAppFeedback.js b/src/gui/src/UI/UIWindowAppFeedback.js index 8fba932a4..f5cc3991a 100644 --- a/src/gui/src/UI/UIWindowAppFeedback.js +++ b/src/gui/src/UI/UIWindowAppFeedback.js @@ -59,6 +59,15 @@ async function UIWindowAppFeedback (options) { ? { app: options.app } : { origin: options.origin }; + // Mirror what AppFeedbackService actually shares: the username + // always, the sender's email only when it exists and is verified + // (unverified addresses get no Reply-To, so the developer cannot + // respond). The note must not promise either more or less. + const shares_email = Boolean(window.user?.email && window.user?.email_confirmed); + const privacy_note_key = shares_email + ? 'app_feedback_privacy_note' + : 'app_feedback_privacy_note_no_email'; + const titleId = `${modal_id}-title`; const h = `