Skip to content

v3.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Mar 14:37
· 15 commits to main since this release

AutoSellPlus

v3.5.0 (2026-03-09)

Full Changelog Previous Releases

  • Remove Bindings.xml from TOC to fix XML parsing errors
    WoW auto-loads Bindings.xml by filename. Listing it in the TOC causes
    WoW to also parse it as UI XML, which doesn't recognize Binding element
    attributes (name, runOnUp), producing Unrecognized XML attribute errors.
  • Merge branch '3.5'

    Conflicts:

    .luacheckrc

    AutoSellPlus/Selling.lua

  • Rewrite CHANGELOG.md with full release history
    Organized by release version (v1.0.0 through v3.3.0) plus unreleased
    3.5 changes. Each version documents its fixes, features, performance
    improvements, and breaking changes.
  • Update CHANGELOG.md with all recent fixes and features
  • Add tooltip fallback for warband detection
    GetItemInfo bindType is unreliable for many warband items (reagents,
    trade goods). Falls back to scanning tooltip data via C_TooltipInfo
    using Blizzard's own localized binding globals (ITEM_BIND_TO_BNETACCOUNT,
    ITEM_BNETACCOUNTBOUND, ITEM_ACCOUNTBOUND, ITEM_BIND_TO_ACCOUNT) for
    locale-safe detection of all warband and account-bound items.
  • Include legacy Bind to Account (bindType 7) in warband detection
    Many warband items still report as bindType 7 (ToWoWAccount) through
    the API despite displaying as "Binds to Warband" in tooltips. Now
    detects all three account-bound types: 7, 8, and 9.
  • Rename warbound to warband to match official WoW terminology
    Blizzard uses "Binds to Warband" in-game. Renames protectWarbound to
    protectWarband, IsWarbound to IsWarband, and the checkbox label to
    Protect Warband throughout.
  • Add warbound item protection with toggleable checkbox
    Detects warbound items via bindType 8 (ToBnetAccount) and 9
    (ToBnetAccountUntilEquipped) from Enum.ItemBind. Adds a Protect
    Warbound checkbox to the popup filter section. Defaults to off.
  • Defer AH value lookup to visible items only
    Move TSM/Auctionator price queries from BuildDisplayList to
    ApplyFilters so they only run for items that pass visibility filters.
    Reduces unnecessary pcall overhead for filtered-out items.
  • Use CanIMogIt constants for locale-safe transmog detection
    Replace hardcoded English string matching ("Cannot", "Collected")
    with CanIMogIt's own NOT_COLLECTED constants for proper localization
    support. Fixes false positives/negatives for non-English clients.
  • Add cursor verification before destroying items
    ClearCursor before pickup, then verify GetCursorInfo matches the
    expected itemID before calling DeleteCursorItem. Prevents accidentally
    destroying the wrong item if the player is dragging something or the
    bag slot changed between scan and destroy.
  • Add unit tests for GetMaxBagID and GetServerTime helpers
  • Add row pooling to confirm list for better performance
    Reuses hidden row frames instead of creating new ones each time the
    confirm list is shown. Rows are pooled by type (item vs divider) and
    recycled on subsequent opens.
  • Add dynamic bag ID and server time helpers, use throughout
    Adds GetMaxBagID() using NUM_TOTAL_EQUIPPED_BAG_SLOTS for reagent bag
    support and GetServerTime() with C_DateAndTime fallback. Replaces all
    hardcoded bag 0-4 loops and direct GetServerTime calls. Also improves
    undo buyback matching to use full item link instead of name substring.
  • Fix mount equipment classID: Miscellaneous (15) not Armor (4)
    Mount equipment items like Light-Step Hoofplates are classified as
    Miscellaneous (classID 15, subclassID 6), not Armor (classID 4).
    Also adds missing WoW API globals to luacheckrc.
  • Add mount equipment protection with toggleable checkbox
    Mount equipment (Armor classID 4, subclassID 6) is now protected from
    selling by default. A Protect Mount Equipment checkbox in the popup
    filter section allows toggling this on or off. Also reuses the
    GetItemInfoInstant classID in ShouldSellItem and BuildDisplayList to
    avoid redundant API calls.
  • Fix Bindings.xml parsing error by removing invalid header attribute
    WoW auto-loads Bindings.xml and the header attribute is not valid on
    Binding elements. The section header is already provided by the
    BINDING_HEADER_AUTOSELLPLUS global in Core.lua.
  • Merge pull request #5 from mikigraf/v31
    V31
  • Fix selling, undo, and auto-destroy safety and correctness issues
    Selling safety:
    • /asp sell and /asp undo now require a merchant to be open
    • Guild auto-repair checks CanGuildBankRepair before claiming success
    • Priority sell queue sorts ascending so valuable items stay in buyback
    • Sell All Junk cancel only reverts force-checked items, not all
    • Drag-to-sell checks isMerchantOpen before UseContainerItem
    • Sell queue builders propagate quality field for confirm list colors
    • Expansion filter cycle uses dynamic CURRENT_EXPANSION
      Undo improvements:
    • Buyback matching iterates in reverse to handle index shifting
    • Uses name+count lookup to avoid double-buying same item
      Auto-destroy fixes:
    • Respects equipment set, transmog, BoE, and refundable protections
    • Re-verifies bag slot contents before each deletion
    • autoDestroyMaxValue=0 now means no limit instead of blocking all
    • Stack limit check uses total bag count instead of per-slot count
      Instance profiles:
    • Only fires when instance type actually changes, not every load screen
      Other:
    • Invalidate equipped ilvl cache on PLAYER_EQUIPMENT_CHANGED
    • Reuse animation groups in FlashSellButton and undo toast
  • Fix wizard template and profile section Y overlap
    When saved profiles exist, the template quick-apply section started at
    the same Y coordinate as the profile picker, causing visual overlap.
    Offset the template section down when profiles are present.
  • Fix session report net loss missing minus sign
    Net gold change was showing losses without a minus sign (e.g. "50g"
    instead of "-50g") because the negative prefix was empty string.
  • Fix transmog source protection and wire up addon integration
    IsUncollectedTransmogSource was passing itemID directly to
    GetAllAppearanceSources which expects a visualID. Now correctly gets
    the appearance ID via GetItemInfo first. Also wire up the previously
    dead IsTransmogProtectedByAddon function into ShouldSellItem so
    AllTheThings and CanIMogIt collection data is used for protection.
  • Fix bag item flash texture and animation group leak
    FlashBagItem created new textures and animation groups on every call
    without reusing them. Use an object pool so textures and their animation
    groups are recycled after the flash completes.
  • Fix ALT+click hook and loot auto-mark item link extraction
    ALT+click hook now only marks items when at a merchant or in bulk mark
    mode, preventing interference with normal item use (eating food, opening
    lockboxes). CHAT_MSG_LOOT handler now correctly extracts the item link
    from the chat message string before passing to GetItemInfoInstant and
    GetEffectiveItemLevel.
  • Use dynamic expansion detection instead of hardcoded ID
    Replace hardcoded CURRENT_EXPANSION = 12 with GetExpansionLevel() so
    trade goods protection automatically tracks the correct expansion
    without code changes when a new expansion launches.
  • Fix keybind support by re-adding Bindings.xml to TOC
    The Bindings.xml file was removed from the TOC to fix a loading error,
    which left the keybind system completely non-functional. Re-add it so
    the Key Bindings UI entry appears and the keybind works.