PersonalShopper

An addon to post purchase requests to the community.

File Details

PersonalShopper-v0.4.0

  • R
  • Apr 4, 2026
  • 895.41 KB
  • 14
  • 2.5.5+1
  • Classic + 1

File Name

PersonalShopper-PersonalShopper-v0.4.0.zip

Supported Versions

  • 2.5.5
  • 1.15.8

PersonalShopper Changelog

[v0.4.0] (2026-04-03) - AH Scanner, Shopping List & Missing Recipe Tracker

New Features

  • Shopping List (Core/ShoppingList.lua, GUI/ShoppingListTab.lua) � new "Shopping List" tab in the main window; add/edit/remove items with quantity, max price, priority (High/Medium/Low), category, and notes; color-coded priority rows; per-account persistence via PS_ShoppingList SavedVariable; BoP and quest item validation
  • AH Scanner (Modules/AHScanner.lua, GUI/AHScannerFrame.lua) � one-click scan at the Auction House for every item on your shopping list; results frame shows current buyout, quantity available, and green/red budget indicators; configurable scan delay and skip-fully-stocked option; enabled/disabled automatically when AH opens/closes
  • Missing Recipe Tracker � "Add Missing Recipes" button scans open profession windows and adds all missing tradeable recipe scrolls to the shopping list in one click
  • Specialization filtering � recipes locked to a different sub-spec (Dragonscale/Elemental/Tribal Leatherworking, Gnomish/Goblin Engineering, Armorsmith/Weaponsmith Blacksmithing) are hidden when the player's spec doesn't match; detected via IsSpellKnown() when the tradeskill window opens
  • addon.professionSpec table tracks the player's active sub-specialization per profession

Bug Fixes

  • Crash on "Add to Shopping List"attempt to compare table with number at ShoppingList.lua:83; caller was passing one table argument instead of a numeric itemId followed by an options table
  • Lint errors in GUI/ShoppingListTab.lua � undefined WoW globals, protected AceGUI field access, IsSpellKnown wrong arg count
  • Lint errors in Modules/AHScanner.lua � undefined GetNumAuctionItems and GetAuctionItemInfo
  • Lint errors in GUI/AHScannerFrame.lua � undefined AH globals and protected AceGUI .frame field access

[v0.3.0] (2026-03-24) - Item Filters, Tooltips & History Filters

New Features

  • Item type/subtype filters � filter the Available Orders list by item type and subtype to narrow results when browsing orders
  • Item tooltips � hover any item name in Available Orders or History to see the full WoW item tooltip
  • History filters � filter Order History by date range, item name, or fulfillment status

[v0.2.0] (2026-03-20) - Session 3 Bug Fixes

Bug Fixes

  • Session 3 bug fixes and improvements � resolved multiple issues found during session 3 testing including order propagation, MailHandler syntax errors, mailbox tab key navigation, and RequestOrders throttle bypass

[v0.1.2] (2026-03-18) - BoP & Quest Item Blocking

New Features

  • Block Bind on Pickup and quest item orders � orders for BoP or quest items are now rejected at creation time with an error message; prevents unfulfillable orders from being broadcast to the server

[v0.1.1] (2026-03-18) - Fulfillment Tracking Fix

Bug Fixes

  • Correct fulfillment tracking � orders were not being marked fulfilled correctly after the mailbox attach sequence completed; now tracked reliably via order state
  • Suppress SendChatMessage block error � Blizzard blocks SendChatMessage calls during certain protected frames; error is now caught and suppressed rather than surfacing to the user

[v0.1.0] (2026-03-18) - COD, DeltaSync & Mailbox Fulfillment

New Features

  • Auto-attach items and COD on fulfill � ported TOGBank's greedy algorithm; MailHandler scans bags, calculates a fulfillment plan (full stacks largest-first, small-stack skip, split candidate fallback), then auto-attaches items and sets COD without manual interaction
  • DeltaSyncChannel (DeltaSyncChannel.lua) � optional CHANNEL transport module; routes order broadcasts through a hidden addon-owned channel instead of GUILD/WHISPER for server-wide reach
  • Order state tracking � orders now track PENDING, FULFILLED, and CANCELLED states persisted in SavedVariables; mailbox option added to open the mail tab directly from the fulfill dialog

