diff --git a/HellionChat/Resources/HellionStrings.Designer.cs b/HellionChat/Resources/HellionStrings.Designer.cs
index e2b1f74..a6910a7 100644
--- a/HellionChat/Resources/HellionStrings.Designer.cs
+++ b/HellionChat/Resources/HellionStrings.Designer.cs
@@ -380,6 +380,8 @@ internal class HellionStrings
internal static string Settings_Section_Retention => Get(nameof(Settings_Section_Retention));
internal static string Settings_Section_Cleanup => Get(nameof(Settings_Section_Cleanup));
internal static string Settings_Section_Export => Get(nameof(Settings_Section_Export));
+ internal static string Settings_Section_Telemetry => Get(nameof(Settings_Section_Telemetry));
+ internal static string Settings_Telemetry_None => Get(nameof(Settings_Telemetry_None));
internal static string Settings_Section_Database => Get(nameof(Settings_Section_Database));
// Hellion Chat — v1.2.1 Migration v15 → v16 toast
diff --git a/HellionChat/Resources/HellionStrings.ca.resx b/HellionChat/Resources/HellionStrings.ca.resx
index b445e98..13dfaa5 100644
--- a/HellionChat/Resources/HellionStrings.ca.resx
+++ b/HellionChat/Resources/HellionStrings.ca.resx
@@ -1187,4 +1187,10 @@
No s'ha pogut esborrar l'historial. No s'ha eliminat res, consulta /xllog.
+
+ Telemetria
+
+
+ No es recull cap telemetria. El complement no envia res sobre tu ni sobre el teu ús enlloc.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.cs.resx b/HellionChat/Resources/HellionStrings.cs.resx
index 287615b..434ff9d 100644
--- a/HellionChat/Resources/HellionStrings.cs.resx
+++ b/HellionChat/Resources/HellionStrings.cs.resx
@@ -1186,4 +1186,10 @@
Vymazání historie selhalo. Nic nebylo odstraněno, viz /xllog.
+
+ Telemetrie
+
+
+ Nesbírá se žádná telemetrie. Plugin nikam neposílá nic o vás ani o vašem používání.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.da.resx b/HellionChat/Resources/HellionStrings.da.resx
index 6f31c30..dc811a0 100644
--- a/HellionChat/Resources/HellionStrings.da.resx
+++ b/HellionChat/Resources/HellionStrings.da.resx
@@ -1186,4 +1186,10 @@
Sletning af historikken mislykkedes. Intet blev fjernet, se /xllog.
+
+ Telemetri
+
+
+ Der indsamles ingen telemetri. Pluginet sender intet om dig eller din brug nogen steder.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.de.resx b/HellionChat/Resources/HellionStrings.de.resx
index a3a7f54..b67c823 100644
--- a/HellionChat/Resources/HellionStrings.de.resx
+++ b/HellionChat/Resources/HellionStrings.de.resx
@@ -1181,4 +1181,10 @@
Das Löschen des Verlaufs ist fehlgeschlagen. Es wurde nichts entfernt, siehe /xllog.
+
+ Telemetrie
+
+
+ Es wird keine Telemetrie erhoben. Das Plugin sendet nichts über dich oder deine Nutzung irgendwohin.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.el.resx b/HellionChat/Resources/HellionStrings.el.resx
index b818787..4da4420 100644
--- a/HellionChat/Resources/HellionStrings.el.resx
+++ b/HellionChat/Resources/HellionStrings.el.resx
@@ -1186,4 +1186,10 @@
Η διαγραφή του ιστορικού απέτυχε. Δεν αφαιρέθηκε τίποτα, δείτε /xllog.
+
+ Τηλεμετρία
+
+
+ Δεν συλλέγεται τηλεμετρία. Το πρόσθετο δεν στέλνει πουθενά τίποτα για εσάς ή τη χρήση σας.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.es.resx b/HellionChat/Resources/HellionStrings.es.resx
index 9f44dd6..71befcd 100644
--- a/HellionChat/Resources/HellionStrings.es.resx
+++ b/HellionChat/Resources/HellionStrings.es.resx
@@ -1187,4 +1187,10 @@
No se pudo borrar el historial. No se eliminó nada, consulta /xllog.
+
+ Telemetría
+
+
+ No se recopila telemetría. El complemento no envía nada sobre ti ni sobre tu uso a ninguna parte.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.fi.resx b/HellionChat/Resources/HellionStrings.fi.resx
index a0a6f20..f30b33f 100644
--- a/HellionChat/Resources/HellionStrings.fi.resx
+++ b/HellionChat/Resources/HellionStrings.fi.resx
@@ -1186,4 +1186,10 @@
Historian tyhjennys epäonnistui. Mitään ei poistettu, katso /xllog.
+
+ Telemetria
+
+
+ Telemetriaa ei kerätä. Lisäosa ei lähetä mitään sinusta tai käytöstäsi minnekään.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.fr.resx b/HellionChat/Resources/HellionStrings.fr.resx
index 81dd5f0..98e7e99 100644
--- a/HellionChat/Resources/HellionStrings.fr.resx
+++ b/HellionChat/Resources/HellionStrings.fr.resx
@@ -1187,4 +1187,10 @@
L'effacement de l'historique a échoué. Rien n'a été supprimé, voir /xllog.
+
+ Télémétrie
+
+
+ Aucune télémétrie n'est collectée. Le plugin n'envoie rien vous concernant ni sur votre utilisation.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.hu.resx b/HellionChat/Resources/HellionStrings.hu.resx
index 8e023c9..39e2de0 100644
--- a/HellionChat/Resources/HellionStrings.hu.resx
+++ b/HellionChat/Resources/HellionStrings.hu.resx
@@ -1186,4 +1186,10 @@
Az előzmények törlése nem sikerült. Semmi sem lett eltávolítva, lásd /xllog.
+
+ Telemetria
+
+
+ Nem gyűjtünk telemetriát. A bővítmény semmit sem küld rólad vagy a használatodról sehová.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.it.resx b/HellionChat/Resources/HellionStrings.it.resx
index f428f96..93a4e63 100644
--- a/HellionChat/Resources/HellionStrings.it.resx
+++ b/HellionChat/Resources/HellionStrings.it.resx
@@ -1187,4 +1187,10 @@
La cancellazione della cronologia non è riuscita. Non è stato rimosso nulla, vedi /xllog.
+
+ Telemetria
+
+
+ Non viene raccolta alcuna telemetria. Il plugin non invia nulla su di te o sul tuo utilizzo.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.ja.resx b/HellionChat/Resources/HellionStrings.ja.resx
index b5c0bd1..2d292a1 100644
--- a/HellionChat/Resources/HellionStrings.ja.resx
+++ b/HellionChat/Resources/HellionStrings.ja.resx
@@ -1187,4 +1187,10 @@
履歴の削除に失敗しました。何も削除されていません。/xllog を確認してください。
+
+ テレメトリ
+
+
+ テレメトリは収集していません。あなたや利用状況に関する情報をどこにも送信しません。
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.ko.resx b/HellionChat/Resources/HellionStrings.ko.resx
index 1e0302e..31809e0 100644
--- a/HellionChat/Resources/HellionStrings.ko.resx
+++ b/HellionChat/Resources/HellionStrings.ko.resx
@@ -1187,4 +1187,10 @@
기록 삭제에 실패했습니다. 아무것도 삭제되지 않았습니다. /xllog를 확인하세요.
+
+ 원격 측정
+
+
+ 원격 측정 정보를 수집하지 않습니다. 사용자나 사용 내역에 관한 어떤 정보도 전송하지 않습니다.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.nb.resx b/HellionChat/Resources/HellionStrings.nb.resx
index 3ddc5db..4269ae8 100644
--- a/HellionChat/Resources/HellionStrings.nb.resx
+++ b/HellionChat/Resources/HellionStrings.nb.resx
@@ -1186,4 +1186,10 @@
Sletting av historikken mislyktes. Ingenting ble fjernet, se /xllog.
+
+ Telemetri
+
+
+ Ingen telemetri samles inn. Programtillegget sender ingenting om deg eller bruken din noe sted.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.nl.resx b/HellionChat/Resources/HellionStrings.nl.resx
index aa8eb65..2d325b7 100644
--- a/HellionChat/Resources/HellionStrings.nl.resx
+++ b/HellionChat/Resources/HellionStrings.nl.resx
@@ -1187,4 +1187,10 @@
Het wissen van de geschiedenis is mislukt. Er is niets verwijderd, zie /xllog.
+
+ Telemetrie
+
+
+ Er wordt geen telemetrie verzameld. De plug-in stuurt niets over jou of je gebruik ergens heen.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.pl.resx b/HellionChat/Resources/HellionStrings.pl.resx
index 2381382..a0bddf8 100644
--- a/HellionChat/Resources/HellionStrings.pl.resx
+++ b/HellionChat/Resources/HellionStrings.pl.resx
@@ -1186,4 +1186,10 @@
Usuwanie historii nie powiodło się. Nic nie zostało usunięte, zobacz /xllog.
+
+ Telemetria
+
+
+ Nie zbieramy żadnej telemetrii. Wtyczka nigdzie nie wysyła informacji o tobie ani o twoim użytkowaniu.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.pt-BR.resx b/HellionChat/Resources/HellionStrings.pt-BR.resx
index aa86657..8bc2429 100644
--- a/HellionChat/Resources/HellionStrings.pt-BR.resx
+++ b/HellionChat/Resources/HellionStrings.pt-BR.resx
@@ -1187,4 +1187,10 @@
Falha ao apagar o histórico. Nada foi removido, veja /xllog.
+
+ Telemetria
+
+
+ Nenhuma telemetria é coletada. O plugin não envia nada sobre você ou seu uso para lugar nenhum.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.pt-PT.resx b/HellionChat/Resources/HellionStrings.pt-PT.resx
index 06c1334..57383ab 100644
--- a/HellionChat/Resources/HellionStrings.pt-PT.resx
+++ b/HellionChat/Resources/HellionStrings.pt-PT.resx
@@ -1186,4 +1186,10 @@
Falha ao apagar o histórico. Nada foi removido, consulte /xllog.
+
+ Telemetria
+
+
+ Não é recolhida qualquer telemetria. O plugin não envia nada sobre si ou sobre a sua utilização.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.resx b/HellionChat/Resources/HellionStrings.resx
index 9feaf9a..7cf4df6 100644
--- a/HellionChat/Resources/HellionStrings.resx
+++ b/HellionChat/Resources/HellionStrings.resx
@@ -1207,4 +1207,10 @@
Clearing the history failed. Nothing was removed, see /xllog.
+
+ Telemetry
+
+
+ No telemetry is collected. The plugin sends nothing about you or your usage anywhere.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.ro.resx b/HellionChat/Resources/HellionStrings.ro.resx
index ba41ca9..145c502 100644
--- a/HellionChat/Resources/HellionStrings.ro.resx
+++ b/HellionChat/Resources/HellionStrings.ro.resx
@@ -1187,4 +1187,10 @@
Ștergerea istoricului a eșuat. Nu a fost eliminat nimic, vezi /xllog.
+
+ Telemetrie
+
+
+ Nu se colectează telemetrie. Extensia nu trimite nimic despre tine sau despre utilizarea ta nicăieri.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.ru.resx b/HellionChat/Resources/HellionStrings.ru.resx
index 04c6f72..e7b8baf 100644
--- a/HellionChat/Resources/HellionStrings.ru.resx
+++ b/HellionChat/Resources/HellionStrings.ru.resx
@@ -1187,4 +1187,10 @@
Не удалось удалить историю. Ничего не было удалено, см. /xllog.
+
+ Телеметрия
+
+
+ Телеметрия не собирается. Плагин никуда не отправляет данные о вас или о вашем использовании.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.sv.resx b/HellionChat/Resources/HellionStrings.sv.resx
index b8e95b3..b8f5610 100644
--- a/HellionChat/Resources/HellionStrings.sv.resx
+++ b/HellionChat/Resources/HellionStrings.sv.resx
@@ -1187,4 +1187,10 @@
Raderingen av historiken misslyckades. Ingenting togs bort, se /xllog.
+
+ Telemetri
+
+
+ Ingen telemetri samlas in. Tillägget skickar ingenting om dig eller din användning någonstans.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.tr.resx b/HellionChat/Resources/HellionStrings.tr.resx
index 47dc6b3..07d3675 100644
--- a/HellionChat/Resources/HellionStrings.tr.resx
+++ b/HellionChat/Resources/HellionStrings.tr.resx
@@ -1186,4 +1186,10 @@
Geçmiş silinemedi. Hiçbir şey kaldırılmadı, /xllog kaydına bakın.
+
+ Telemetri
+
+
+ Hiçbir telemetri toplanmıyor. Eklenti sizinle veya kullanımınızla ilgili hiçbir şeyi hiçbir yere göndermiyor.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.uk.resx b/HellionChat/Resources/HellionStrings.uk.resx
index 51d3331..93695bb 100644
--- a/HellionChat/Resources/HellionStrings.uk.resx
+++ b/HellionChat/Resources/HellionStrings.uk.resx
@@ -1186,4 +1186,10 @@
Не вдалося видалити історію. Нічого не було видалено, див. /xllog.
+
+ Телеметрія
+
+
+ Телеметрія не збирається. Плагін нікуди не надсилає дані про вас або про ваше використання.
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.zh-Hans.resx b/HellionChat/Resources/HellionStrings.zh-Hans.resx
index a069fac..e62ce07 100644
--- a/HellionChat/Resources/HellionStrings.zh-Hans.resx
+++ b/HellionChat/Resources/HellionStrings.zh-Hans.resx
@@ -1187,4 +1187,10 @@
清空历史记录失败。没有删除任何内容,请查看 /xllog。
+
+ 遥测
+
+
+ 不收集任何遥测数据。插件不会向任何地方发送关于你或你使用情况的信息。
+
\ No newline at end of file
diff --git a/HellionChat/Resources/HellionStrings.zh-Hant.resx b/HellionChat/Resources/HellionStrings.zh-Hant.resx
index 5ba3eed..1baea38 100644
--- a/HellionChat/Resources/HellionStrings.zh-Hant.resx
+++ b/HellionChat/Resources/HellionStrings.zh-Hant.resx
@@ -1187,4 +1187,10 @@
清除歷史紀錄失敗。沒有刪除任何內容,請查看 /xllog。
+
+ 遙測
+
+
+ 不收集任何遙測資料。外掛不會向任何地方傳送關於你或你使用情況的資訊。
+
\ No newline at end of file
diff --git a/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs b/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs
index a9e293a..a889602 100644
--- a/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs
+++ b/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs
@@ -186,7 +186,7 @@ internal sealed class DataPrivacyTab
_w.ToggleRow(
ImGui.GetID("privacy.filter.unknown"u8),
HellionStrings.Privacy_PersistUnknown_Name,
- null,
+ HellionStrings.Privacy_PersistUnknown_Description,
() => Plugin.Config.PrivacyPersistUnknownChannels,
v => Plugin.Config.PrivacyPersistUnknownChannels = v
);
@@ -226,11 +226,18 @@ internal sealed class DataPrivacyTab
if (dbOpen)
DrawDatabaseSection();
- if (_w.Section(ImGui.GetID("privacy.telemetry"u8), "Telemetry", open: false))
+ if (
+ _w.Section(
+ ImGui.GetID("privacy.telemetry"u8),
+ HellionStrings.Settings_Section_Telemetry,
+ open: false
+ )
+ )
{
- // Read-only placeholder; no telemetry is wired in v1.7.0. Do not
- // promote this to a toggle without an explicit Sub-Spec change.
- ImGui.TextUnformatted("No telemetry is collected.");
+ // Read-only statement, not a switch. Do not promote it to one
+ // without an explicit Sub-Spec change: a toggle implies there is
+ // something to turn off.
+ ImGuiUtil.HelpText(HellionStrings.Settings_Telemetry_None);
}
}
@@ -1331,33 +1338,79 @@ internal sealed class DataPrivacyTab
WrapperUtil.AddNotification(message, type);
}
+ // The one control that decides what reaches the database, so it is worth
+ // being usable. Eighty-nine checkboxes in one flat run is not; the same
+ // eight groups the export uses carry it, with the individual channels one
+ // fold away for the cases that need them.
private void DrawPrivacyPersistChannelsGrid()
{
- // HashSet: iterate Enum.GetValues() for stable
- // display order (HashSet itself has none); toggle membership via
- // Contains/Add/Remove.
- ImGui.TextUnformatted("Persist channels:");
- foreach (var ct in Enum.GetValues())
+ ImGuiUtil.HelpText(HellionStrings.Privacy_Whitelist_Help);
+ ImGuiUtil.HelpText(HellionStrings.Privacy_FilterEnabled_StorageOnly_Help);
+
+ ImGui.Spacing();
+ if (ImGui.Button(HellionStrings.Privacy_Preset_PrivacyFirst))
+ ApplyPersistPreset(PrivacyDefaults.PrivacyFirstWhitelist);
+ ImGui.SameLine();
+ if (ImGui.Button(HellionStrings.Privacy_Preset_SelectAll))
+ ApplyPersistPreset(EnumValues.All);
+ ImGui.SameLine();
+ if (ImGui.Button(HellionStrings.Privacy_Preset_ClearAll))
+ ApplyPersistPreset([]);
+
+ ImGui.Spacing();
+
+ for (var i = 0; i < ChannelGroups.All.Length; i++)
{
- var label = ct.ToString();
- var present = Plugin.Config.PrivacyPersistChannels.Contains(ct);
- if (ImGui.Checkbox($"{label}##privacy-persist-{label}", ref present))
+ var (heading, types) = ChannelGroups.All[i];
+
+ var picked = 0;
+ foreach (var type in types)
+ if (Plugin.Config.PrivacyPersistChannels.Contains(type))
+ picked++;
+
+ // ### keeps the node's identity while the visible count changes and
+ // while the language changes; without it every tick would collapse
+ // the fold the user just opened.
+ using var tree = ImRaii.TreeNode(
+ $"{heading()} ({picked}/{types.Length})###hc-persist-group-{i}"
+ );
+ if (!tree.Success)
+ continue;
+
+ foreach (var type in types)
{
+ var present = Plugin.Config.PrivacyPersistChannels.Contains(type);
+
+ // Name(), not ToString(): the enum member is an identifier, and
+ // this list showed "FreeCompanyLoginLogout" in every language
+ // while the translated channel name sat unused next to it.
+ if (!ImGui.Checkbox($"{type.Name()}##privacy-persist-{(int)type}", ref present))
+ continue;
+
// Lock closes before SaveConfig: taking ConfigMapsLock across a save
// would invert the lock order (SaveConfig can reach TabsListLock).
lock (_plugin.ConfigMapsLock)
{
if (present)
- {
- Plugin.Config.PrivacyPersistChannels.Add(ct);
- }
+ Plugin.Config.PrivacyPersistChannels.Add(type);
else
- {
- Plugin.Config.PrivacyPersistChannels.Remove(ct);
- }
+ Plugin.Config.PrivacyPersistChannels.Remove(type);
}
+
_plugin.SaveConfig();
}
}
}
+
+ private void ApplyPersistPreset(IReadOnlyCollection types)
+ {
+ lock (_plugin.ConfigMapsLock)
+ {
+ Plugin.Config.PrivacyPersistChannels.Clear();
+ foreach (var type in types)
+ Plugin.Config.PrivacyPersistChannels.Add(type);
+ }
+
+ _plugin.SaveConfig();
+ }
}