GabbaDuel – Anleitung für Teilnehmer und Upload-Helfer
====================================================

DOWNLOADS UND EVENTVERWALTUNG
Windows: https://kellerkind.info/gabbaduel/downloads/gabbaduel-windows-x64.zip
Linux: https://kellerkind.info/gabbaduel/downloads/gabbaduel-linux-x64.tar.gz
Eventverwaltung: https://kellerkind.info/gabbacraft/duel.php
Ergebnisse ansehen: https://kellerkind.info/gabbaduel/

1. APP STARTEN
Windows: ZIP herunterladen, Rechtsklick > Alle extrahieren. Im entpackten
Ordner GabbaDuel.exe öffnen. Nicht direkt aus der ZIP starten.
Linux: TAR.GZ entpacken und GabbaDuel starten, ggf. im Terminal ./GabbaDuel.
Python ist mitgeliefert. Keine Installation oder Administratorrechte nötig.
Den Ordner _internal neben der App lassen. Den gesamten App-Ordner an einem
beschreibbaren Ort ablegen, z. B. unter Dokumente.

2. EVENT VORBEREITEN
Der Veranstalter legt das Event in der Eventverwaltung an, prüft Teilnehmer
und Klassen und lost die Auftaktpaarungen aus. Die Browser-Verwaltung benötigt
Discord-Anmeldung und Mitgliedschaft auf dem Saftladen-Server.
Am einfachsten erstellt der Veranstalter beim Event einen "Downloadlink mit
Uploadschlüssel". Den Link privat weitergeben. Er ist 24 Stunden gültig und
kann einmal eingelöst werden. Die heruntergeladene JSON-Datei enthält den
Uploadschlüssel; GabbaDuel ab 1.2.0 übernimmt ihn automatisch. Eine Discord-
Anmeldung ist zum Einlösen nicht nötig. Dieser Zugang erlaubt nur Event-Uploads.
Der Veranstalter kann alle Uploadzugänge und Downloadlinks widerrufen.

Ab 1.2.2: In der App „Event-Link einfügen“ anklicken, den vollständigen Link
inklusive # und Linkschlüssel einfügen und „Event laden“ wählen. Event und
Uploadschlüssel werden übernommen. Es gibt kein separates Schlüsselfeld.
Alternativ die bereits heruntergeladene geteilte JSON mit enthaltenem Schlüssel
öffnen. Alte JSON-Dateien ohne Schlüssel benötigen einen neuen Event-Link.
Bereits im Browser eingelöste Links können nicht erneut in der App geladen werden.
Links und Original-JSON privat behandeln.
Die Desktop-App benötigt keine eigene Discord-Anmeldung.
Pro Event soll genau eine Person die Übertragung betreiben.

3. COMBATLOG EINSCHALTEN UND AUSWÄHLEN
Vor dem ersten Duell in WoW /combatlog eingeben. Auf die Bestätigung achten,
dass die Aufzeichnung eingeschaltet ist: Der Befehl schaltet an UND aus.
In der App zuerst die Eventkonfiguration, dann die Combatlogs auswählen.
Die Dateien liegen im WoW-Installationsordner, für Classic Era unter:
  _classic_era_/Logs/
Dateinamen: WoWCombatLog.txt oder WoWCombatLog-<Datum>_<Uhrzeit>.txt.
Bei mehreren Logteilen alle zum Event gehörenden Dateien mit Strg auswählen.
Nicht einfach die neueste Datei nehmen, wenn du ein älteres Event hochlädst.
Die gefundenen Dateien sind nach Änderungszeit sortiert, neueste zuerst.
Datum und Uhrzeit (lokale Rechnerzeit) stehen neben dem Dateipfad.
Wenn die App gefundene Dateien anbietet, die passenden Dateien markieren und
die Auswahl übernehmen. Bei älteren App-Versionen den Ordner manuell öffnen.

4. OPTIONAL: PRAT FÜR GENAUERE SIEGMELDUNGEN
Ohne Prat leitet die App Ergebnisse aus dem Combatlog ab. Prat kann zusätzlich
explizite Siegmeldungen liefern. Dafür muss Prat in WoW installiert und aktiv sein.
Download: https://www.curseforge.com/wow/addons/prat-3-0
Die Version für WoW Classic Era auswählen.
- /prat öffnet die Einstellungen.
- Unter History / Verlauf das Modul und Scrollback aktivieren. Damit bleiben
  Chatzeilen zwischen Sitzungen gespeichert. Speicherdauer z. B. 24 Stunden.
- Unter Timestamps / Zeitstempel Uhrzeiten mit Sekunden einschalten:
  Format %H:%M:%S, davor [, dahinter ]. Beispiel: [19:05:23]
  Zeitstempel vor die Nachricht setzen, mit einem Leerzeichen danach.
- Im Chatfenster Systemmeldungen anzeigen lassen. Duell-Siegmeldungen müssen
  dort sichtbar sein. Während der Duelle in Reichweite bleiben.
- Nach den Duellen oder zwischen Runden /reload ausführen. Auch Ausloggen
  speichert die Daten. Während eines Duells nicht für den Upload neu laden.
- Die Suche zeigt nur Charakterdateien, keine Account-Einstellungen. Bei
  gewählten Combatlogs und Konfiguration werden Installation und Realm
  berücksichtigt. Backups erscheinen nur, wenn die Hauptdatei fehlt.
