feat: add Database options tab with import/export/cleanup

New files:
- Modules/QuestieLearnerExport.lua: serialize/compress/encode pipeline using
  AceSerializer + LibDeflate:CompressDeflate(level=9) + EncodeForPrint.
  QxLD:<version>!<encoded> string format. Export(), ExportAll(), ValidateImport(),
  MergeImport(), DryRunPrune(), Prune().
- Modules/Options/DatabaseTab/QuestieOptionsDatabase.lua: new Database tab with:
    - Live learned data stats (per server)
    - Per-type learner toggles (NPCs/Quests/Objects/Items/Broadcast)
    - Export current server / Export all servers buttons (opens scrollable dialog)
    - Import window (paste -> Validate -> Import with diff summary)
    - Dry-run preview and Prune Now cleanup buttons
    - Full reset button (confirm-gated)
    - Contribute section with step-by-step GitHub submission instructions

Wiring:
- QuestieOptions.lua: database_tab initialized and registered in args
- All TOC files: QuestieLearnerExport.lua added before options, DatabaseTab lua added
This commit is contained in:
Xurkon
2026-03-15 19:48:45 -05:00
parent d2861d194b
commit 457420f90c
7 changed files with 832 additions and 0 deletions
+3
View File
@@ -137,6 +137,8 @@ _CreateOptionsTable = function()
coroutine.yield()
local advanced_tab = QuestieOptions.tabs.advanced:Initialize()
coroutine.yield()
local database_tab = QuestieOptions.tabs.database:Initialize()
coroutine.yield()
local credits_tab = QuestieOptions.tabs.credits:Initialize()
coroutine.yield()
return {
@@ -157,6 +159,7 @@ _CreateOptionsTable = function()
nameplate_tab = nameplate_tab,
dbm_hud_tab = dbm_hud_tab,
advanced_tab = advanced_tab,
database_tab = database_tab,
credits_tab = credits_tab,
profiles_tab = LibStub("AceDBOptions-3.0"):GetOptionsTable(Questie.db)
}