File Details
PersonalShopper-v0.6.0
- R
- Apr 13, 2026
- 910.23 KB
- 25
- 12.0.1+10
- Classic + 4
File Name
PersonalShopper-PersonalShopper-v0.6.0.zip
Supported Versions
- 12.0.1
- 12.0.0
- 11.2.7
- 5.5.3
- 5.5.2
- 4.4.2
- 3.80.0
- 3.4.5
- 2.5.5
- 1.15.8
- 1.15.7
PersonalShopper Changelog
[v0.6.0] (2026-04-13) - GoldFundMe Crowdfunding
New Features
- GoldFundMe tab — create community gold-goal campaigns visible server-wide to all Personal Shopper users; set a title, gold goal, and optional linked item; progress bar shows current savings + pledges vs. goal with donor count
- Donor List dialog — opens to the right of the main window and lists each backer's contribution with a mail-confirmed badge; owner gets a "Sync" button to push authoritative campaign data to all online peers; dialog size persists across redraws and
/reloadviaframePositions.donorListSavedVariable (default 380 × 400) - Automatic mail donation detection — when a campaign owner clicks "Take Money" on a
GFM:<campaignId>mail the addon records the donation and updates the donor list instantly with no manual input - "Donate via Mail" shortcut — non-owners can pre-fill the mail compose window (recipient, subject, optional gold amount) with one click from any campaign row or the Donor List dialog
Bug Fixes
- GFM sync not propagating pledges — WoW channel messages are capped at 255 bytes so pledges were always stripped; fixed by whispering a
GFM_REQUESTback to the sender whenever an incoming campaign has a newer version, triggering a fullGFM_RESPONSEwhisper (no size limit) that includes all pledges - Available orders leaking into GFM tab — stale
availableOrdersScrollAceGUI widget reference was reused after switching away from the Available tab; fixed by niling both scroll refs on tab leave and adding acurrentTab ~= "available"early-exit guard inRefreshOrderList - Donor dialog double-release error — AceGUI
FramefiresOnCloseonHide(), causing a double-release when the dialog was also explicitly released; fixed by niling theOnClosecallback before every programmaticRelease()call - Donor dialog always centering on screen — AceGUI
OnAcquireauto-shows the frame atCENTERandApplyStatusre-centers wheneverstatus.left/topare nil; fixed by hiding before snapping, positioning relative to the main window, then writing resolved pixel coords back into the AceGUI status table soApplyStatuspreserves the position - GFM donation recipient double-realm —
playerNamereceived over a cross-realm channel already contained a-Realmsuffix; the name is now stripped to base before appending the campaign'splayerRealm
Changes
- DESIGN.md consolidated: full GoldFundMe section added; full Shopping List section added; four obsolete pre-implementation planning docs deleted (
SHOPPING_LIST_FEATURE.md,SHOPPING_LIST_ARCHITECTURE.md,SHOPPING_LIST_SUMMARY.md,PHASE1_COMPLETE.md) - Lint fixes in
GUI/GoldFundMeTab.luaandModules/MailHandler.lua
[v0.5.0] (2026-04-04) - Settings Panel & Auto-Cancel on Obtain
New Features
- Settings in ESC > Interface > AddOns — Personal Shopper options are now embedded in the Blizzard Interface Options panel with an expandable tree (General, Notifications, Custom Channel, Profiles, Debugging); the old floating AceConfigDialog window is gone
- Auto-cancel buy orders on obtain — the "Auto-Remove When Obtained" feature now also cancels active buy orders when your bags contain enough of the item; previously only Shopping List entries were removed
- Right-click minimap button toggles settings — right-clicking now opens or closes the options panel; previously it always opened
Changes
- "Auto-Remove When Obtained" tooltip updated to describe both Shopping List removal and buy order cancellation
[v0.4.1] (2026-04-04) - Shopping List Fixes & Inline Scan Options
Bug Fixes
- Shopping List last row clipped — final item in the list was always invisible, cut off by the scroll frame edge; fixed with a trailing spacer after the render loop
- Priority filter type mismatch — AceGUI dropdown returns string keys but priority is stored as a number;
tonumber()applied to both sides inShoppingList:GetAll - AHScanner sort crash on nil priority —
table.sortcrashed whenitem.prioritywas nil; guarded withor 99fallback - nil priority on item add —
PS_ShoppingListSettings.defaultPriorityabsent in old saves; triple fallbackor 2added inShoppingList:Add - Stale category filter hiding items — filter reset to ALL when saved category no longer exists in the list
- New item hidden by active filter — both filters reset to ALL on successful
ShoppingList:Add - Empty itemLink produces invisible row —
itemLink = ""now treated same as nil - Row crash silently suppressed — pcall errors now print to chat instead of only to debug log
- Shopping List title truncated — title label changed to full width so
(N filtered)indicator is always visible
Changes
- Scan Options moved into AH Scan tab — removed the Shopping List group from the Settings/Options panel; scan settings (Scan Mode, Min Priority, Delay, Hide over budget, Skip fully stocked) now render inline in the AH Scan tab via
AddScanOptionsPanel - Clear Filters link added to Shopping List filter bar; shown in red when a filter is active
/ps dumpsldiagnostic slash command: dumps allPS_ShoppingListentries to chat
[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 viaPS_ShoppingListSavedVariable; 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.professionSpectable tracks the player's active sub-specialization per profession
Bug Fixes
- Crash on "Add to Shopping List" �
attempt to compare table with numberatShoppingList.lua:83; caller was passing one table argument instead of a numericitemIdfollowed by an options table - Lint errors in
GUI/ShoppingListTab.lua� undefined WoW globals, protected AceGUI field access,IsSpellKnownwrong arg count - Lint errors in
Modules/AHScanner.lua� undefinedGetNumAuctionItemsandGetAuctionItemInfo - Lint errors in
GUI/AHScannerFrame.lua� undefined AH globals and protected AceGUI.framefield 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
RequestOrdersthrottle 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
SendChatMessageblock error � Blizzard blocksSendChatMessagecalls 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;
MailHandlerscans 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, andCANCELLEDstates persisted in SavedVariables; mailbox option added to open the mail tab directly from the fulfill dialog
Bug Fixes
- Classic Era COD API �
SetSendMailCOD()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 callsSetChecked(false)onSendMailMoneyButtonbefore 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
SendCommMessagechannel index � must pass an integer channel index for CHANNEL distribution; was incorrectly passing a string channel name- AceComm-3.0 registration �
RegisterComm/SendCommMessagemust be called on the host addon's mixin, not the standalone library; fixed by usingaddon:RegisterComm() - DeltaSync
%zgsub pattern � Lua 5.1 treats a literal\0as end-of-string inside character classes; replaced with%zto fix "malformed pattern (missing ']')" on everyCHAT_MSG_CHANNELevent - DeltaSync debug buffer unification �
lib.debugMessageBufferandaddon.debugMessageBufferwere separate tables;RedrawDebugMessageswiped lib messages on tab switch; unified to a single shared reference DeltaSync.debugEnabledlive sync �/ps debugnow also setsDeltaSync.debugEnabledso COMMS.RECEIVE logs appear immediately without/reload
[v0.0.3-alpha] (2026-01-21) - Embedded Libraries
Internal
- Embed external libraries �
LibDataBroker-1.1andLibDBIcon-1.0moved intoLibs/folder and loaded directly; removed from.pkgmetaexternals - Switch externals to GitHub �
.pkgmetaexternal 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 model �
BuyOrder.luadefines the order schema (itemId, quantity, maxPrice, requester, status, timestamp) - Communication system � AceComm-3.0 based message bus; guild and whisper distribution; server-wide hidden
PersonalShopperchannel for cross-guild reach; custom user-configurable announcement channel - Mail system integration �
MailHandler.luadetects 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 Panel �
LibDBIcon-1.0minimap icon;LibDataBroker-1.1data source for Titan Panel; single shared dataobj between both - Options panel � AceConfig options: debug toggle, minimap show/hide, notifications, custom channel name, profile management
- Localization �
enUSbase locale loaded viaLocale.xml; all user-facing strings keyed throughL[...]
Bug Fixes
- Addon load failure �
LibDataBroker-1.1andLibDBIcon-1.0were declared as.pkgmetaexternals but not embedded; addon failed to load; resolved by embedding both libs - LibDBIcon
lib.xml�LibDBIcon-1.0.luamust be loaded directly; loading vialib.xmlcaused a nil error on init AddToBlizzardOptionsdeprecated � removed deprecated call fromOptions:Init(); options panel now opened viaAceConfigDialog:Open()- TitanPanel nil
dataObj�MinimapButtonandTitanPaneleach created a separateLibDataBrokerobject; second creation returned nil; fixed by sharing one object RegisterCommmethod not found �RegisterCommmust be called inCommunication:Init(), not at file load time before the addon is initializedtabGroupnil onSelectTab�self.tabGroupmust be assigned before callingSelectTab; moved assignment earlier inMainFrame:Open()- Duplicate button code � duplicate widget block referenced undefined
contentvariable; 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 SetStatusTablefor 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_Timerdelay withPLAYER_ENTERING_WORLDevent to ensure the channel exists before attempting to join