# Hellion Chat **Version 0.1.2** — DSGVO-bewusste Erweiterung von [Chat 2](https://github.com/Infiziert90/ChatTwo) für FINAL FANTASY XIV / Dalamud. Hellion Chat baut auf Chat 2 auf und ergänzt es um Datenschutz- und Daten-Handling-Kontrollen, die mit den Datenschutz-Regeln in der EU, den USA und Japan im Einklang sind. Alle Chat-2-Funktionen, Befehle und Tastenkürzel funktionieren unverändert. Eigenständiger Plugin-Slot, eigene Konfiguration, eigene Datenbank. Privates Repository, EUPL-1.2-lizenziert. Distribution über Custom-Repo während der Bootstrap-Phase. --- ## Tech Stack | Kategorie | Technologie | | --------------- | ---------------------------------------------------- | | Plattform | Dalamud Plugin (API Level 15) | | Sprache | C# 13 / .NET 10 (`net10.0-windows`) | | Build | Dalamud.NET.Sdk 15.0.0, DalamudPackager 15.0.0 | | UI | Dear ImGui (Dalamud-Bindings) | | Datenbank | SQLite (Microsoft.Data.Sqlite, MessagePack-Storage) | | Lokalisierung | ResX (HellionStrings.resx, .de.resx) + Crowdin-Sync | | Schriftart | Exo 2 (SIL Open Font License 1.1, gebündelt) | | Toolchain | dotnet 10 SDK, VS Code mit C# Dev Kit | | Deployment | GitHub Releases + Custom-Repo (`repo.json`) | --- ## Features ### Privacy / Compliance - **Channel-Whitelist** für die Datenbank-Persistenz mit Privacy-First-Default. Out-of-the-box werden nur eigene Konversationen gespeichert (Tells, Gruppe, FC, Linkshells, Cross-World-Linkshells, Allianz, ExtraChat). Öffentlicher Chat, NPC-Dialoge, System-Spam und Battle-Logs werden auf der Storage-Ebene verworfen. - **Aufbewahrungsdauer pro Kanal** mit täglicher Background-Bereinigung. Tells 365 Tage, eigene Konversations-Kanäle 90 Tage, globaler Default 30 Tage. Standard ist AUS, das Plugin löscht ohne ausdrückliche Zustimmung nichts. - **Retroaktive Säuberung** mit Vorschau und Strg+Umschalt-Bestätigung. Wendet die aktuelle Whitelist auf eine bestehende Datenbank an, läuft im Hintergrund, ruft danach VACUUM auf. - **Export** nach Markdown, JSON oder CSV via Dalamud-Datei-Dialog (DSGVO Art. 15 Auskunftsrecht). Filter nach Kanal, Datums-Bereich oder Sender-Substring. ### Onboarding - **First-Run-Wizard** mit drei Profilen (Privacy-First, Locker, Volle Historie) und DSGVO-Hinweis bei der "Volle Historie"-Option. - **Konfigurations-Migration v6→v7** seedet Privacy-Defaults bei Bestand-Usern und zeigt eine Benachrichtigung beim Ersten Plugin-Start nach Update. - **Layout-Migration aus Chat 2** verschiebt Konfiguration und Datenbank in `pluginConfigs/HellionChat/` ohne Datenverlust. Robust gegen blockierte Dateien (Warnung beim User wenn Chat 2 noch geladen ist). - **Migrate3-Recovery** heilt halb-migrierte Datenbanken aus alten Chat-2-Installationen. ### Look & Feel - **Bilinguale UI** (Englisch + Deutsch) mit Live-Sprachwechsel. Hellion-spezifische Strings in `HellionStrings..resx`. - **Hellion-HUD-Theme** mit Cyan-Teal-Akzenten, Slate-Violet-Tabs, Bernstein-Highlights für aktive Zustände. - **Fenster-Deckkraft-Slider** für Kampf-freundliche Transparenz. - **Mitgelieferte Hellion-Schrift** (Exo 2, OFL-1.1) als optionaler Default statt System-Font. - **Hellion-Logo** im Plugin-Bundle und in der Dalamud-Plugin-Liste. ### Stability - BetterTTV-Cache-Crash-Fix (Null-Key-Handling). - Font-Atlas-Build-Fallback bei nicht-installierten System-Fonts. - Defensive Wrapping aller Migrations-Operationen. --- ## Architektur ``` ChatTwo/ ├── Privacy/ │ └── PrivacyDefaults.cs # Whitelist-Sets, Spec-Retention-Tabelle ├── Export/ │ └── MessageExporter.cs # Markdown / JSON / CSV Serializer ├── Resources/ │ ├── HellionStrings.resx # Hellion-eigene UI-Strings (EN) │ ├── HellionStrings.de.resx # Deutsche Übersetzung │ ├── HellionStrings.Designer.cs # Hand-maintained Accessor │ ├── HellionFont.ttf # Exo 2 Variable Font │ ├── HellionFont-OFL.txt # OFL-1.1 Lizenztext (mit Font gebundelt) │ └── Language*.resx # Upstream-Lokalisierung (Crowdin) ├── Ui/ │ ├── FirstRunWizard.cs # Drei-Profile-Onboarding │ ├── HellionStyle.cs # ImGui-Theme-Push (lokal + global) │ └── SettingsTabs/ │ └── Privacy.cs # Datenschutz-Tab (Filter, Retention, Cleanup, Export) ├── images/ │ └── icon.png # Hellion-Logo (256×256) ├── DalamudPackager.targets # Override für ImagesPath / HandleImages └── HellionChat.yaml # Plugin-Manifest (DalamudPackager-Source) ``` ### Regeln - **Code-Namespace bleibt `ChatTwo.*`** — Cherry-Picks von Upstream-Bugfixes bleiben damit konfliktarm. - **AssemblyName ist `HellionChat`** — eigener Slot in `pluginConfigs/`, eigene Datei-Manifest, kein Shared State mit Chat 2. - **Hellion-eigene Strings nur in `HellionStrings.*.resx`** — die Upstream-`Language.*.resx` bleiben unverändert für sauberen Crowdin-Sync. - **Kein Direkt-Eingriff in `Plugin.Interface.UiBuilder.FontAtlas`** außerhalb von `FontManager` — Font-Fallback und Hellion-Font laufen zentral. --- ## Datenbank SQLite, Schema von Upstream Chat 2 übernommen (Migration-Stand v3). Hellion-Erweiterungen sind in `Configuration` als Felder, nicht im DB-Schema: | Spalte | Typ | Beschreibung | | ---------------- | -------- | --------------------------------------------- | | Id | BLOB | Guid | | Receiver | INTEGER | Empfänger-ContentId | | ContentId | INTEGER | Sender-ContentId | | Date | INTEGER | Unix-Timestamp (ms) | | ChatType | INTEGER | XivChatType / LogKind | | SourceKind | INTEGER | Player / NPC / Server / etc. | | TargetKind | INTEGER | Player / NPC / Server / etc. | | Sender | BLOB | MessagePack `List` | | Content | BLOB | MessagePack `List` | | SenderSource | BLOB | MessagePack `SeString` | | ContentSource | BLOB | MessagePack `SeString` | | ExtraChatChannel | BLOB | Guid | | Deleted | BOOLEAN | Soft-Delete-Marker | Pfad: `pluginConfigs/HellionChat/chat-sqlite.db`. WAL-Modus, Synchronous=NORMAL. --- ## Installation (Tester) Hellion Chat wird während der Bootstrap-Phase über ein Dalamud-**Custom-Repository** verteilt. ### Frische Installation (kein Chat 2 vorher) 1. Dalamud-Settings (`/xlsettings`) → **Experimental** öffnen. 2. Neuen Eintrag unter **Custom Plugin Repositories** anlegen: ``` https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/repo.json ``` 3. **Save**, dann in `/xlplugins` → **All Plugins** → Refresh. 4. **Hellion Chat** taucht in der Liste auf — installieren. ### Migration aus Chat 2 (mit bestehendem Verlauf) Chat 2 und Hellion Chat teilen sich die Datenbank-Datei, bis Hellion Chat sie beim ersten Start in den eigenen Pfad verschiebt. Die Reihenfolge ist wichtig: 1. **Chat 2 deaktivieren** in `/xlplugins` (nicht deinstallieren, nur deaktivieren). 2. **FFXIV komplett schließen**, damit SQLite die Datei-Sperre freigibt. Plugin-Reload allein reicht nicht. 3. Spiel neu starten. 4. Custom-Repo wie oben hinzufügen. 5. Hellion Chat installieren. Beim ersten Start wandert die Konfigurations-Datei und das gesamte Datenbank-Verzeichnis in das HellionChat-Layout. 6. **Verifizieren** unter Einstellungen → Datenschutz → Vorschau aktualisieren, dass die Nachrichten-Anzahl plausibel ist. ### Troubleshooting **Hellion Chat zeigt 0 Nachrichten, obwohl Chat 2 vorher aktiv war:** Migration wurde durch eine gesperrte Datei blockiert. Spiel schließen und manuell verschieben: Linux / XIVLauncher Core: ```bash mv ~/.xlcore/pluginConfigs/ChatTwo/chat-sqlite.db \ ~/.xlcore/pluginConfigs/HellionChat/chat-sqlite.db [ -d ~/.xlcore/pluginConfigs/ChatTwo/EmoteCacheV1 ] && \ mv ~/.xlcore/pluginConfigs/ChatTwo/EmoteCacheV1 \ ~/.xlcore/pluginConfigs/HellionChat/ ``` Windows / XIVLauncher: ```powershell Move-Item "$env:AppData\XIVLauncher\pluginConfigs\ChatTwo\chat-sqlite.db" ` "$env:AppData\XIVLauncher\pluginConfigs\HellionChat\chat-sqlite.db" -Force ``` Spiel starten, Hellion Chat aktivieren, Verlauf ist zurück. ### Updates Updates erscheinen automatisch in der Plugin-Liste, sobald ein neuer `v0.1.x`-Tag mit GitHub-Release publiziert ist. Keine Neu-Installation nötig. --- ## Entwicklung ### Voraussetzungen - .NET 10 SDK (`10.0.104+`) und .NET 9 SDK (`9.0.115+` parallel) - Dalamud-Hooks im XIVLauncher-`addon`-Verzeichnis - VS Code mit C# Dev Kit (oder Rider, JetBrains) - Linux: WireGuard-Mount für Test-Spiel-Setup falls Remote-DB ### Setup ```bash git clone --recurse-submodules https://github.com/JonKazama-Hellion/HellionChat.git cd HellionChat git remote add upstream https://github.com/Infiziert90/ChatTwo.git # Linux: DALAMUD_HOME exportieren falls Hooks nicht im Standardpfad cp .env.example .env set -a; source .env; set +a dotnet build ChatTwo/ChatTwo.csproj ``` Output: `ChatTwo/bin/Debug/HellionChat.dll`. Den Ordner `ChatTwo/bin/Debug` in Dalamud unter Experimental → Dev Plugin Locations eintragen. ### Build-Konfigurationen | Configuration | Output | Zweck | | ------------- | ----------------------------------------------------- | -------------------------------- | | Debug | `bin/Debug/HellionChat.dll` | Dev-Plugin-Loading | | Release | `bin/Release/HellionChat/latest.zip` + Manifest | Custom-Repo / GitHub Release | ### Upstream-Sync ```bash git fetch upstream git log --oneline HEAD..upstream/main # Welche Commits gibt es? git cherry-pick -x # Selektiv übernehmen ``` Konflikte in Upstream-Sprach-Ressourcen (`Language..resx`) kommen häufig vor weil Crowdin sie regelmäßig anfasst. Pragmatisch mit `git checkout --theirs` auflösen, da wir sie selbst nicht editieren. --- ## Distribution | Phase | Version | Distribution | | --------------- | ------------- | -------------------------------------------------- | | Bootstrap | v0.1.x | Eigenes Custom-Repo (`repo.json` im Repo-Root) | | Stable | v1.0 | Eigenes Custom-Repo | | Optional | v1.1+ | Submission ans Dalamud-Main-Plugin-Repo (zusätzlich) | `repo.json` wird beim Versions-Bump per Hand aus dem generierten `HellionChat.json` plus den GitHub-Release-Download-Links zusammengebaut. Skript-Automatisierung via GitHub Actions ist geplant aber noch nicht eingerichtet. --- ## Projektstatus **Version 0.1.2** | Stand: Mai 2026 Alle Bootstrap-Phasen abgeschlossen: - [x] Privacy-Filter (Whitelist + Retention + Cleanup + Export) - [x] First-Run-Wizard mit drei Profilen - [x] Plugin-Identity (eigener Slot, Layout-Migration, Recovery) - [x] Bilinguale UI (EN + DE) mit Live-Sprachwechsel - [x] Hellion-Theme + Hellion-Logo + gebündelter Exo-2-Font - [x] Custom-Repo-Pipeline mit GitHub-Release-Distribution - [x] About-Tab im Hellion-Branding mit License + Disclaimer - [x] AI-Disclosure dokumentiert (Pair-Klassifikation) Phase 2 (offen, kein festes Datum): - [ ] MySQL/MariaDB-Backend mit Drei-Stufen-Bestätigung - [ ] PostgreSQL-Backend - [ ] Encryption für sensible Channels (AES-256, lokaler Key) - [ ] WireGuard-Network-Detection (optionaler Filter) - [ ] libnotify-Integration (native Linux-Toasts) - [ ] XDG-Compliance (komplex unter Wine) - [ ] Hand-gezeichnetes Hellion-Logo (Platzhalter aus Hellion-Online-Media-Brand-Repo) - [ ] GitHub-Actions für reproduzierbaren Build und automatischen `repo.json`-Sync - [ ] Submission ans Dalamud-Main-Plugin-Repo --- ## Lizenz EUPL-1.2 (gleiche Lizenz wie Upstream Chat 2). Siehe `LICENCE`. © 2023–2026 die Chat-2-Autoren (Infi, Anna und die Upstream-Contributors) für die Engine, IPC und Storage-Schicht. © 2026 Hellion Online Media für die Hellion-Chat-Erweiterungen. ### Acknowledgments - **Infi & Anna (ascclemens)** — die Chat-2-Engine, ohne die dieser Fork nicht existieren würde. - **Dalamud-Team** — das Plugin-Framework. - **Chat-2-Crowdin-Community** — Übersetzungen der Upstream-Strings (siehe Settings → Info → "Chat 2 community translators"). ### FFXIV-Disclaimer FINAL FANTASY XIV © SQUARE ENIX CO., LTD. Alle Rechte vorbehalten. Hellion Chat ist ein inoffizielles, von Fans erstelltes Plugin und ist weder mit Square Enix verbunden noch von ihnen unterstützt, gesponsert oder genehmigt. ### KI-Unterstützung Siehe [`AI_DISCLOSURE.md`](AI_DISCLOSURE.md) für die Pair-Level-Disclosure. --- **Hellion Online Media** | Bad Harzburg | [hellion-media.de](https://hellion-media.de)