From 284f0c3794a053db1fd1d6225b83d9d6b846f1a1 Mon Sep 17 00:00:00 2001 From: Xurkon Date: Sun, 22 Mar 2026 16:03:19 -0500 Subject: [PATCH] feat: resolve quest cache validation timeout and update gitignore --- .gitignore | 18 +++++++++++++----- CHANGELOG.md | 1 + Modules/QuestieInit.lua | 6 +++--- Modules/QuestieValidateGameCache.lua | 4 +++- v1.4.7_notes.md | 5 ----- 5 files changed, 20 insertions(+), 14 deletions(-) delete mode 100644 v1.4.7_notes.md diff --git a/.gitignore b/.gitignore index 7207eb0..d73f4a6 100644 --- a/.gitignore +++ b/.gitignore @@ -14,11 +14,6 @@ workflow/ !LICENSE !Icons/MIT.txt -# Build/tool artifacts -__pycache__/ -.agents/ - -# Local dev files coords.lua debug.lua debug_tooltip.lua @@ -26,5 +21,18 @@ debug_tooltip.lua Research/ Tools/ tests/ +Tests/ docs/ !docs/changelog.html +tmp_*.py +release_notes.txt +workflow/ +__pycache__/ +.agents/ +.idea/ +.vscode/ +*.zip +*.log +*.tmp +*.bak +*.old diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e83440..c1f51c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ## v1.4.7 (2026-03-22) +- **[Quest Cache]** Resolved the "Quest cache validation timed out!" error during initialization. Increased the validation timeout from 3 to 10 seconds and relaxed the internal validation criteria to prevent false-positives on slow servers or with custom quest data. - **[Database Plugin Architecture]** Refactored the WotLK database plugin to avoid monolithic global arrays. Database tables are now populated safely within a localized `addonTable` rather than injecting payloads directly into `_G.QuestieDB`. - **[Taint Resolution]** By avoiding the creation of large `_G` variables during database chunk loading, the `Questie-X-WotLKDB` module is now clean of taint vectors. This definitively resolves the `ADDON_ACTION_BLOCKED` errors that occurred when utilizing secure actions, such as `UseAction()` or `CastSpellByName()`, with `Questie-X-WotLKDB` enabled. - **[Database Initialization]** Fixed a capitalization issue in the WotLK database plugin export globals that prevented `QuestieInit` from correctly finding and absorbing the loaded database statistics and payloads. diff --git a/Modules/QuestieInit.lua b/Modules/QuestieInit.lua index 7104673..00704a9 100644 --- a/Modules/QuestieInit.lua +++ b/Modules/QuestieInit.lua @@ -333,10 +333,10 @@ QuestieInit.Stages[2] = function() local keepWaiting = true -- We had users reporting that a quest did not reach a valid state in the game cache. -- In this case we still need to continue the initialization process, even though a specific quest might be bugged - -- 3-second timeout for cache validation - C_Timer.After(3, function() + -- 10-second timeout for cache validation (increased from 3s for slow servers) + C_Timer.After(10, function() if keepWaiting then - Questie:Error("[QuestieInit:Stage2] Quest cache validation timed out! Some data may be missing.") + Questie:Debug(Questie.DEBUG_INFO, "[QuestieInit:Stage2] Quest cache validation timed out! Some data may still be loading.") keepWaiting = false local ok, err = coroutine.resume(QuestieInit.Thread) if not ok then diff --git a/Modules/QuestieValidateGameCache.lua b/Modules/QuestieValidateGameCache.lua index 67817df..08b1b53 100644 --- a/Modules/QuestieValidateGameCache.lua +++ b/Modules/QuestieValidateGameCache.lua @@ -77,7 +77,9 @@ local function OnQuestLogUpdate() if objectiveList and objectiveList[1] then local hasInvalidObjective = false for _, objective in pairs(objectiveList) do - if (not objective.text) or (stringByte(objective.text, 1) == 32) then + -- Fix: Only fail if text is nil or empty. + -- Leading spaces (ASCII 32) are common on some servers/quests and shouldn't block initialization. + if (not objective.text) or (objective.text == "") then isQuestLogGood = false hasInvalidObjective = true break diff --git a/v1.4.7_notes.md b/v1.4.7_notes.md deleted file mode 100644 index 2075e32..0000000 --- a/v1.4.7_notes.md +++ /dev/null @@ -1,5 +0,0 @@ -## Taint Resolution & WotLKDB Restructure -- **[Architecture]** Refactored Questie-X-WotLKDB database files from monolithic global definitions into smaller, manageable chunks using ddonTable to prevent memory allocation failures during LoadAddOn() and eliminate global namespace pollution. -- **[Taint Fix]** Loader.lua now explicitly exports WotLKDB data to _G.QuestieX_WotLKDB_* with proper capitalization ( -pc, object, item, quest) to match QuestieInit's expectations, fully resolving database loading failures and taint vectors. -- **[Version]** Bumped version to 1.4.7 across the codebase.