Releases: mikigraf/AutoSellPlus
Releases · mikigraf/AutoSellPlus
v3.8.1
v3.8.0
AutoSellPlus
v3.8.0 (2026-03-12)
Full Changelog Previous Releases
- docs: update docs for AH protection, Safe Mode, and destruction system
Update CHANGELOG, FEATURES, and CurseForge description with new v3.5
features: AH value protection, Safe Mode template, destruction system v1,
centralized AH lookups, and friendly self-test messages. - feat: add Safe Mode template and friendly self-test messages
New profile template for new users: grays only, all protections on. Wizard
defaults to Safe Mode when no template or profile is selected. Self-test
messages are now user-friendly and reassuring instead of technical. - feat: add AH value protection with popup row coloring
Protect items worth more than a configurable threshold on the AH from being
auto-sold. Requires TSM or Auctionator. Popup rows where AH value exceeds
a configurable multiplier of vendor price are color-coded, with a tooltip
showing "Worth listing: AH Xg, vendor Yg (Nx)". - feat: add destruction system v1
Complete rewrite of the auto-destroy feature with separate destroy filters
(quality, ilvl, max vendor value), a never-destroy list, countdown confirmation
popup, and a bag pressure valve that auto-triggers when free slots drop below
a configurable threshold. Items are destroyed one per tick with cursor
verification for safety. Migrates old autoDestroy* settings to new destroy*
keys (DB version 2 → 3). - refactor: centralize AH value lookups into Helpers.lua
Replace duplicated TSM/Auctionator price queries in Overlays, PopupFilters,
and Popup with ns:GetAHValue(itemID, itemLink) and ns:HasAHAddon() helpers.
v3.7.0
AutoSellPlus
v3.7.0 (2026-03-11)
Full Changelog Previous Releases
- docs: update changelog and features for tooltip status and compact mode
- fix: replace removed GetServerTime global with C_DateAndTime fallback
GetServerTime() was removed as a global in Midnight 12.0. The wrapper
in Helpers.lua now uses C_DateAndTime.GetServerTimeLocal() with time()
as a safe fallback. All bare GetServerTime() calls across Core, History,
MinimapButton, and Overlays now route through the wrapper. - feat: add tooltip item status and compact mode
Tooltip status: adds a colored classification line to item tooltips
showing how ASP will handle each item (sell, protected, skipped).
Driven by new ClassifyItem() which mirrors ShouldSellItem priority chain.
Compact mode: condensed popup showing item count, total value,
per-quality breakdown, and one-click Sell. Toggle via /asp compact,
settings panel, or button on either popup. - fix: use dynamic bag frame count in BagAdapters
Replace hardcoded loop bound of 13 with NUM_TOTAL_EQUIPPED_BAG_SLOTS + 1
so the adapter scales if Blizzard changes bag slot count. - Merge pull request #7 from mikigraf/3.6
3.6 - Update docs for sell collected transmog, known collectibles, and relative ilvl
Add changelog entries and feature documentation for the three new features:
sell collected transmog, sell known collectibles, and relative ilvl threshold. - Add relative ilvl threshold mode
New settings (useRelativeIlvl, relativeIlvlPercent) that compute an ilvl
threshold as a percentage of the player's average equipped ilvl. When enabled,
this single threshold replaces all per-quality ilvl sliders. Modifies
CheckQualityFilter and ApplyFilters to use relative threshold, adds checkbox
with slider/editbox to popup filter section, grays out quality ilvl controls
when active, and shows computed threshold in avgIlvlText. - Add sell known collectibles filter
New setting (sellKnownCollectibles) that marks already-known mounts, pets, and
toys for selling. Adds IsKnownMount, IsKnownPet, IsKnownToy, and
IsKnownCollectible helpers to Protection.lua using C_MountJournal, C_PetJournal,
and C_ToyBox APIs. Integrates into ShouldSellItem, BuildDisplayList,
ApplyFilters, and popup UI with checkbox and settings overlay entry. - Add sell collected transmog filter
New setting (sellCollectedTransmog) that marks items with already-collected
transmog appearances for selling. Adds IsCollectedTransmog helper to
Protection.lua, integrates into ShouldSellItem sell criteria, BuildDisplayList
item data, ApplyFilters auto-check logic, and popup checkbox with settings
overlay entry.
v3.6.0
AutoSellPlus
v3.6.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.
v3.5.0
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.
v3.3.0
AutoSellPlus
v3.3.0 (2026-03-08)
Full Changelog Previous Releases
- Merge branch 'main' of https://github.com/mikigraf/AutoSellPlus
- add readme
- Merge pull request #4 from mikigraf/feat/v3
Feat/v3 - Improve popup filter layout, readability and UX
Brighten ilvl labels, section labels, and item row ilvl text for better
readability on dark background. Resize Transmog/Soulbound checkboxes to
match quality filter rows. Add visual gaps between filter groups. Fix
slot row padding so avg equipped ilvl text no longer overlaps buttons. - Add Settings tab to popup for in-vendor settings access
Add Items/Settings tab buttons below the popup title bar so users can
view and change all addon settings without leaving the vendor window.
The Settings tab shows a scrollable overlay with all settings organized
into sections (General, Automation, Protection, Marking, Display, Bag
Maintenance, Auto-Destroy). Switching back to Items syncs filter
controls and rebuilds the display list to reflect any changes. - Fix soulbound-only filter checking BoE instead of actual bound state
The soulbound-only filter only checked IsBindOnEquip, so non-BoE items
like grays passed through unfiltered. Now uses C_Item.IsBound to check
if items are actually bound to the player. Fixes both popup and
auto-sell paths. - Fix popup filter bugs: soulbound-only shadowed by BoE protection, quest category blocked by quest protection
Reorder onlySoulbound check before protectBoE in BuildDisplayList so it
takes effect regardless of BoE protection state. Remove protectQuestItems
from BuildDisplayList eligibility so quest items appear when the Quest
category is enabled, but default them to unchecked when protection is on. - Fix Bindings.xml loading error by removing it from TOC
Bindings.xml is auto-detected by the WoW client from the addon
folder and must not be listed in the .toc file. Listing it causes
the UI XML parser to process it as a regular UI file, which does
not recognize Binding elements. - Update FEATURES.md and CURSEFORGE_DESCRIPTION.md for new features
Integrate new feature details into existing doc sections: sell-all
confirmation in Confirmation Dialogs, priority sort in Selling
Process, shift-click in Sale History, instance auto-profiles in
Profiles, and updated Protection/Selling/Settings Panel sections.
Update CurseForge description with all new capabilities. - Update documentation for competitive enhancements
Add documentation for all 8 new features to FEATURES.md: shift-click
history links, sell-all confirmation, soulbound-only filter, expansion
materials protection, keybind support, instance auto-profiles, priority
sell queue, and quest item protection. Create CHANGELOG.md. - Add quest item protection
Auto-skip items in the Quest Items category (classID 12) to prevent
accidental sales of quest objectives and quest-starting items.
Enabled by default for safety. Respects the always-sell list
override. - Add priority sell queue for buyback safety
When enabled (default), sells highest-value items first so the 12
buyback slots contain the most valuable items if the user needs to
undo. Previously sold in bag order which wasted buyback slots on
cheap items. - Add zone/instance auto-profile switching
Auto-switch profiles when entering instances (raids, dungeons,
battlegrounds, arenas, scenarios, open world). Per-character
instanceProfiles table maps instance types to saved profile names.
Configured via the Profiles & Templates settings panel with text
inputs for each instance type. - Add keybind support to trigger selling at vendor
Adds a bindable key via WoW's native Key Bindings UI under the
AutoSellPlus header. The keybind opens the sell popup when a
merchant window is open. Bindings.xml defines the binding,
Core.lua tracks merchant state and provides the handler. - Add protection for current expansion trade goods
Never sell Trade Goods (classID 7) from the current expansion
(Midnight) when enabled. Protects valuable crafting materials
from accidental sales. Expansion-aware material protection is a
unique differentiator among auto-sell addons. - Add soulbound-only filter to skip unbound BoE items
New toggle in Protection settings and popup filter section. When
enabled, only soulbound (BoP or already-bound) items are eligible
for selling. Unbound BoE items are always skipped regardless of
other filter settings. Useful for dungeon farmers keeping BoE for AH. - Add confirmation dialog for Sell All Junk button
Shows item count and total gold value before selling when clicking
Sell All Junk. Dialog is dismissed on merchant close. Cancelling
unchecks all items. - Add shift-click to insert item link from sale history
Shift+left-clicking a history row now inserts the item link into chat,
matching standard WoW UX patterns that players expect. - Merge pull request #3 from mikigraf/feat/ui-fixes
Feat/UI fixes
v3.2.0
AutoSellPlus
v3.2.0 (2026-03-08)
Full Changelog Previous Releases
- Merge branch 'main' of https://github.com/mikigraf/AutoSellPlus
- add readme
- Merge pull request #4 from mikigraf/feat/v3
Feat/v3 - Improve popup filter layout, readability and UX
Brighten ilvl labels, section labels, and item row ilvl text for better
readability on dark background. Resize Transmog/Soulbound checkboxes to
match quality filter rows. Add visual gaps between filter groups. Fix
slot row padding so avg equipped ilvl text no longer overlaps buttons. - Add Settings tab to popup for in-vendor settings access
Add Items/Settings tab buttons below the popup title bar so users can
view and change all addon settings without leaving the vendor window.
The Settings tab shows a scrollable overlay with all settings organized
into sections (General, Automation, Protection, Marking, Display, Bag
Maintenance, Auto-Destroy). Switching back to Items syncs filter
controls and rebuilds the display list to reflect any changes. - Fix soulbound-only filter checking BoE instead of actual bound state
The soulbound-only filter only checked IsBindOnEquip, so non-BoE items
like grays passed through unfiltered. Now uses C_Item.IsBound to check
if items are actually bound to the player. Fixes both popup and
auto-sell paths. - Fix popup filter bugs: soulbound-only shadowed by BoE protection, quest category blocked by quest protection
Reorder onlySoulbound check before protectBoE in BuildDisplayList so it
takes effect regardless of BoE protection state. Remove protectQuestItems
from BuildDisplayList eligibility so quest items appear when the Quest
category is enabled, but default them to unchecked when protection is on. - Fix Bindings.xml loading error by removing it from TOC
Bindings.xml is auto-detected by the WoW client from the addon
folder and must not be listed in the .toc file. Listing it causes
the UI XML parser to process it as a regular UI file, which does
not recognize Binding elements. - Update FEATURES.md and CURSEFORGE_DESCRIPTION.md for new features
Integrate new feature details into existing doc sections: sell-all
confirmation in Confirmation Dialogs, priority sort in Selling
Process, shift-click in Sale History, instance auto-profiles in
Profiles, and updated Protection/Selling/Settings Panel sections.
Update CurseForge description with all new capabilities. - Update documentation for competitive enhancements
Add documentation for all 8 new features to FEATURES.md: shift-click
history links, sell-all confirmation, soulbound-only filter, expansion
materials protection, keybind support, instance auto-profiles, priority
sell queue, and quest item protection. Create CHANGELOG.md. - Add quest item protection
Auto-skip items in the Quest Items category (classID 12) to prevent
accidental sales of quest objectives and quest-starting items.
Enabled by default for safety. Respects the always-sell list
override. - Add priority sell queue for buyback safety
When enabled (default), sells highest-value items first so the 12
buyback slots contain the most valuable items if the user needs to
undo. Previously sold in bag order which wasted buyback slots on
cheap items. - Add zone/instance auto-profile switching
Auto-switch profiles when entering instances (raids, dungeons,
battlegrounds, arenas, scenarios, open world). Per-character
instanceProfiles table maps instance types to saved profile names.
Configured via the Profiles & Templates settings panel with text
inputs for each instance type. - Add keybind support to trigger selling at vendor
Adds a bindable key via WoW's native Key Bindings UI under the
AutoSellPlus header. The keybind opens the sell popup when a
merchant window is open. Bindings.xml defines the binding,
Core.lua tracks merchant state and provides the handler. - Add protection for current expansion trade goods
Never sell Trade Goods (classID 7) from the current expansion
(Midnight) when enabled. Protects valuable crafting materials
from accidental sales. Expansion-aware material protection is a
unique differentiator among auto-sell addons. - Add soulbound-only filter to skip unbound BoE items
New toggle in Protection settings and popup filter section. When
enabled, only soulbound (BoP or already-bound) items are eligible
for selling. Unbound BoE items are always skipped regardless of
other filter settings. Useful for dungeon farmers keeping BoE for AH. - Add confirmation dialog for Sell All Junk button
Shows item count and total gold value before selling when clicking
Sell All Junk. Dialog is dismissed on merchant close. Cancelling
unchecks all items. - Add shift-click to insert item link from sale history
Shift+left-clicking a history row now inserts the item link into chat,
matching standard WoW UX patterns that players expect. - Merge pull request #3 from mikigraf/feat/ui-fixes
Feat/UI fixes
v3.0.0
AutoSellPlus
v3.0.0 (2026-03-08)
Full Changelog Previous Releases
- Merge branch 'main' of https://github.com/mikigraf/AutoSellPlus
- add readme
- Merge pull request #4 from mikigraf/feat/v3
Feat/v3 - Improve popup filter layout, readability and UX
Brighten ilvl labels, section labels, and item row ilvl text for better
readability on dark background. Resize Transmog/Soulbound checkboxes to
match quality filter rows. Add visual gaps between filter groups. Fix
slot row padding so avg equipped ilvl text no longer overlaps buttons. - Add Settings tab to popup for in-vendor settings access
Add Items/Settings tab buttons below the popup title bar so users can
view and change all addon settings without leaving the vendor window.
The Settings tab shows a scrollable overlay with all settings organized
into sections (General, Automation, Protection, Marking, Display, Bag
Maintenance, Auto-Destroy). Switching back to Items syncs filter
controls and rebuilds the display list to reflect any changes. - Fix soulbound-only filter checking BoE instead of actual bound state
The soulbound-only filter only checked IsBindOnEquip, so non-BoE items
like grays passed through unfiltered. Now uses C_Item.IsBound to check
if items are actually bound to the player. Fixes both popup and
auto-sell paths. - Fix popup filter bugs: soulbound-only shadowed by BoE protection, quest category blocked by quest protection
Reorder onlySoulbound check before protectBoE in BuildDisplayList so it
takes effect regardless of BoE protection state. Remove protectQuestItems
from BuildDisplayList eligibility so quest items appear when the Quest
category is enabled, but default them to unchecked when protection is on. - Fix Bindings.xml loading error by removing it from TOC
Bindings.xml is auto-detected by the WoW client from the addon
folder and must not be listed in the .toc file. Listing it causes
the UI XML parser to process it as a regular UI file, which does
not recognize Binding elements. - Update FEATURES.md and CURSEFORGE_DESCRIPTION.md for new features
Integrate new feature details into existing doc sections: sell-all
confirmation in Confirmation Dialogs, priority sort in Selling
Process, shift-click in Sale History, instance auto-profiles in
Profiles, and updated Protection/Selling/Settings Panel sections.
Update CurseForge description with all new capabilities. - Update documentation for competitive enhancements
Add documentation for all 8 new features to FEATURES.md: shift-click
history links, sell-all confirmation, soulbound-only filter, expansion
materials protection, keybind support, instance auto-profiles, priority
sell queue, and quest item protection. Create CHANGELOG.md. - Add quest item protection
Auto-skip items in the Quest Items category (classID 12) to prevent
accidental sales of quest objectives and quest-starting items.
Enabled by default for safety. Respects the always-sell list
override. - Add priority sell queue for buyback safety
When enabled (default), sells highest-value items first so the 12
buyback slots contain the most valuable items if the user needs to
undo. Previously sold in bag order which wasted buyback slots on
cheap items. - Add zone/instance auto-profile switching
Auto-switch profiles when entering instances (raids, dungeons,
battlegrounds, arenas, scenarios, open world). Per-character
instanceProfiles table maps instance types to saved profile names.
Configured via the Profiles & Templates settings panel with text
inputs for each instance type. - Add keybind support to trigger selling at vendor
Adds a bindable key via WoW's native Key Bindings UI under the
AutoSellPlus header. The keybind opens the sell popup when a
merchant window is open. Bindings.xml defines the binding,
Core.lua tracks merchant state and provides the handler. - Add protection for current expansion trade goods
Never sell Trade Goods (classID 7) from the current expansion
(Midnight) when enabled. Protects valuable crafting materials
from accidental sales. Expansion-aware material protection is a
unique differentiator among auto-sell addons. - Add soulbound-only filter to skip unbound BoE items
New toggle in Protection settings and popup filter section. When
enabled, only soulbound (BoP or already-bound) items are eligible
for selling. Unbound BoE items are always skipped regardless of
other filter settings. Useful for dungeon farmers keeping BoE for AH. - Add confirmation dialog for Sell All Junk button
Shows item count and total gold value before selling when clicking
Sell All Junk. Dialog is dismissed on merchant close. Cancelling
unchecks all items. - Add shift-click to insert item link from sale history
Shift+left-clicking a history row now inserts the item link into chat,
matching standard WoW UX patterns that players expect. - Merge pull request #3 from mikigraf/feat/ui-fixes
Feat/UI fixes
v2.2.0
AutoSellPlus
v2.2.0 (2026-03-07)
Full Changelog Previous Releases
- Update feature docs for transmog protection and Allow Transmog checkbox
- Add Allow Transmog checkbox to popup filter section
When checked, disables both protectUncollectedTransmog and
protectTransmogSource, allowing uncollected appearance items to
appear in the sell list. Rebuilds display list on toggle since
transmog filtering happens during item scanning. - Fix transmog protection incorrectly filtering out trinkets, rings, and necklaces
PlayerHasTransmog returns false for non-moggable accessories (they have
no visual appearance), causing them to be treated as "uncollected transmog"
and excluded from sell lists. Add HasTransmogAppearance() that checks
equipLoc to skip transmog checks for INVTYPE_NECK, INVTYPE_FINGER, and
INVTYPE_TRINKET slots. - Update feature documentation for UI/UX improvements
- Document history row tooltips and clear confirmation dialog
- Note auto-repair shows needed vs available gold
- Note profile auto-load chat notification and delete confirmation
- Note template apply resets all settings to defaults
- Fix visual layout: close buttons, context menu, column widths, minimap border
- Increase close button size from 18x18 to 22x22 in popup, history, and wizard
- Change context menu strata from TOOLTIP to FULLSCREEN_DIALOG
- Remove duplicate SetPoint("CENTER") on minimap border texture
- Widen item name column from 170px to 200px in popup rows and headers
- Shift ilvl and AH header positions to match new column layout
- Add item tooltips on hover to sale history rows
- Add confirmation dialogs for clearing history and deleting profiles
- Clear sale history button now shows a confirm/cancel dialog
- Delete profile button in settings UI now shows a confirm/cancel dialog
- Slash command profile delete remains direct (no dialog)
- Improve chat feedback messages for clarity and helpfulness
- Auto-repair shows needed vs available gold when insufficient
- Profile auto-load on login prints visible chat message instead of debug-only
- Template apply message mentions that all settings are reset to defaults
- "Nothing to sell" messages now hint about filters and ALT+Click marking
- Dry run empty result says "nothing matched current filters"
- Help command lines use dim color for commands, default color for descriptions
- Merge pull request #2 from mikigraf/feat/v2-1-0-sell-confirmations
Feat/v2 1 0 sell confirmations
v2.1.0
AutoSellPlus
v2.1.0 (2026-03-07)
Full Changelog Previous Releases
- Merge branch 'main' into feat/v2-1-0-sell-confirmations
- Add comprehensive feature documentation
Full documentation of all settings, defaults, data structures,
event flow, protection priorities, competitive analysis, and
vNext roadmap with community references. - Add CurseForge addon description
Standalone description optimized for the CurseForge author portal,
without GitHub-specific elements like badges, HTML, or dev docs. - Rewrite README for CurseForge optimization
Developer-to-player voice, features by gameplay purpose, updated
project structure, added unit test docs, removed Wago references. - Update TOC for ConfirmList, Tests, and WoWUnit OptionalDeps
Add ConfirmList.lua between PopupFilters and Popup in load order.
Add Tests.lua after Core.lua. Replace X-Wago-ID with OptionalDeps
for WoWUnit test framework. - Add WoWUnit test suite with 100+ in-game tests
Comprehensive test coverage for formatting, config, DB migration,
protection priorities, filters, sorting, session tracking, history,
profiles, templates, marking, transmog, and confirm list. Tests are
guarded by if-WoWUnit and have zero overhead when WoWUnit is absent. - Add confirmation item list panel below sell dialogs
Show a scrollable item list below StaticPopup confirmation dialogs
(epic, high-value, auto-sell, eviction) so players can see exactly
which items will be sold. Items beyond the 12-item buyback limit
are flagged with a red divider and tinted rows. - Update README.md