From f56b96876844ce992922329ad165b80104b03791 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Mon, 18 May 2026 19:02:54 +0200 Subject: [PATCH] feat(privacy): add Roleplay profile defaults to PrivacyDefaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds RoleplayWhitelist (PrivacyFirst + Say + both emote types) and RoleplayRetentionOverrides (Say 30d, emotes 90d). Shout/Yell and Novice Network stay out — public-distance noise from strangers is not story content. Whitelist + overrides are IReadOnlySet / IReadOnlyDictionary with pure-helper type footprint, so the Build Suite can pin them without touching Dalamud. --- HellionChat/Privacy/PrivacyDefaults.cs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/HellionChat/Privacy/PrivacyDefaults.cs b/HellionChat/Privacy/PrivacyDefaults.cs index ae5f569..22f5c17 100644 --- a/HellionChat/Privacy/PrivacyDefaults.cs +++ b/HellionChat/Privacy/PrivacyDefaults.cs @@ -114,4 +114,29 @@ internal static class PrivacyDefaults [ChatType.StandardEmote] = 1, [ChatType.NoviceNetwork] = 1, }; + + // Roleplay: Privacy-First + Say + both emote types. Public-distance + // channels (Shout, Yell) stay out — they are public-noise from + // strangers, not story content. Novice Network also stays out; + // it is not RP-adjacent and would dilute the profile's intent. + internal static readonly IReadOnlySet RoleplayWhitelist = new HashSet( + PrivacyFirstWhitelist + ) + { + ChatType.Say, + ChatType.CustomEmote, + ChatType.StandardEmote, + }; + + // RP sessions function as story logs: Say + emotes need a longer + // window than Casual's 1-day public-chat window. 30 days for Say + // keeps in-character dialogue scrollable across multiple sessions, + // 90 days for emotes mirrors the Privacy-First conversation default. + internal static readonly IReadOnlyDictionary RoleplayRetentionOverrides = + new Dictionary + { + [ChatType.Say] = 30, + [ChatType.CustomEmote] = 90, + [ChatType.StandardEmote] = 90, + }; }