File Details
DKPAuctioneer_V1.4.7
- R
- Mar 17, 2026
- 51.46 KB
- 19
- 12.0.1
- Retail
File Name
DKPAuctioneer_V1.4.7.zip
Supported Versions
- 12.0.1
# Changelog 1.4.7
## [1.4.7] - 2026-03-17
### Added
#### Master-Sync Feature
- **"Sync All Data" Button für Raidleiter**
- Sendet DKP-Daten an alle Spieler im Raid mit einem Klick
- Verwendet "Master-Sync" Approach: Sendet einen Log-Eintrag pro Spieler mit aktuellem DKP-Stand
- 0.5s Delay zwischen Spielern zur Vermeidung von WoW Rate-Limiting
- Empfänger erhalten nur 2 Nachrichten: "Sync gestartet..." und "Sync abgeschlossen: X Logs empfangen!"
- Button befindet sich im Roster-Tab (nur für Master sichtbar)
#### Export/Import Funktionalität
- **Export Logs Button**
- Exportiert alle DKP-Logs als Lua-Table Format
- Zeigt formatierten Lua-Code in bearbeitbarem Textfeld
- Kann per Strg+C kopiert und in externe Dateien gespeichert werden
- Ermöglicht Backup der kompletten DKP-Historie
- **Import Logs Button**
- Importiert DKP-Logs aus Lua-Table Format
- Verwendet `loadstring()` für sicheres Parsen
- Berechnet automatisch DKP-Werte aus importierten Logs neu
- Warnung: Überschreibt existierende Logs ohne Bestätigung
- Refresh der UI nach erfolgreichem Import
- **Export/Import Buttons im Logs-Tab**
- Positioniert oben rechts im Logs-Tab
- Export-Button: Blau mit Text "Export Logs"
- Import-Button: Grün mit Text "Import Logs"
#### UI Improvements
- **Close Button (X) im Hauptfenster**
- Standard WoW-Close-Button oben rechts hinzugefügt
- Verwendet `UIPanelCloseButton` Template
- FrameLevel auf +10 erhöht für bessere Sichtbarkeit
- Expliziter `Show()` Aufruf für garantierte Darstellung
### Changed
#### Communication System
- **Removed Debug Output**
- Alle Debug-Nachrichten aus `DKPAuctioneer_Comm.lua` entfernt
- Keine "RX:", "Dispatch:", oder Handler-Count Meldungen mehr
- Cleaner Chat ohne technische Debug-Informationen
#### Logs System
- **Auto-Refresh bei neuen Logs**
- `RecordChange()` ruft jetzt automatisch `RefreshLogsTab()` auf
- Log-Tab aktualisiert sich sofort bei neuen Einträgen
- Kein manuelles Refresh mehr notwendig
- **Corrupted Entry Filtering**
- `GetAllLogs()` filtert jetzt ungültige Einträge heraus
- Type-Check: `if type(entry) == "table" and entry.timestamp and entry.player`
- Verhindert Fehler durch korrupte Daten aus fehlgeschlagenen Imports
#### Sync Architecture
- **Master-Sync statt Full History Sync**
- Vorher: Versuch alle Logs zu senden (1000+ Einträge) → Rate-Limit-Probleme
- Jetzt: Ein Log-Eintrag pro Spieler mit aktuellem DKP-Stand
- Log-Format: `beforeDKP=0, change=currentDKP, afterDKP=currentDKP, reason="Master-Sync"`
- Deutlich schneller und zuverlässiger
- **Rate-Limiting Lösung**
- WoW blockiert Nachrichten basierend auf Burst+Window Limit
- Testing ergab: 13 Logs @300ms ✓, 15 Logs @300ms ✗ (2 verloren)
- Lösung: 0.5s (500ms) Delay zwischen Nachrichten für Sicherheit
- Master-Sync mit ~10-20 Spielern funktioniert zuverlässig
### Removed
#### Per-Player Sync Button
- **Einzelne Sync-Buttons pro Spieler entfernt**
- Vorher: Jeder Spieler im Roster hatte eigenen "Sync" Button
- Entfernt wegen Komplexität und Verwirrung für User
- Ersetzt durch zentralen "Sync All Data" Button
- Kompletter Code-Block (~60 Zeilen) aus `DKPAuctioneer_UI.lua` gelöscht
### Fixed
#### Lua Closure Bug
- **FOR-Loop Variable Capture Problem**
- Problem: `C_Timer.After` Callbacks verwendeten falsche Loop-Variable
- Symptom: Alle Timer sendeten den letzten Log-Eintrag mehrfach
- Lösung: Immediate Function Invocation Pattern
- Code: `(function(idx, e) return function() ... end end)(i, entry)`
- Jeder Timer erhält jetzt korrekten Eintrag-Snapshot
#### Serialization Issues
- **Versuch 1: Custom Serialize/Deserialize - FAILED**
- Problem: Zerstörte verschachtelte Tabellen-Strukturen
- Logs wurden zu Strings konvertiert und waren unbrauchbar
- **Versuch 2: Pipe-Delimited Format - FAILED**
- Problem: Zeilenumbrüche in Spielernamen korrumpierten Format
- Format: `timestamp|player|before|change|after|reason`
- Parsing schlug bei mehrzeiligen Einträgen fehl
- **Versuch 3: Lua Table Dump - SUCCESS ✓**
- Lösung: Rekursive `serializeTable()` Funktion
- Erstellt validen Lua-Code mit verschachtelten Tabellen
- `loadstring()` parst Code zurück zu Tabelle
- Funktioniert zuverlässig mit allen Datentypen
### Technical Details
- Addon Version: 1.4.7
- Interface Version: 120001
- WoW Expansion: Midnight (Patch 12.0.1)
- Release Date: March 17, 2026
### Code Changes
**DKPAuctioneer_Comm.lua:**
- Removed all debug `Print()` calls from `OnReceive()`
- Removed handler count output from `Dispatch()`
- Cleaner message processing without console spam
**DKPAuctioneer_Logs.lua:**
- `RecordChange()`: Added `RefreshLogsTab()` call
- `GetAllLogs()`: Added type checking: `if type(entry) == "table" and entry.timestamp and entry.player`
- `Export()`: Implemented `serializeTable()` for Lua table dump
- `Import()`: Uses `loadstring()` to parse imported Lua code
- `Import()`: Recalculates DKP from `afterDKP` values in logs
- `OnLogsClearReceived()`: Prints "Sync gestartet..."
- `OnLogsSyncComplete()`: Prints "Sync abgeschlossen: X Logs empfangen!"
- Registered handlers: `LOG_ENTRY`, `LOGS_BATCH`, `LOGS_CLEAR`, `LOGS_SYNC_COMPLETE`
**DKPAuctioneer_UI.lua:**
- Removed entire per-player sync button code block (~60 lines, around line 1230-1290)
- `CreateSyncAllButton()`: New function for "Sync All Data" button
- Master-Sync logic: Sends one log entry per player with Master-Sync format
- Uses 0.5s delay: `C_Timer.After(i * 0.5, callback)`
- Added Export/Import buttons to Logs tab (top-right positioning)
- Export button: Blue, shows Lua table in scrollable editbox
- Import button: Green, accepts Lua table code
- Close button: Added `SetFrameLevel(frame:GetFrameLevel() + 10)` and `Show()`
### Testing Recommendations
After updating to 1.4.7:
1. Test "Sync All Data" mit ~10-20 Spielern im Raid
2. Verifiziere dass Empfänger nur 2 Meldungen sehen (Start/Ende)
3. Export Logs und Import in zweiten Account testen
4. Prüfe dass Close Button (X) oben rechts sichtbar ist
5. Bestätige dass Logs automatisch refreshen bei neuen Einträgen
### Known Limitations
- Import überschreibt existierende Logs ohne Warnung
- Export hat keine automatische Dateinamen-Generierung
- Sync zeigt keine Fortschrittsanzeige während Übertragung
- Rate-Limiting ist konservativ (0.5s), könnte evtl. schneller sein
### Compatibility
- Vollständig rückwärtskompatibel mit 1.4.5
- Alte Log-Formate werden korrekt gelesen
- Master-Sync Log-Einträge sind normale Logs mit `reason="Master-Sync"`
- Keine Datenmigration erforderlich
---
## [1.4.7] - 2026-03-17
### Hinzugefügt
#### Master-Sync Feature
- **"Sync All Data" Button für Raidleiter**
- Sendet DKP-Daten an alle Spieler im Raid mit einem Klick
- Verwendet "Master-Sync" Ansatz: Sendet einen Log-Eintrag pro Spieler mit aktuellem DKP-Stand
- 0,5s Verzögerung zwischen Spielern zur Vermeidung von WoW Rate-Limiting
- Empfänger erhalten nur 2 Nachrichten: "Sync gestartet..." und "Sync abgeschlossen: X Logs empfangen!"
- Button befindet sich im Roster-Tab (nur für Master sichtbar)
#### Export/Import Funktionalität
- **Export Logs Button**
- Exportiert alle DKP-Logs als Lua-Tabellen-Format
- Zeigt formatierten Lua-Code in bearbeitbarem Textfeld
- Kann per Strg+C kopiert und in externe Dateien gespeichert werden
- Ermöglicht Backup der kompletten DKP-Historie
- **Import Logs Button**
- Importiert DKP-Logs aus Lua-Tabellen-Format
- Verwendet `loadstring()` für sicheres Parsen
- Berechnet automatisch DKP-Werte aus importierten Logs neu
- Warnung: Überschreibt existierende Logs ohne Bestätigung
- Aktualisierung der UI nach erfolgreichem Import
- **Export/Import Buttons im Logs-Tab**
- Positioniert oben rechts im Logs-Tab
- Export-Button: Blau mit Text "Export Logs"
- Import-Button: Grün mit Text "Import Logs"
#### UI-Verbesserungen
- **Schließen-Button (X) im Hauptfenster**
- Standard WoW-Schließen-Button oben rechts hinzugefügt
- Verwendet `UIPanelCloseButton` Template
- FrameLevel auf +10 erhöht für bessere Sichtbarkeit
- Expliziter `Show()` Aufruf für garantierte Darstellung
### Geändert
#### Kommunikationssystem
- **Debug-Ausgaben entfernt**
- Alle Debug-Nachrichten aus `DKPAuctioneer_Comm.lua` entfernt
- Keine "RX:", "Dispatch:", oder Handler-Count Meldungen mehr
- Sauberer Chat ohne technische Debug-Informationen
#### Logs-System
- **Auto-Refresh bei neuen Logs**
- `RecordChange()` ruft jetzt automatisch `RefreshLogsTab()` auf
- Log-Tab aktualisiert sich sofort bei neuen Einträgen
- Kein manuelles Refresh mehr notwendig
- **Filterung korrupter Einträge**
- `GetAllLogs()` filtert jetzt ungültige Einträge heraus
- Typ-Prüfung: `if type(entry) == "table" and entry.timestamp and entry.player`
- Verhindert Fehler durch korrupte Daten aus fehlgeschlagenen Imports
#### Sync-Architektur
- **Master-Sync statt vollständigem Verlaufs-Sync**
- Vorher: Versuch alle Logs zu senden (1000+ Einträge) → Rate-Limit-Probleme
- Jetzt: Ein Log-Eintrag pro Spieler mit aktuellem DKP-Stand
- Log-Format: `beforeDKP=0, change=currentDKP, afterDKP=currentDKP, reason="Master-Sync"`
- Deutlich schneller und zuverlässiger
- **Rate-Limiting Lösung**
- WoW blockiert Nachrichten basierend auf Burst+Fenster-Limit
- Tests ergaben: 13 Logs @300ms ✓, 15 Logs @300ms ✗ (2 verloren)
- Lösung: 0,5s (500ms) Verzögerung zwischen Nachrichten für Sicherheit
- Master-Sync mit ~10-20 Spielern funktioniert zuverlässig
### Entfernt
#### Pro-Spieler-Sync-Button
- **Einzelne Sync-Buttons pro Spieler entfernt**
- Vorher: Jeder Spieler im Roster hatte eigenen "Sync" Button
- Entfernt wegen Komplexität und Verwirrung für Benutzer
- Ersetzt durch zentralen "Sync All Data" Button
- Kompletter Code-Block (~60 Zeilen) aus `DKPAuctioneer_UI.lua` gelöscht
### Behoben
#### Lua-Closure-Bug
- **FOR-Schleifen-Variable-Capture-Problem**
- Problem: `C_Timer.After` Callbacks verwendeten falsche Schleifenvariable
- Symptom: Alle Timer sendeten den letzten Log-Eintrag mehrfach
- Lösung: Immediate Function Invocation Pattern
- Code: `(function(idx, e) return function() ... end end)(i, entry)`
- Jeder Timer erhält jetzt korrekten Eintrags-Snapshot
#### Serialisierungs-Probleme
- **Versuch 1: Custom Serialize/Deserialize - FEHLGESCHLAGEN**
- Problem: Zerstörte verschachtelte Tabellen-Strukturen
- Logs wurden zu Strings konvertiert und waren unbrauchbar
- **Versuch 2: Pipe-Delimited-Format - FEHLGESCHLAGEN**
- Problem: Zeilenumbrüche in Spielernamen korrumpierten Format
- Format: `timestamp|player|before|change|after|reason`
- Parsing schlug bei mehrzeiligen Einträgen fehl
- **Versuch 3: Lua-Tabellen-Dump - ERFOLGREICH ✓**
- Lösung: Rekursive `serializeTable()` Funktion
- Erstellt validen Lua-Code mit verschachtelten Tabellen
- `loadstring()` parst Code zurück zu Tabelle
- Funktioniert zuverlässig mit allen Datentypen
### Technische Details
- Addon-Version: 1.4.7
- Interface-Version: 120001
- WoW-Erweiterung: Midnight (Patch 12.0.1)
- Veröffentlichungsdatum: 17. März 2026
### Code-Änderungen
**DKPAuctioneer_Comm.lua:**
- Alle Debug `Print()` Aufrufe aus `OnReceive()` entfernt
- Handler-Count-Ausgabe aus `Dispatch()` entfernt
- Sauberere Nachrichtenverarbeitung ohne Konsolen-Spam
**DKPAuctioneer_Logs.lua:**
- `RecordChange()`: `RefreshLogsTab()` Aufruf hinzugefügt
- `GetAllLogs()`: Typ-Prüfung hinzugefügt: `if type(entry) == "table" and entry.timestamp and entry.player`
- `Export()`: `serializeTable()` für Lua-Tabellen-Dump implementiert
- `Import()`: Verwendet `loadstring()` zum Parsen des importierten Lua-Codes
- `Import()`: Berechnet DKP aus `afterDKP` Werten in Logs neu
- `OnLogsClearReceived()`: Gibt "Sync gestartet..." aus
- `OnLogsSyncComplete()`: Gibt "Sync abgeschlossen: X Logs empfangen!" aus
- Registrierte Handler: `LOG_ENTRY`, `LOGS_BATCH`, `LOGS_CLEAR`, `LOGS_SYNC_COMPLETE`
**DKPAuctioneer_UI.lua:**
- Kompletter Pro-Spieler-Sync-Button Code-Block entfernt (~60 Zeilen, ca. Zeile 1230-1290)
- `CreateSyncAllButton()`: Neue Funktion für "Sync All Data" Button
- Master-Sync-Logik: Sendet einen Log-Eintrag pro Spieler mit Master-Sync-Format
- Verwendet 0,5s Verzögerung: `C_Timer.After(i * 0.5, callback)`
- Export/Import-Buttons zum Logs-Tab hinzugefügt (oben rechts positioniert)
- Export-Button: Blau, zeigt Lua-Tabelle in scrollbarer Editbox
- Import-Button: Grün, akzeptiert Lua-Tabellen-Code
- Schließen-Button: `SetFrameLevel(frame:GetFrameLevel() + 10)` und `Show()` hinzugefügt
### Test-Empfehlungen
Nach Update auf 1.4.7:
1. "Sync All Data" mit ~10-20 Spielern im Raid testen
2. Verifizieren, dass Empfänger nur 2 Meldungen sehen (Start/Ende)
3. Export Logs und Import in zweiten Account testen
4. Prüfen, dass Schließen-Button (X) oben rechts sichtbar ist
5. Bestätigen, dass Logs automatisch bei neuen Einträgen aktualisieren
### Bekannte Einschränkungen
- Import überschreibt existierende Logs ohne Warnung
- Export hat keine automatische Dateinamen-Generierung
- Sync zeigt keine Fortschrittsanzeige während Übertragung
- Rate-Limiting ist konservativ (0,5s), könnte eventuell schneller sein
### Kompatibilität
- Vollständig rückwärtskompatibel mit 1.4.5
- Alte Log-Formate werden korrekt gelesen
- Master-Sync Log-Einträge sind normale Logs mit `reason="Master-Sync"`
- Keine Datenmigration erforderlich