Bug Fixes

  • Classic Era COD APISetSendMailCOD() does not exist in Classic Era 1.15; replaced with direct frame manipulation (SendMailCODButton:Click() + MoneyInputFrame_SetCopper)
  • Uncheck send-money button before COD � previous Click() approach could leave both radio buttons active; now calls SetChecked(false) on SendMailMoneyButton before activating COD
  • COD nil guard, recipient realm dedup, 7-day order TTL � guards against nil COD amount; deduplicates realm suffix on recipient name; orders older than 7 days are pruned automatically
  • Available orders overlap and history stats layout � fixed row overlap in the Available Orders list and misaligned stat labels in the Order History statistics panel
  • SendCommMessage channel index � must pass an integer channel index for CHANNEL distribution; was incorrectly passing a string channel name
  • AceComm-3.0 registrationRegisterComm/SendCommMessage must be called on the host addon's mixin, not the standalone library; fixed by using addon:RegisterComm()
  • DeltaSync %z gsub pattern � Lua 5.1 treats a literal \0 as end-of-string inside character classes; replaced with %z to fix "malformed pattern (missing ']')" on every CHAT_MSG_CHANNEL event
  • DeltaSync debug buffer unificationlib.debugMessageBuffer and addon.debugMessageBuffer were separate tables; RedrawDebugMessages wiped lib messages on tab switch; unified to a single shared reference
  • DeltaSync.debugEnabled live sync/ps debug now also sets DeltaSync.debugEnabled so COMMS.RECEIVE logs appear immediately without /reload

[v0.0.3-alpha] (2026-01-21) - Embedded Libraries

Internal

  • Embed external librariesLibDataBroker-1.1 and LibDBIcon-1.0 moved into Libs/ folder and loaded directly; removed from .pkgmeta externals
  • Switch externals to GitHub.pkgmeta external references updated from WoWAce SVN to GitHub repository URLs

[v0.0.2-alpha] (2026-01-21) - TOC & MainFrame Fixes

Bug Fixes

  • TOC version bump and MainFrame bug fixes � corrected interface version in PersonalShopper.toc; fixed several nil-error crashes in the main window on first open

[v0.0.1-alpha] (2026-01-16) - Initial Alpha Release

New Features

  • Core addon framework � AceAddon/AceDB/AceGUI skeleton; namespace initialization; multi-version TOC support; VersionCheck system; debug logging system
  • BuyOrder data modelBuyOrder.lua defines the order schema (itemId, quantity, maxPrice, requester, status, timestamp)
  • Communication system � AceComm-3.0 based message bus; guild and whisper distribution; server-wide hidden PersonalShopper channel for cross-guild reach; custom user-configurable announcement channel
  • Mail system integrationMailHandler.lua detects inbox messages, parses order CODs, and surfaces fulfill prompts when the mailbox is open
  • Main window GUI � tabbed AceGUI window (Available Orders, Order History, Mail); sortable orders list with search bar; order statistics panel
  • Create Order dialog � item name auto-complete, quantity/max-price inputs, validation; popup positions to the left of the main window
  • Minimap button & Titan PanelLibDBIcon-1.0 minimap icon; LibDataBroker-1.1 data source for Titan Panel; single shared dataobj between both
  • Options panel � AceConfig options: debug toggle, minimap show/hide, notifications, custom channel name, profile management
  • LocalizationenUS base locale loaded via Locale.xml; all user-facing strings keyed through L[...]

Bug Fixes

  • Addon load failureLibDataBroker-1.1 and LibDBIcon-1.0 were declared as .pkgmeta externals but not embedded; addon failed to load; resolved by embedding both libs
  • LibDBIcon lib.xmlLibDBIcon-1.0.lua must be loaded directly; loading via lib.xml caused a nil error on init
  • AddToBlizzardOptions deprecated � removed deprecated call from Options:Init(); options panel now opened via AceConfigDialog:Open()
  • TitanPanel nil dataObjMinimapButton and TitanPanel each created a separate LibDataBroker object; second creation returned nil; fixed by sharing one object
  • RegisterComm method not foundRegisterComm must be called in Communication:Init(), not at file load time before the addon is initialized
  • tabGroup nil on SelectTabself.tabGroup must be assigned before calling SelectTab; moved assignment earlier in MainFrame:Open()
  • Duplicate button code � duplicate widget block referenced undefined content variable; removed
  • Keybindings firing in edit boxes � main window keybindings now check GetCurrentKeyBoardFocus() and no-op when an edit box is focused
  • Window position not saving � switched to AceGUI SetStatusTable for automatic position/size persistence across sessions
  • Window not centered on first open � when no saved position exists, main window now centers on screen instead of spawning at 0,0
  • Custom channel auto-join timing � replaced C_Timer delay with PLAYER_ENTERING_WORLD event to ensure the channel exists before attempting to join