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(); + } }