- In der App unter Prat-Dateien die Datei des beobachtenden Charakters wählen:
  _classic_era_/WTF/Account/<Account>/<Realm>/<Charakter>/SavedVariables/Prat-3.0.lua
  Optional auch Prat-3.0.lua.bak auswählen.
Nicht die gleichnamige Datei direkt unter Account/<Account>/SavedVariables
verwenden: Gesucht ist der gespeicherte Chatverlauf des Charakters.
"Save Command History" allein reicht nicht; das speichert eingegebene Befehle.
Ab Version 1.1.1 erkennt der Uploader deutsche und englische Meldungen wie
  [19:05:23] SpielerA has defeated SpielerB in a duel
  [19:05:23] SpielerA hat SpielerB in einem Duell besiegt.
Unbekannte Formulierungen werden nicht als sicherer Sieg gewertet.

5. ÜBERTRAGUNG STARTEN
Nach dem Laden per Event-Link oder geteilter JSON ist der Schlüssel im
Hintergrund vorhanden. Übertragung starten anklicken.
Bei vergangenem Eventdatum erscheint eine Warnung. Nachträge bleiben möglich,
solange der Veranstalter das Event nicht abgeschlossen hat.
Das Fenster während des Events geöffnet lassen. Die App prüft die gewählten
Dateien alle fünf Sekunden. Nur abgeschlossene Duelle mit ermitteltem Ergebnis
werden hochgeladen. Die Webseite prüft alle zehn Sekunden auf Aktualisierungen.
Es werden ausgewertete Eventdaten übertragen, keine vollständigen Rohlogs.
Der Status zeigt Ergebnisse und den letzten bestätigten Upload.

Das ist keine verzögerungsfreie Übertragung: WoW muss Daten zuerst auf die
Festplatte schreiben. Prat-Daten stehen meist erst nach /reload oder Logout
bereit. Die App liest die ausgewählten Dateien weiter; nach einem WoW-Neustart
prüfen, ob eine neue Combatlog-Datei ausgewählt werden muss.

6. NACH DEM EVENT
Nach dem letzten Duell /reload ausführen, wenn Prat verwendet wird. Warten,
bis die App den erfolgreichen Upload meldet, und Ergebnisse auf der Webseite
prüfen. Dann Stoppen drücken. Der Veranstalter schließt das Event im Browser ab.

WENN ETWAS NICHT KLAPPT
- Keine Combatlog-Datei: /combatlog-Status und richtigen WoW-Ordner prüfen.
- Keine Ergebnisse: Eventdatum, Teilnehmer und ausgewählte Sitzung prüfen.
  Unvollständige Kämpfe werden noch nicht übertragen.
- Prat liefert nichts: Scrollback, Systemmeldungen, deutsche oder englische Siegmeldung,
  Zeitstempel mit Sekunden und die Datei des richtigen Charakters prüfen.
  Danach /reload und den nächsten Upload abwarten.
- Upload abgelehnt: einen neuen Event-Link vom Veranstalter holen und laden.
- Netzwerkfehler: Die App versucht die Übertragung erneut, solange sie läuft.
- App schließt verzögert: Eine laufende Anfrage wird abgewartet (bis ca. 30 s).
- Beim Rechnerwechsel alle benötigten Logteile und die lokale Konfiguration
  übernehmen und einen neuen Event-Link laden. Fehlende ältere Begegnungen werden nicht einfach gelöscht.

LOKALE DATEN UND TECHNISCHE HINWEISE
Die App legt GabbaDuel-Daten/<Eventdatum> neben der ausführbaren Datei an.
Darin stehen lokale Dateipfade. Zum Weitergeben das originale Downloadpaket
verwenden, nicht den eigenen benutzten App-Ordner.
Die App speichert den Schlüssel nur im Arbeitsspeicher. Stoppen und erneutes
Starten innerhalb derselben Sitzung bleiben möglich. Nach dem Schließen einen
neuen Event-Link oder die geteilte Original-JSON laden. Die lokale importierte
Konfiguration enthält keinen Schlüssel. Eine im Browser heruntergeladene
Original-JSON enthält ihn weiterhin: Diese Datei nicht öffentlich weitergeben.
Kein Autostart und kein Hintergrunddienst. Kampfzeiten sind Näherungen.
Keine automatische /roll-Auslosung oder Teilnehmeranmeldung.

Desktop-Pakete 1.2.2: Windows und Linux x86-64. Windows wurde unter Wine auf
GUI-Start geprüft. Der Nutzer hat den Start von Version 1.0.0 unter Windows 11
per RDP bestätigt; ein vollständiger Event-Upload dort ist noch nicht dokumentiert.
Die EXE ist nicht codesigniert. Linux benötigt glibc 2.35+ und X11/XWayland,
z. B. Ubuntu 22.04+ oder Debian 12+. Kein ARM-Build.
Python, Tcl/Tk und PyInstaller sind enthalten; Lizenzen liegen unter LICENSES.

STATUSANZEIGE (ab 1.2.1)
Die App zeigt das Prüfintervall (5 Sekunden), die letzte Prüfung und einen
Countdown zur nächsten Prüfung. Nach einer Auswertung oder Übertragung beginnt
die Wartezeit erneut. Hochgeladen wird beim Start und bei geänderten Eventdaten;
fehlgeschlagene Uploads werden erneut versucht. Ein erfolgreicher Upload erscheint
mit Bestätigungszeit, Anzahl abgeschlossener Ergebnisse und Eintrag im Verlauf.
Die Ergebnisanzahl beschreibt den gesamten übertragenen Eventstand.
