diff --git a/CHANGELOG.md b/CHANGELOG.md index 40cb003..e65e78c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v1.5.1 (2026-03-28) + +- **[Fix — Minimap Icons]** Prevented external "minimap button grabber" addons (e.g., Leatrix Plus, MBB) from incorrectly hiding Questie-X quest pins. Minimap icons now use a protected `QuestieFrameGroup` container that is ignored by these addons while maintaining correct spatial anchoring via `HereBeDragons`. + ## v1.5.0 (2026-03-28) - **[Fix — Database Robustness]** Added strict guards against invalid or zero IDs in `QuestieDB` lookup functions (`GetNPC`, `GetObject`, `GetItem`). This prevents the "rawdata is nil" debug spam that occurred when custom plugins attempted to access uninitialized or malformed entity data. diff --git a/Modules/Map/QuestieMapUtils.lua b/Modules/Map/QuestieMapUtils.lua index bc19103..216c502 100644 --- a/Modules/Map/QuestieMapUtils.lua +++ b/Modules/Map/QuestieMapUtils.lua @@ -20,7 +20,8 @@ function QuestieMap.utils:SetDrawOrder(frame) if frame.miniMapIcon then local frameLevel = Minimap:GetFrameLevel() + 7 local frameStrata = Minimap:GetFrameStrata() - frame:SetParent(Minimap) + local parent = _G["QuestieFrameGroup"] or Minimap + frame:SetParent(parent) frame:SetFrameStrata(frameStrata) frame:SetFrameLevel(frameLevel) else diff --git a/Questie-X-Classic.toc b/Questie-X-Classic.toc index 5bbd0ab..a9b84f1 100644 --- a/Questie-X-Classic.toc +++ b/Questie-X-Classic.toc @@ -5,7 +5,7 @@ ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.0 +## Version: 1.5.1 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X-TBC.toc b/Questie-X-TBC.toc index 8fc6b66..7015698 100644 --- a/Questie-X-TBC.toc +++ b/Questie-X-TBC.toc @@ -5,7 +5,7 @@ ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.0 +## Version: 1.5.1 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X-Turtle.toc b/Questie-X-Turtle.toc index 941cfb8..dac952a 100644 --- a/Questie-X-Turtle.toc +++ b/Questie-X-Turtle.toc @@ -5,7 +5,7 @@ ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.0 +## Version: 1.5.1 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu, Questie-X-TurtleDB ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X.toc b/Questie-X.toc index 9261322..9787906 100644 --- a/Questie-X.toc +++ b/Questie-X.toc @@ -11,7 +11,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 1.5.0 +## Version: 1.5.1 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu, Questie-X-WotLKDB, Questie-X-ClassicDB, Questie-X-TBCDB, Questie-X-TurtleDB, Questie-X-AscensionDB, Questie-X-EbonholdDB ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB, QuestieJourneyDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie.toc b/Questie.toc index d19d21d..6e51d42 100644 --- a/Questie.toc +++ b/Questie.toc @@ -4,5 +4,5 @@ ## Interface: 00000 ## Title: Questie|cFFFF0000 game client not supported|r ## Notes: Questie only supports Classic TBC and Classic Era/SoM. -## Version: 1.5.0 +## Version: 1.5.1 Modules\GameVersionError.lua diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index dbdbe47..c909645 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,24 +1,65 @@ -# Questie-X v1.5.0 — Universal Stability & Zone Mapping +## Questie-X v1.5.0 (2026-03-27) -This major update focuses on critical runtime stability, centralized localization logic, and improved development infrastructure for all supported private servers (Ascension, Ebonhold, Turtle WoW, etc.). +### Critical Fixes -### Database & Performance -- **[Fix] Database Robustness**: Added strict guards against invalid or zero IDs in `QuestieDB` lookup functions (`GetNPC`, `GetObject`, `GetItem`). This prevents the "rawdata is nil" debug spam that occurred when custom plugins attempted to access uninitialized or malformed entity data. -- **[Refactor] Lookup Logic**: Refactored `QuestieDB` override handling to support both numeric and string keys simultaneously. This ensures that custom server data is correctly resolved regardless of how the third-party plugin formats its internal IDs. -- **[Refactor] Data Injection**: Updated `QuestieLearner:InjectLearnedData` to enforce numeric key normalization, preventing type-mismatch collisions during database merging. -- **[Fix] Custom Server Compilation**: Fixed database compilation not running on custom servers where plugins inject data after initial load. -- **[Performance] Taint Mitigation**: Resolved multiple `ADDON_ACTION_BLOCKED` taint vectors related to `Questie-X-WotLKDB` global namespace pollution. +- **[Fix — Custom Server Compilation]** Fixed database compilation not running on custom servers (Ascension, Ebonhold, Turtle WoW, etc.) where plugins inject data after initial load. Modified Stage1 to defer compilation to Stage3 for custom servers, ensuring plugins finish injecting data before compilation runs. Added l10n:Initialize() and QuestieCorrections:MinimalInit() calls when deferring to Stage3, as Stage2 (QuestieJourney:Initialize()) requires hiddenQuests to be populated. -### QuestieLearner & Localization -- **[Fix] Centralized Zone Lookup**: Refactored `l10n.lua` to include centralized zone-to-ID mapping functions. This resolves the `attempt to call method 'GetAreaIdByLocalName' (a nil value)` error that occurred on Project Ebonhold. -- **[Fix] Ascension Zone Mapping**: Fixed a regression in `QuestieCompat` where `uiMapData` for Ascension-specific zones was not correctly propagating to the global mapping table. -- **[Fix] Zone Mapping Bug**: Fixed incorrect key assignment in `QuestiePluginAPI:InjectZoneTables()`, resolving "No UiMapID or fitting parentAreaId" errors. +- **[Fix — Zone Mapping Bug]** Fixed incorrect key assignment in QuestiePluginAPI:InjectZoneTables(). Changed areaIdToUiMapId[uiMapId] = uiMapId to areaIdToUiMapId[areaId] = uiMapId at line 138. This caused zone lookups to fail, resulting in "No UiMapID or fitting parentAreaId" errors for custom zone IDs. -### Infrastructure & Development -- **[Feature] Session Export**: Added a standardized `session_export` skill for automated exports of developer documentation and session artifacts. -- **[Feature] Enhanced Logging**: Improved initialization logging to provide detailed reporting on custom data injection for NPC, Object, and Item entities. +- **[Fix — Realm Detection]** Added "Bronzebeard" and "Warcraft Reborn" to Ascension realm detection patterns in Modules/QuestieServer.lua. + +### Stability & Error Handling + +- **[Fix — Quest Cache]** Resolved "GetQuest: The quest doesn't exist in QuestLogCache" fatal error during initialization on Ascension WoW client. Implemented retry mechanism in _QuestEventHandler:InitQuestLog to wait for game's quest log data. + +- **[Fix — Validation Crash]** Fixed crash in DecodePointerMap when compiled database pointer map was empty or corrupted. Added defensive check to return empty table instead of crashing. + +- **[Fix — Database Compiler]** Added skip logic in ValidateObjects and ValidateQuests when compiled binary data is missing, preventing validation failures on cached databases. + +- **[Fix — Initialization]** Modified QuestieInit to skip validation in Stage 1 when plugins are pending, since plugins inject data after compilation and validation would compare stale pre-plugin data. + +- **[Fix — Quest Links]** Fixed duplicate quest links when shift-clicking quests in the quest log. Removed redundant ChatEdit_InsertLink call from QuestLogTitleButton_OnClick hook. + +- **[Fix — Profiler]** Fixed "memory allocation error: block too big" crash in QuestieProfiler. Added early-exit logic in HookTable to skip large pure-data tables. + +- **[Fix — Quest Validation]** Fixed QuestieValidateGameCache to silently skip "ghost quests" (removed from database but still in quest log) instead of failing validation. + +### Map & Zone Improvements + +- **[Fix — Zone Mapping]** Added UiMapId overrides for 1415 (Eastern Kingdoms) and 947 (Azeroth) in zoneDB.lua to resolve "No AreaId found" warnings on Ascension servers. + +- **[Fix — MapIconTooltip]** Fixed syntax error in MapIconTooltip.lua at line 239. Malformed if statement was preventing tooltips from updating when hovering over Quest objectives on World Map. + +- **[Fix — DrawWorldIcon]** Fixed graceful return when parent map lookup returns nil. + +### Plugin Architecture + +- **[Plugin Synchronization]** Overhauled plugin loading architecture. Introduced QuestiePluginAPI:FinishLoading() and registration handshake to resolve race conditions during addon initialization. + +- **[Universal Lua 5.0 Refactor]** Executed codebase-wide transition from pairs() and ipairs() to next() and numeric loops for Lua 5.0 engine compatibility with legacy clients. ### Files Changed -- Standardized version to `1.5.0` across all files. -- Consolidated all v1.5.x experimental changes into a stable v1.5.0 release. -- Updated documentation: `README.md`, `CHANGELOG.md`, `docs/changelog.html`, and `docs/index.html`. \ No newline at end of file + +- Database/Corrections/QuestieEvent.lua +- Database/QuestieDB.lua +- Database/Zones/zoneDB.lua +- Database/compiler.lua +- Localization/l10n.lua +- Modules/Journey/QuestieJourneyUtils.lua +- Modules/Libs/MessageHandler.lua +- Modules/Libs/QuestiePluginAPI.lua +- Modules/Map/QuestieMap.lua +- Modules/QuestieInit.lua +- Modules/QuestieLearner.lua +- Modules/QuestiePlayer.lua +- Modules/QuestieServer.lua +- Modules/Tracker/TrackerUtils.lua +- Questie-X-Classic.toc +- Questie-X-TBC.toc +- Questie-X-Turtle.toc +- Questie-X.toc +- Questie.toc +- CHANGELOG.md +- RELEASE_NOTES.md + +See CHANGELOG.md for full details. \ No newline at end of file diff --git a/docs/changelog.html b/docs/changelog.html index c7d487b..fbd6f8b 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -176,6 +176,13 @@
QuestieFrameGroup container that is ignored by these addons while maintaining correct spatial anchoring via HereBeDragons.QuestieDB lookup functions (GetNPC, GetObject, GetItem). This prevents the "rawdata is nil" debug spam that occurred when custom plugins attempted to access uninitialized or malformed entity data.