build: rename repository folder ChatTwo to HellionChat
Repository folder, csproj, solution and all CI/build paths now use
the consolidated HellionChat name.
- ChatTwo/ → HellionChat/ (git mv preserves history with --follow)
- ChatTwo.csproj → HellionChat.csproj
- ChatTwo.sln → HellionChat.sln; obsolete Tests project entry removed
(private/untracked sandbox)
- AssemblyInfo.cs InternalsVisibleTo for ChatTwo.Tests removed
(file emptied; can be repopulated when actual tests land)
- repo.json and yaml image URLs updated (ChatTwo/images/ → HellionChat/images/)
- .github/workflows/{build,codeql,release}.yml csproj paths
- .github/dependabot.yml directory path
Functional behavior unchanged.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
using HellionChat.Code;
|
||||
|
||||
namespace HellionChat.Privacy;
|
||||
|
||||
internal static class PrivacyDefaults
|
||||
{
|
||||
// Privacy-First default whitelist (DSGVO Art. 25 - Privacy by Default).
|
||||
// Only the player's own conversations are persisted out-of-the-box.
|
||||
// Public chat (Say/Shout/Yell), Novice Network, NPC dialogue, system
|
||||
// logs and battle messages are NOT persisted unless the user opts in.
|
||||
internal static readonly IReadOnlySet<ChatType> PrivacyFirstWhitelist = new HashSet<ChatType>
|
||||
{
|
||||
ChatType.TellIncoming,
|
||||
ChatType.TellOutgoing,
|
||||
ChatType.Party,
|
||||
ChatType.CrossParty,
|
||||
ChatType.Alliance,
|
||||
ChatType.FreeCompany,
|
||||
ChatType.Linkshell1,
|
||||
ChatType.Linkshell2,
|
||||
ChatType.Linkshell3,
|
||||
ChatType.Linkshell4,
|
||||
ChatType.Linkshell5,
|
||||
ChatType.Linkshell6,
|
||||
ChatType.Linkshell7,
|
||||
ChatType.Linkshell8,
|
||||
ChatType.CrossLinkshell1,
|
||||
ChatType.CrossLinkshell2,
|
||||
ChatType.CrossLinkshell3,
|
||||
ChatType.CrossLinkshell4,
|
||||
ChatType.CrossLinkshell5,
|
||||
ChatType.CrossLinkshell6,
|
||||
ChatType.CrossLinkshell7,
|
||||
ChatType.CrossLinkshell8,
|
||||
ChatType.ExtraChatLinkshell1,
|
||||
ChatType.ExtraChatLinkshell2,
|
||||
ChatType.ExtraChatLinkshell3,
|
||||
ChatType.ExtraChatLinkshell4,
|
||||
ChatType.ExtraChatLinkshell5,
|
||||
ChatType.ExtraChatLinkshell6,
|
||||
ChatType.ExtraChatLinkshell7,
|
||||
ChatType.ExtraChatLinkshell8,
|
||||
};
|
||||
|
||||
// Default retention windows per channel (in days). Channels not listed
|
||||
// here fall back to Configuration.RetentionDefaultDays. Reflects the
|
||||
// design spec: Tells 365, own-conversation channels 90, everything else
|
||||
// shorter via the global default.
|
||||
internal static readonly IReadOnlyDictionary<ChatType, int> DefaultRetentionDays = new Dictionary<ChatType, int>
|
||||
{
|
||||
[ChatType.TellIncoming] = 365,
|
||||
[ChatType.TellOutgoing] = 365,
|
||||
|
||||
[ChatType.Party] = 90,
|
||||
[ChatType.CrossParty] = 90,
|
||||
[ChatType.Alliance] = 90,
|
||||
[ChatType.PvpTeam] = 90,
|
||||
[ChatType.FreeCompany] = 90,
|
||||
|
||||
[ChatType.Linkshell1] = 90,
|
||||
[ChatType.Linkshell2] = 90,
|
||||
[ChatType.Linkshell3] = 90,
|
||||
[ChatType.Linkshell4] = 90,
|
||||
[ChatType.Linkshell5] = 90,
|
||||
[ChatType.Linkshell6] = 90,
|
||||
[ChatType.Linkshell7] = 90,
|
||||
[ChatType.Linkshell8] = 90,
|
||||
|
||||
[ChatType.CrossLinkshell1] = 90,
|
||||
[ChatType.CrossLinkshell2] = 90,
|
||||
[ChatType.CrossLinkshell3] = 90,
|
||||
[ChatType.CrossLinkshell4] = 90,
|
||||
[ChatType.CrossLinkshell5] = 90,
|
||||
[ChatType.CrossLinkshell6] = 90,
|
||||
[ChatType.CrossLinkshell7] = 90,
|
||||
[ChatType.CrossLinkshell8] = 90,
|
||||
|
||||
[ChatType.ExtraChatLinkshell1] = 90,
|
||||
[ChatType.ExtraChatLinkshell2] = 90,
|
||||
[ChatType.ExtraChatLinkshell3] = 90,
|
||||
[ChatType.ExtraChatLinkshell4] = 90,
|
||||
[ChatType.ExtraChatLinkshell5] = 90,
|
||||
[ChatType.ExtraChatLinkshell6] = 90,
|
||||
[ChatType.ExtraChatLinkshell7] = 90,
|
||||
[ChatType.ExtraChatLinkshell8] = 90,
|
||||
};
|
||||
|
||||
// Casual profile = Privacy-First plus public chat (Say/Shout/Yell, both
|
||||
// emote types, Novice Network), kept for a short 24-hour window so the
|
||||
// last RP scene or shout trade is still searchable but third-party data
|
||||
// doesn't accumulate forever.
|
||||
internal static readonly IReadOnlySet<ChatType> CasualWhitelist = new HashSet<ChatType>(PrivacyFirstWhitelist)
|
||||
{
|
||||
ChatType.Say,
|
||||
ChatType.Shout,
|
||||
ChatType.Yell,
|
||||
ChatType.CustomEmote,
|
||||
ChatType.StandardEmote,
|
||||
ChatType.NoviceNetwork,
|
||||
};
|
||||
|
||||
internal static readonly IReadOnlyDictionary<ChatType, int> CasualRetentionOverrides = new Dictionary<ChatType, int>
|
||||
{
|
||||
[ChatType.Say] = 1,
|
||||
[ChatType.Shout] = 1,
|
||||
[ChatType.Yell] = 1,
|
||||
[ChatType.CustomEmote] = 1,
|
||||
[ChatType.StandardEmote] = 1,
|
||||
[ChatType.NoviceNetwork] = 1,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user