GuildShoppingList-v0.9.0
What's new
Guild Shopping List
[v0.9.0] (2026-10-07) -- final release
Retirement (TOGBankClassic GSL-MERGE D8)
- GuildShoppingList is retired. Its features (the shopping list, list
setup for the GM / officers /
[GSL]member, and the Reagent Tracker) are now in TOG Bank (TOGBankClassic) v1.7.0, released 2026-09-26. - New one-time-per-session chat notice on
PLAYER_ENTERING_WORLD(GSLPrintRetirementNoticeinGSLUtilities.lua). It tells players to keep GuildShoppingList enabled until the guild master, an officer or the[GSL]member has logged in once with both addons on. TOG Bank's migration readsGuildShoppingList_SavedItemsandGuildShoppingList_Config.GatherStartDate/GatherEndDate, and the client only loads those while this addon is enabled. The wording changes depending on whetherTOGBankClassicis loaded (C_AddOns.IsAddOnLoaded, falling back to the bare global). On Wrath and Cataclysm, where TOG Bank does not ship, it says only that the addon is retired and keeps working.
Packaging
- LibDBIcon-1.0 is now a required CurseForge dependency (
libdbicon-1-0in.pkgmeta,LibDBIcon-1.0in every TOC's## Dependencies). The embeddedLibs/LibDBIcon-1.0copy is deleted. This also fixes a load error. The embedded LibDataBroker-1.1 was removed in v0.7.2 (aad001f), butGSLCore.luastillerror()s at load when LibDataBroker-1.1 is missing. So since v0.7.2 the addon only loaded when some other addon happened to supply LibDataBroker-1.1. The standalone LibDBIcon-1.0 loads it through its own embeds, so the dependency covers both libraries. GuildShoppingList_BCC.tocrenamed toGuildShoppingList_TBC.toc._BCCis not a suffix any client recognises (only the legacy hyphenated-BCC, itself dropped in Anniversary 2.5.5), so TBC / Anniversary clients had been loading the Vanilla manifest and flagging the addon out of date.GuildShoppingList_Mists.toc: Interface50503->50504.- Every TOC title now uses the fleet brand colour:
|cffFF8000Guild Shopping List|r. .pkgmeta: the**/*.ps1/**/*.bat/**/*.shignores became*.ps1etc. With**/, a root-level file never matched. Removed the dot-entries (.git/,.github/,.vscode/,.luarc.json,.markdownlint*), which the packager prunes anyway. Removed all comments. AddedTests.
Fixed
/gslhelplisted/gslrequest, which was never registered as a slash command (GSLUtilities.lua). It now lists/gslvcheckand/gsldebug, the two registered commands it had been leaving out.- When the GSL player picked a new gather date, the calendar called
GSL:RequestGSLData(). That asks the guild for data newer than the GSL player's own, so nobody answered and the new dates never reached members. It now stampsGuildShoppingList_GSLDataSyncTimestampwithtime()and callsGSL:ShareShoppingList()(GuildShoppingList.lua,updateCalendar; this wasdocs/Review.mdsecond pass #1). - The GSL player / gather-range header never refreshed after a sync.
GSLComs.luacalls the globalUpdateGSLPlayerText, butGuildShoppingList.luadeclared itlocal, so the global was always nil and theif UpdateGSLPlayerText thenguard skipped it. It is now a global. Found by the newcoms_spec. - The minimap button position and the "You" reagent counts were lost on every
reload.
GuildShoppingListDB(where LibDBIcon saves the button) andGuildShoppingList_ReagentDatawere never in## SavedVariables. Both are now in all five TOCs, andGuildShoppingListDB.minimapis re-defaulted in theADDON_LOADEDhandler, after saved variables load (this wasdocs/Review.mdsecond pass #10). - The recipe-suggestion list listened to
GLOBAL_MOUSE_DOWN(every click in the game) permanently. It now registers only while the list is showing (docs/Review.mdsecond pass #8). - The quantity-edit and clear-data popups were rebuilt on every click. Both are
now defined once; the row being edited is passed through
StaticPopup_Show'sdataargument (second pass #9). GetTotalItemCountdropped the bank whenever it was closed, despite a comment promising a cache. For the GSL player it now addsGuildShoppingList_GSLBankCachewhen the bank is closed. For anyone else that cache holds the GSL player's synced bank, not their own, so it is never used for them; the comment now says so (second pass #2). A new saved variable,GuildShoppingList_GSLBankCacheOwner, records whose bank the cache holds. It is set when the GSL player scans their bank, when a sync arrives (to the sender) and by the legacyBankCachemigration, and cleared by/gslclear. The cache is counted only when its owner is this character. Without it, a character that had just taken over the[GSL]role would count the previous GSL player's bank as its own until it opened its bank.ScanAndSaveReagentsdid one full bag scan per reagent. It now takes one snapshot and looks each reagent up in it (second pass #7).- Removed the dead
GSL_SHAREprefix registration inGSLComs.lua. AceComm'sRegisterCommregisters the two prefixes actually used,GSLShareandGSLRequest(second pass #3). Removed the no-opGuildShoppingList_GSLDataSyncTimestamp = ... or nilinGSLCore.lua(second pass #6). - Removed the
selectedRecipelocal inGuildShoppingList.lua. It was written in three places and never read. - The CurseForge description and README now list every game version the addon
ships a TOC for (Classic Era, TBC / Anniversary, Wrath, Cataclysm, Mists),
instead of Classic Era only. README's Interface number
11507is corrected to11509.
Development
- Offline unit-test suite on the shared WoWAPITesting harness (
Tests/,.busted,.luacheckrc).
[v0.8.3] (2026-07-22)
- Fixed: the addon no longer errors on login after the latest Classic Era
client update. The update removed several legacy global API functions the
addon called directly —
GetAddOnMetadata,GetItemInfo, andRegisterAddonMessagePrefix, which moved into theC_AddOns/C_Item/C_ChatInfonamespaces.GetAddOnMetadatathrew a nil-call error in the main chunk at load, taking the whole addon down before its window, reagent tracker, or guild sync could run. - The addon now prefers the namespaced calls with a fallback to the old globals, so it loads and runs on the updated Classic Era client while remaining compatible with older clients. No change to how the addon is used.
[v0.8.2] (2025-11-26)
- Added a Miscellaneous list so items that don't belong to a crafting profession (E'kko's turn-ins and other guild sundries) can be tracked alongside the profession shopping lists.
[v0.8.1] (2025-11-19)
- Version display: the addon now shows its running version, so guild members can confirm they're all on the same build.
- Removed the "please /reload" nag that printed after a sync — syncing no longer requires a reload.
[v0.8.0] (2025-11-19)
- More compact Reagent Tracker layout — the tracker window is tighter and easier to keep on screen while gathering.
- The gather date buttons are now hidden for non-GSL players — only the designated GSL player sets the gather window; everyone else just reads it.
[v0.7.5] (2025-11-02)
- Reagent Tracker "needed" totals now account for items you've already made, so the tracker counts down as you craft rather than always showing the full requirement.
[v0.7.4] (2025-11-02)
- "Needed" reagent calculations account for already-made items in the main list (the tracker follow-up shipped in v0.7.5).
- Smoother tracker window dragging.
[v0.7.3] (2025-11-01)
- Fixed the item edit box.
- Fixed the gather date range for non-GSL players (they now read the shared range from cache correctly).
[v0.7.2] (2025-10-10)
- Reworked the date picker: the old date dropdown is now a proper date picker / calendar, and the GSL player's display shows the full gather date range with a tooltip.
- Tracker window now sorts entries ascending.
- Ace3 and VersionCheck-1.0 are now external dependencies (pulled by CurseForge) instead of being bundled in the addon.
- Testing-version handling reworked so pre-release builds no longer flag the whole guild with a mismatched version.
[v0.7.0] (2025-09-19)
- Major refactor of the codebase.
- VersionCheck (VC) integration fully working — the addon reports its version to the guild and the debug flag persists in SavedVariables.
Releases prior to v0.7.0 (the v0.4.x–v0.6.x series) pre-date this changelog.
This mod has no additional files