diff --git a/HellionChat/Configuration.cs b/HellionChat/Configuration.cs index 5efebfd..d8bfd55 100755 --- a/HellionChat/Configuration.cs +++ b/HellionChat/Configuration.cs @@ -57,8 +57,12 @@ public class Configuration : IPluginConfiguration // Empty set means the migration has not run yet — see Plugin.cs v6→v7. public HashSet PrivacyPersistChannels = []; - // Failsafe for ChatTypes added by future FFXIV patches. - public bool PrivacyPersistUnknownChannels; + // Failsafe for ChatTypes added by future FFXIV patches. New configs default + // to the failsafe via PrivacyDefaults; existing configs keep their saved + // choice because the deserializer overrides this initializer. + public bool PrivacyPersistUnknownChannels = Privacy + .PrivacyDefaults + .DefaultPersistUnknownChannels; public bool IsAllowedForStorage(ChatType type) { diff --git a/HellionChat/Privacy/PrivacyDefaults.cs b/HellionChat/Privacy/PrivacyDefaults.cs index 2a3e503..ae5f569 100644 --- a/HellionChat/Privacy/PrivacyDefaults.cs +++ b/HellionChat/Privacy/PrivacyDefaults.cs @@ -4,6 +4,12 @@ namespace HellionChat.Privacy; internal static class PrivacyDefaults { + // F3.1: failsafe for ChatTypes added by future FFXIV patches. New installs + // persist unknown channels so a major patch's added ChatType isn't silently + // dropped before the user can opt in or out. Existing configs keep their + // explicit choice — see Configuration.cs PrivacyPersistUnknownChannels. + internal const bool DefaultPersistUnknownChannels = true; + // DSGVO Art. 25 (Privacy by Default): only the player's own conversations // are persisted out-of-the-box. Public chat, NPC dialogue, system logs and // battle messages require explicit opt-in.