Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 20:32
· 12 commits to main since this release

VanillaGuide+

v1.0.0 (2026-07-04)

Full Changelog Previous Releases

  • Build the use-item button on ItemButtonTemplate with a tooltip.
    Hovering shows the owned item via GameTooltip:SetBagItem when it is
    in the bags (charges/cooldown state), falling back to SetItemByID
    before it has been looted.
  • Replace fractional QIDs with QID + OIDX objective tracking.
    The hand-authored zone guides encoded "quest 771, objective 2" as
    |QID|771.2|, which the parser's integer-only pattern silently drops -
    those 639 steps across 107 files had no QID at all and could never
    auto-complete. Rewrite them as |QID|771| |OIDX|2| and promote N/K
    sub-steps to C when the same file accepts the quest earlier, so the
    leaderboard objective actually completes them.
    The RXP converters parsed the .complete objective index and dropped
    it, and ignored .collect entirely; both now emit |OIDX| and |L| tags.
    Document OIDX and the fractional-QID pitfall in the authoring guide.
  • Fix quest automation races and step-advance deadlocks.
    • Resolve automation against the first pending step instead of
      self.current, which lags one update behind during NPC interaction
    • Re-drive the still-open gossip/quest window after the step advances
      (auto-offered follow-ups fired before the advance and were missed)
    • Handle QUEST_GREETING for non-gossip multi-quest NPCs
    • Arm the delayed-update gate only for turn-ins; an uncheck via
      GoToPreviousObjective wedged it shut for good since the rewound
      quest legitimately stays in the log. Time-bound the gate (3s) and
      flush it from the ticker as a backstop
    • Guard CompleteQuestByQid on the raw turnedin table: the handler
      records the QID first, which made GetObjectiveStatus hide the
      matching step from its own search
    • Advance on QUEST_REMOVED (new ClassicAPI event) and rewind to the
      accept step when a quest is abandoned
    • Warn once when a turn-in is skipped because the quest was never
      accepted, instead of silently jumping ahead
  • build tools
  • Add automatic quest accept and turnin via C_GossipInfo.
    New Auto Accept/Turnin toggle (default on, hold SHIFT to suspend). Gossip
    windows select the current step quest by QID (title for untagged steps),
    requiring isComplete for turnins; QUEST_DETAIL accepts, QUEST_PROGRESS
    completes when completable, and QUEST_COMPLETE claims the reward only when
    there is no reward choice. Consolidate the scattered QUEST_DETAIL and
    QUEST_COMPLETE registrations into TrackEvents.
  • Add C_QuestLog/C_Item name fallbacks and warm caches at guide load.
    GetQuestNameByQid now reads the server-authoritative quest cache first with
    pfQuest as fallback, so QID name resolution works without pfDB and always
    matches quest log titles. GetItemNameByItemId falls back to
    C_Item.GetItemNameByID, which fires the server query on a miss instead of
    returning nil forever. LoadGuide pre-requests quest and item data for every
    |QID|, |L|, and |U| tag (deduplicated) so later lookups are synchronous, and
    the USE-item button icon comes from C_Item.GetItemIconByID.
  • Replace legacy bag/loot scanning with C_Item, C_Container, and C_Timer.
    Count |L|-tagged collect steps via C_Item.GetItemCount on BAG_UPDATE_DELAYED
    instead of parsing loot messages; this drops the count+1 fudge and catches
    mail/trade/vendor/AH acquisitions. CHAT_MSG_LOOT remains only for legacy BUY
    steps without an |L| tag. Delete the texture-matching GetItemCount helper,
    switch FindBagSlot and the UseContainerItem hook to
    C_Container.GetContainerItemID, replace both OnUpdate poll frames with
    C_Timer, and purge the dead QUEST_QUERY_COMPLETE registration.
    Also fix five AceEvent-2.0 handler signatures that expected an event-name
    first argument (Ace2 passes event args directly): CHAT_MSG_LOOT errored on
    every loot, ADDON_LOADED never installed the trainer hook, PLAYER_LEVEL_UP
    compared HP against the |LV| level, UNIT_QUEST_LOG_CHANGED and
    UI_INFO_MESSAGE never matched. BUY name matching also stripped item-link
    brackets so it can actually match step names.
  • Update README.md
  • Detect hearthstone binds via HEARTHSTONE_BOUND instead of chat parsing.
    The ClassicAPI event fires on SMSG_BINDPOINTUPDATE (login sync suppressed);
    the handler re-reads GetBindLocation() for the SETHEARTH step match. Remove
    the now-orphaned home-bind and quest-accepted locale patterns.
  • Require ClassicAPI v1.5.0+ and switch quest tracking to questID-based APIs.
    Replace CHAT_MSG_SYSTEM accept parsing and the GetQuestReward hook with the
    QUEST_ACCEPTED / QUEST_TURNED_IN events, matching guide steps by QID tag with
    title comparison as fallback for untagged steps. Turnins are now tracked on
    server confirmation, including quests outside the loaded guide.
    Make quest log lookups QID-first via C_QuestLog.IsOnQuest and
    GetQuestIDForLogIndex: GetQuestDetails/GetObjectiveStatus, SmartSkipToStep log
    maps, chain inference, quest watch tracking, and IsQuestInLogByQid (no longer
    needs pfDB). Remove dead ScanQuestLog/IsQuestInLog/IsQuestComplete helpers.
    OnEnable refuses to load below CLASSIC_API_VERSION 10500.