Files
HellionChat/ChatTwo/Ui/SettingsTabs/About.cs
T
JonKazama-Hellion 462530dec5 Add a mission statement to the About tab
The About tab already credits Chat 2 and the maintainers, but it
never said why this fork exists in the first place. New users
discovering Hellion Chat through the Dalamud plugin list could
reasonably read it as a replacement attempt rather than what it is:
a niche alternative for users who care about chat persistence and
data minimisation.

The new "Why this fork exists" block sits between the Maintainer
and the Built-on-Chat-2 sections so the reading order goes from
"who" to "why" to "from what". It states three things plainly:

  - Hellion Chat is not trying to replace Chat 2
  - The trigger was the maintainer's own database (two years,
    two million messages, mostly public-chat from strangers)
  - Source is open under the same EUPL-1.2 licence; the upstream
    authors are welcome to look, take ideas, ask, or ignore

The tone matches the rest of the About tab — direct, no marketing
voice — and stays in English with the other legal-ish copy so a
single source covers every locale.
2026-05-02 03:40:57 +02:00

135 lines
6.8 KiB
C#
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Numerics;
using ChatTwo.Resources;
using ChatTwo.Util;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Bindings.ImGui;
namespace ChatTwo.Ui.SettingsTabs;
internal sealed class About : ISettingsTab
{
public string Name => string.Format(Language.Options_About_Tab, Plugin.PluginName) + "###tabs-about";
private readonly List<string> Translators =
[
"q673135110", "Akizem", "d0tiKs",
"Moonlight_Everlit", "Dark32", "andreycout",
"Button_", "Cali666", "cassandra308",
"lokinmodar", "jtabox", "AkiraYorumoto",
"MKhayle", "elena.space", "imlisa",
"andrei5125", "ShivaMaheshvara", "aislinn87",
"nishinatsu051", "lichuyuan", "Risu64",
"yummypillow", "witchymary", "Yuzumi",
"zomsakura", "Sirayuki"
];
internal About()
{
Translators.Sort((a, b) => string.Compare(a.ToLowerInvariant(), b.ToLowerInvariant(), StringComparison.Ordinal));
}
public void Draw(bool changed)
{
using var wrap = ImRaii.TextWrapPos(0.0f);
ImGui.TextUnformatted(string.Format(Language.Options_About_Opening, Plugin.PluginName));
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Authors);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, Plugin.Interface.Manifest.Author);
ImGui.TextUnformatted(Language.Options_About_Discord);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, "@j.j_kazama");
ImGui.TextUnformatted(Language.Options_About_Version);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedOrange, Plugin.Interface.Manifest.AssemblyVersion.ToString(3));
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Github_Issues);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "githubIssues"))
Dalamud.Utility.Util.OpenLink("https://github.com/JonKazama-Hellion/HellionChat/issues");
ImGuiHelpers.ScaledDummy(10.0f);
// Hellion-specific maintainer / attribution / license / SE-
// disclaimer block. Hand-rolled in English here rather than via
// HellionStrings — the legal-ish copy stays close to the EUPL-1.2
// wording and the SE disclaimer is the same in every locale.
ImGui.TextColored(ImGuiColors.ParsedGold, "Maintainer");
ImGui.TextUnformatted("Hellion Chat is maintained by Hellion Online Media (Florian Wathling).");
ImGui.TextUnformatted("Website:");
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "hellionMedia"))
Dalamud.Utility.Util.OpenLink("https://hellion-media.de");
ImGui.TextUnformatted("For licensing, legal or contact inquiries please reach out via the website above.");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, "Why this fork exists");
ImGui.TextUnformatted("Hellion Chat is not meant to replace Chat 2 — it is a niche alternative for users who want a privacy-by-default chat persistence layer aligned with EU, US and JP data protection rules.");
ImGui.TextUnformatted("The trigger was a personal one: a two-year Chat 2 database with over two million logged messages, the bulk of them /say, /shout and /yell from strangers in cities. Most plugin users do not mind that data sitting on their disk. I do, so this fork exists.");
ImGui.TextUnformatted("No big audience expected, no competition with the upstream plugin intended. The source is open under the same EUPL-1.2 licence as Chat 2 — Infi, Anna and anyone else are welcome to look at how this fork solves things, take ideas, ask questions or ignore it entirely. All three responses are fine.");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, "Built on Chat 2");
ImGui.TextUnformatted("Hellion Chat is a fork of Chat 2 by Infi and Anna (ascclemens).");
ImGui.TextUnformatted("Every chat replacement feature, the IPC integration, the rendering engine and the storage core come from upstream Chat 2.");
ImGui.TextUnformatted("The upstream webinterface is intentionally not part of Hellion Chat — it could not be hardened to the privacy guarantees this fork makes by default.");
ImGui.TextUnformatted("Upstream repository:");
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "chatTwoUpstream"))
Dalamud.Utility.Util.OpenLink("https://github.com/Infiziert90/ChatTwo");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, "License");
ImGui.TextUnformatted("Hellion Chat and Chat 2 are licensed under the European Union Public License v1.2 (EUPL-1.2).");
ImGui.TextUnformatted("© 20232026 the Chat 2 authors (Infi, Anna and the upstream contributors).");
ImGui.TextUnformatted("© 2026 Hellion Online Media — for the Hellion Chat additions.");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.DalamudOrange, "FINAL FANTASY XIV disclaimer");
ImGui.TextUnformatted("FINAL FANTASY XIV © SQUARE ENIX CO., LTD. All rights reserved.");
ImGui.TextUnformatted("Hellion Chat is an unofficial, fan-made plugin and is not affiliated with, endorsed, sponsored or approved by Square Enix.");
ImGui.Spacing();
ImGui.TextColored(ImGuiColors.ParsedGold, "Localization");
ImGui.TextUnformatted("German translations of Hellion-specific UI strings (HellionStrings.de.resx) are written by the Hellion Online Media maintainer.");
ImGui.TextUnformatted("All other locales for Hellion-specific strings are not currently provided.");
ImGui.TextUnformatted("The translator list below covers the upstream Chat 2 community translators on Crowdin — their work covers the inherited Chat 2 strings, not the Hellion additions.");
ImGui.Spacing();
var height = ImGui.GetContentRegionAvail().Y - ImGui.CalcTextSize("A").Y - ImGui.GetStyle().ItemSpacing.Y * 2;
using (var aboutChild = ImRaii.Child("about", new Vector2(-1, height)))
{
if (aboutChild)
{
using var treeNode = ImRaii.TreeNode("Chat 2 community translators (upstream)");
if (treeNode)
{
using var translatorChild = ImRaii.Child("translators");
if (translatorChild)
{
foreach (var translator in Translators)
ImGui.TextUnformatted(translator);
}
}
}
}
ImGui.Spacing();
}
}