v1
SmartBuff Retail
v1 (2026-01-26)
Full Changelog Previous Releases
- Update README to remove deprecated macro usage
Removed outdated instructions for using Smartbuff in macros. - Add GitHub Actions workflows for automated packaging and releases (#79)
- Adding GitHub workflows and new release prep
Workflows
- Added release.yml for tag-based packaging with BigWigs packager
- Added sync-externals.yml for manual library updates from CurseForge
- Added README.md documenting workflow setup and usage
Broker_SmartBuff
- Updated TOC interface version to 120000 for Midnight compatibility
- Updated version to 1.120000 in TOC manifest
- Added clarifying comment for modern API usage
Release
- Bumped SmartBuff.toc version to 36.120000 in preparation for release
- Updated changelog in localization.en.lua with r36.250126 user-facing changes
- Updated version comment in SmartBuff.lua to reflect optional version bumps
Packaging
- Added documentation comments to .pkgmeta explaining external library strategy
Development
- Added .cursorrules with project development guidelines and git commit message format
- Nit fixes from code review
- allow manual trigger for release workflow from actions.
- chore: Update external libraries from CurseForge and GitHub
Auto-synced external libraries:
- LibStub (CurseForge)
- CallbackHandler-1.0 (CurseForge)
- LibSharedMedia-3.0 (CurseForge)
- LibDataBroker-1.1 (GitHub)
- updating release to be able to do a manual vs release action and get a proper zip file
- debugging manual execution.
- nit: artifact path fix.
- nit: more release debug
- nit2. more manual testing
- fix for popup of new changes. It seems to have become broken at some point or another...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> - Merge pull request #78 from ynazar1/fix-buff-order-reaarange-from-main
- Fix: Preserve custom buff order and filter toys correctly
- Fix buff order reset when opening/closing options window
- Fix buff order reset when toggling "Include Toys" setting
- Add toy filtering when "Include Toys" is disabled
- Improve InitBuffOrder() to preserve custom order while cleaning up
Fixes issues where user's custom buff arrangements were lost.
- Merge pull request #77 from ynazar1/fix-data-bugs-and-add-help-overlay
- Refactor item detection and fix ITEM type buff handling
Unified Item Search Functions:- Merged SMARTBUFF_CountReagent() and SMARTBUFF_FindItem() into shared SMARTBUFF_FindItemInternal() function
- Both functions now use identical search logic with consistent ItemLink extraction for Dragonflight item qualities
- SMARTBUFF_CountReagent() returns total count across all bags and item ID
- SMARTBUFF_FindItem() returns first match location, stack count, and texture
- Eliminated ~50 lines of duplicate code while maintaining backward compatible return values
ITEM Type Buff Initialization Fix: - Modified SMARTBUFF_SetBuff() to skip item count filtering for SMARTBUFF_CONST_ITEM type during setup
- ITEM type buffs (Create Healthstone, etc.) are now kept in buff list even when count == 0
- Item existence check moved to runtime in SMARTBUFF_BuffUnit() where it correctly triggers creation spells
- Prevents conjured item buffs from being incorrectly removed during initialization when items don't exist yet
ITEM Type Buff Runtime Handling: - Removed premature r=20 assignment in SMARTBUFF_BuffUnit() ITEM type handling block
- Added early return when item found in inventory to prevent false "item not found" warnings
- Added check timer reset (tLastCheck = GetTime()) in UNIT_SPELLCAST_SUCCEEDED handler for ITEM type spells
- Prevents extra out-of-order checks immediately after casting creation spells before item appears in inventory
Performance and Code Quality: - Optimized SMARTBUFF_SetBuff() to extract both minLevel and texture from single C_Item.GetItemInfo() call
- Fixed variable shadowing by renaming local 'texture' to 'chainTexture' in ITEM type fallback logic
- Reused buffTexture from initial GetItemInfo() call instead of making redundant second call
- Added comprehensive inline comments documenting all local variables in SMARTBUFF_BuffUnit() function
Item Data Loading Enhancement: - Enhanced GetItems() function in SmartBuff.buffs.lua with two-stage validation and loading pattern
- Stage 1: Validate item IDs using C_Item.GetItemInfoInstant() for instant, cache-independent validation
- Stage 2: Async load localized item links using Item:CreateFromItemID() and ContinueOnItemLoad()
- Chains now store numeric IDs initially, updating to localized links as async callbacks complete
- SMARTBUFF_FindItem() handles both numeric IDs and item link strings seamlessly
- Clarifying that it's not name but itemlink that's being generated due to caching and api availability
- Fixing init on ui reload not triggering in correct order.
- Fix: Read definition data from cBuffs[] instead of profiles
- Fix Bug #1: SMARTBUFF_CheckUnitBuffs() reads Type/Links from cBuffs[]
- Fix Bug #2: SMARTBUFF_SetInCombatBuffs() copies all definition data
- Add help overlay for reset buttons in options frame
- Update version comment clarifying version bump requirements
Definition changes in buffs.lua now work after /reload without profile resets.
- Merge pull request #76 from ynazar1/midnight-fixes
- Removed/Commented Out Spells
Trueshot Aura (288613) — Commented out (doesn't exist in retail WoW)
Bark of the Wild (159988) — Commented out (removed)
Greater Blessing of Kings (203538) — Commented out (doesn't exist per Wowhead)
Embrace of the Shale Spider (90363) — Commented out (doesn't exist per Wowhead)
Strength of the Earth (160077) — Commented out (doesn't exist per Wowhead)
Invigorating Roar (50256) — Commented out (doesn't exist per Wowhead)
Qiraji Fortitude (90364) — Commented out (doesn't exist per Wowhead)
Sturdiness (160014) — Commented out (doesn't exist per Wowhead)
Savage Vigor (160003) — Commented out (doesn't exist per Wowhead)
Roar of Courage (93435) — Commented out (doesn't exist per Wowhead)
Keen Senses (160039) — Commented out (doesn't exist per Wowhead)
Spirit Beast Blessing (128997) — Commented out (doesn't exist per Wowhead)
Plainswalking (160073) — Commented out (doesn't exist per Wowhead)
IMPPRISBARRIER — Removed from mage buff list (undefined)
Restored/Added Spells
Amplifying Poison (381664) — Restored and added to rogue buff list
Atrophic Poison (381637) — Already restored (from previous commit)
Chain Updates
S.ChainWarriorStance — Removed SMARTBUFF_GLADSTANCE (commented out)
S.ChainWarriorShout — Removed SMARTBUFF_COMMANDINGSHOUT (commented out)
S.ChainPaladinAura — Added SMARTBUFF_CRUSADERAURA, removed SMARTBUFF_RETRIBUTIONAURA (not defined)
S.ChainRoguePoisonsLethal — Added SMARTBUFF_AMPLIFYPOISON
S.LinkStats — Removed undefined variables and commented out removed spells
S.LinkSta — Removed undefined variables and commented out removed spells
S.LinkAp — Removed entirely (only contained BATTLESHOUT, which doesn't need to link to itself)
S.LinkMa — Removed entirely (empty after all spells commented out)
Buff List Updates
PWF — Removed S.LinkSta reference (chain only contains PWF itself)
BATTLESHOUT — Removed S.LinkAp reference (chain only contained BATTLESHOUT itself)
TRUESHOTAURA — Commented out from hunter buff list
AMPLIFYPOISON — Added to rogue buff list
Code Cleanup
Normalized blank lines (removed excessive consecutive blank lines)
Normalized line endings (CRLF) - Bringing back missing buffs
- Removed vscode files.
Oops. - Midnight
Prep for Midnight, updated TOC, added new raids and translations, added flasks and corrected SpellId's etc. - Merge pull request #75 from ynazar1/augment-rune
- Adding Ethereal Augment Rune in 11.2.0
- Merge pull request #73 from ynazar1/release-updates
- 11.2 ToC Bump
- Merge pull request #70 from ynazar1/release-updates
- release notes and internal version bump
- Merge pull request #68 from speedwaystar/main
- removed legacy Dragonflight raid templates
cf. #48 - Merge pull request #67 from speedwaystar/main
-
- ADDED: horrific visions template
- FIXED: incorrect itemIds for Oil of Beledar's Grace, Oil of Deep Toxins and Algari Mana Oil
- ADDED: guns and warglaives to SMARTBUFF_WEAPON_STANDARD
- ADDED: warglaives to SMARTBUFF_WEAPON_SHARP
- ADDED: horrific visions template
- Merge pull request #66 from speedwaystar/main
- fix: GROUP_ROSTER_UPDATE bug workaround disabled since it was prevented Delve detection
- Merge pull request #65 from speedwaystar/main
- new: Delve template support
new: Liberation of Undermine raid template
new: Delicate Ebony Parasol toy
new: Stylish Black Parasol toy - Merge pull request #64 from speedwaystar/main
- new: support for "Hearty Well Fed" buff
new: localized string SMARTBUFF_LOC_HEARTY = "Hearty"
refactored: SMARTBUFF_IsPicnic(unit)
added: SMARTBUFF_IsWellFed(unit) - Merge pull request #61 from ynazar1/11.1.5-fixes-2
-
- Adding Symbiotic Link for druids The way it works is bad because its a targeted buff with cast time... But you can has reminder I guess.
- BugFix: Fix weapon buff due to itemlink change
- Merge pull request #60 from ynazar1/11.1.5-fixes
-
- Better loading order of things
- ToC Bump
- Tutorial fix due to api changes
- Better loading order of things
- Merge pull request #59 from ynazar1/mounted-init-bug
- Fixing mounted init bug not setting template
- Merge pull request #58 from ynazar1/#57-keybindings-fix
- toc bump and keybindings fix
- Merge pull request #56 from ynazar1/miscoptimize
- Whoops TWW flasks different rank bug and toc bump
- better location for optimize. allows init after login while mounted
- Don't redo buffs while mounted or in combat or flying. fixes stagger while gathering for outdoors raid/boss
- Merge pull request #54 from ynazar1/reset-buffs-not-all
- Merge pull request #53 from ynazar1/evoker-fix
- No more antidaze.
More nil checks - reset buffs, not UI settings on new releases
- Fix source of magic logic
- Merge pull request #52 from ynazar1/sanity
- Using one variable to compare versions.
Removed unused variables
Adding notes on how to release - Merge pull request #51 from ynazar1/evokerbuff-and-bump
- Moving visage to racials. Bumping ToC
- Merge pull request #50 from ynazar1/misc-fixes
-
- Shield localization, just in case.
- Refresh buff list on respec event
- Cleanup SL raids, add TWW raid to profiles.
- Shield localization, just in case.
- Merge pull request #49 from ynazar1/paladin-hero-buff
- Adding endless scales toy too
- Fix duration
- Paladin heroic weapon buffs. Fixing TOC addon icon and title
- Merge pull request #46 from ynazar1/tidecaller-and-levelup
- Add soulwell for warlocks
- correct spellid
- Issues fixing this should deal with #14 and #45
- Merge pull request #44 from ynazar1/roster_update_bug
- Sync with Curse version
- Avoid acting on event spam in delves/instances. Fixes performance issue #43
- Merge pull request #42 from ynazar1/tab-to-spaces-quest
- delete trailing spaces
- nit: newline
- third time is happy spanish?
- spanish attempt #2
- spanish localization fix
- nit: tabs-to-spaces cleanup
- Merge pull request #41 from ynazar1/hearty-food-tww
- Adding 'hearty' food version for tww and deprecating some of the old food items to improve performance
- Merge pull request #39 from ynazar1/debug-text-fix
- Nit: Fixing debug error text
- Merge pull request #38 from ynazar1/TTW-Items
- Attempt at keeping git inline with curse.
- Merge pull request #37 from ynazar1/TTW-Items
- Fixing spell/item calls
- Adding TWW food items programmatically
- Nit. Rename TWW augment rune
- TWW Weapon Oils and Stones
- Adding TWW Flasks
- Merge branch 'Softrix:main' into main
- Merge pull request #35 from ynazar1/ynazar1-1102-toc-bump
- Merge pull request #2 from ynazar1/ynazar1-1102-toc-bump
Update SmartBuff.toc - Update SmartBuff.toc
ToC Bump for 11.0.2 - Merge pull request #1 from Softrix/main
Sync from upstream - Merge pull request #34 from ynazar1/mass-barrier
- Adding mass barrier for mages
-
Restored libs / removed workflow (for now)
Fixes:- Better soul stone detection with talents
- Evoker missing buff and fixed buff duration.
Info:
Removed release workflow for now until I can focus more. Restored lib folder back into repo since last merge which removed them.
Mirrored the default message settings of classic, normal and warning are off, errors are on - less spammy for new users. - Merge pull request #33 from ynazar1/evoker-fixes
Evoker and warlock bugfixes - Merge pull request #32 from ynazar1/attempt-at-release
- #4 the blessing is bugged... so let's just move it to self-buff
- Addressing #1
Evoker: Adding missing sense power aura
Evoker (and others?): Range check fix
Warlock: Fixing warlock demonic healthstone check - Merge pull request #3 from Softrix/main
Syncing from original - Merge pull request #2 from Softrix/main
Syncing with main - Delete Libs/LibSharedMedia-3.0 directory
- Delete Libs/CallbackHandler-1.0 directory
- Delete lib
- Update .pkgmeta
- 11.0 - Bumped TOC & Version - Released to Curse
- Merge pull request #31 from ynazar1/Combined-TWW-fixes
- Merge pull request #1 from ynazar1/Combined-TWW-fixes
Combined tww fixes - More API changes based on globe recommendations
- Fixing additoinal aura names and nil comparisons while mounted or shapeshifted
- attempt at pkg release
- Adding thunderstrike ward
- Nit fixes
- First pass at missing TWW fixes
- Cleanup, cooldown fix, texture fix
- Wrong number of args for GetSpellTexture
- Fix no ids on game load, fishing + bugs.
- Fix spell names and duplication
- Nil concatenation
- Remove temp hack
- Fix ever multiplying list.
- Always reset buff list
- Quick fix for 11.0
- Updated Github in line with current retail build.
- Fixed Amplify Poison (marked as non-lethal)
- Bug Fixes & Updated TOC
Fixed buff order not saving, fixed issue where you wouldnt get prompts without first reloading the ui, added some evoker abilities. - Fix Macro Casting and Command Line
Fixed macro casting and command line, i.e. /smartbuff wasnt working due to duplicate SLASH init. - Merge pull request #29 from speedwaystar/main
Aberrus autotemplate and Fix Casting bugfix - merge fix
- Merge branch 'main' of https://github.com/speedwaystar/SmartBuff-Retail
Conflicts:
localization.en.lua
- fix for C_CVar.SetCVar ActionButtonUseKeyDown debacle
- fix capitalization for "Aberrus, The Shadowed Crucible"
- Merge pull request #27 from speedwaystar/main
- ensure O.SBButtonDownVal is initialized correctly (hack)
fixes: #26
Signed-off-by: speedwaystar speedwaystar@gmail.com - Fixes / OCD Changes :)
Slight fixes and o.c.d changes ;-) Matched the width of the splash options to that of the splash screen. Fixed the credits not showing on first load of a new version. r21 is now uploaded to Curseforge. - Merge pull request #25 from speedwaystar/main
ensure B table correctly initialized (thanks MyTechnoHunter) - fix #23: B table not initialized (thanks MyTechnoHunter)
Signed-off-by: speedwaystar speedwaystar@gmail.com - Merge pull request #24 from speedwaystar/main
10.1 maintenance update - C_Minimap.SetTracking() fix (thanks Codermilk!)
bumped TOC version to 100100 (10.1: Embers of Neltharion)
bumped addon date to
fixed DK pet typo 100523
some calls to the C_CVar namespace were still using deprecated globals
replaced "time" local variable with GetTime() calls
removed deprecated call to getglobal()
added "Abberus, The Shadowed Crucible" as a custom auto raid template
Signed-off-by: speedwaystar speedwaystar@gmail.com - r20 Curse Release
Updated for r20 Curse Release - Merge pull request #22 from speedwaystar/main
register sounds with Shared Media Library and prevent template being automatically reset after manual selection - prevent template being automatically reset after manual selection
- Merge branch 'main' of https://github.com/speedwaystar/SmartBuff-Retail
- register sounds with Shared Media Library
- Merge pull request #15 from speedwaystar/main
SMARTBUFF_SetTemplate() fixes and data purge request popup on major version change - initial support for LibSharedMedia-3.0
- force a data purge request popup if the major version number (SMARTBUFF_VERSIONNR) changes
Signed-off-by: speedwaystar speedwaystar@gmail.com - SMARTBUFF_SetTemplate() now correctly completes group setup if O.AutoSwitchTemplate is turned off
- also now correctly performs raid setup for O.AutoSwitchTemplateInst templates
- fixes: #14
- credit: MrWizard https://discord.com/channels/697774223833170000/866292302008025098/1071200694947827762
- Merge pull request #13 from speedwaystar/main
GetSpellBookItemName now used to iterate over spellbook - GetSpellBookItemName now used to iterate over spellbook instead of GetNumSpellTabs, since the latter does not reliably return all known spells.
fixes:#9
credit: Mokay https://discord.com/channels/697774223833170000/864095814950977557/1066432962582806548
Signed-off-by: speedwaystar speedwaystar@gmail.com - Merge pull request #11 from speedwaystar/main
Added Evoker 'Visage' ability - Added Evoker 'Visage' ability
- r18 release deployed to Curse
- Merge pull request #10 from speedwaystar/main
suppress unnecessary template change messages - Merge branch 'main' of https://github.com/speedwaystar/SmartBuff-Retail
- suppress unnecessary template change messages
fixes: https://discord.com/channels/697774223833170000/866292302008025098/1067290567597363200 - Merge pull request #8 from speedwaystar/main
- fixes #7
Signed-off-by: speedwaystar speedwaystar@gmail.com - Added Warlock Inquisitors Gaze back / default splash screen font change
It appears my changes got overwritten in the initial merge with speedwaystars branch - oops - Merge pull request #6 from speedwaystar/main
actually change default font for real this time >_> - actually change default font for real this time >_>
- Merge pull request #5 from speedwaystar/main
changed default font to GameFontNormalHuge, and removed some stray de… - changed default font to GameFontNormalHuge, and removed some stray debugging print statements
- Merge pull request #4 from speedwaystar/main
auto templates now correctly detect named raid instances - auto templates now correctly detect named raid instances
templates now update asynchronously using ZONE_CHANGED_NEW_AREA and GROUP_ROSTER_UPDATE events instead of every second using OnUpdate
fixes softrix/smartuff-retail#3 #3 -
- auto templates now correctly detect named raid instances
- templates now update asynchronously using ZONE_CHANGED_NEW_AREA and GROUP_ROSTER_UPDATE events instead of every second using OnUpdate
- fixes softrix/smartuff-retail#3 #3
Signed-off-by: speedwaystar speedwaystar@gmail.com
- auto templates now correctly detect named raid instances
- Merge pull request #1 from speedwaystar/main
v16beta.100002.speedwaystar - version bumped to r16beta.100002
- library metas for vs code
- Merge branch 'main' of https://github.com/speedwaystar/SmartBuff-Retail
- added changelog.txt, again for convenience
- added .vscode metafiles to repository for convenience
- updated enumeration utility functions
Signed-off-by: speedwaystar speedwaystar@gmail.com - adjusted scrollbar height
- helper functions: enum(t), dict(t), tinvert(t), switch(case), printd(...), printf(f,...), dump(t, startkey)
- added slashcommands: /sb changes, /sb reload
Signed-off-by: speedwaystar speedwaystar@gmail.com - Version change triggers a BuffOrderReset()
- weapon buffs default to mainHand enabled
- fix broker icon toggle
-
- use item hyperlinks instead of item names
- FOOD: added Timely Demise (70 Haste)
- FOOD: added Filet of Fangs (70 Crit)
- FOOD: added Seamoth Surprise (70 Vers)
- FOOD: added Salt-Baked Fishcake (70 Mastery)
- FOOD: added Feisty Fish Sticks (45 Haste/Crit)
- FOOD: added Aromatic Seafood Platter (45 Haste/Vers)
- FOOD: added Sizzling Seafood Medley (45 Haste/Mastery)
- FOOD: added Revenge, Served Cold (45 Crit/Verst)
- FOOD: added Thousandbone Tongueslicer (45 Crit/Mastery)
- FOOD: added Great Cerulean Sea (45 Vers/Mastery)
- FOOD: added Fated Fortune Cookie (76 primary stat)
- FOOD: added Feast: Grand Banquet of the Kalu'ak (76 primary stat)
- FOOD: added Feast: Hoard of Draconic Delicacies (76 primary stat)
- AUGMENT RUNE: added Draconic Augment Rune
- VANTUS RUNE: added Vantus Rune: Vault of the Incarnates
- WEAPON BUFF: added Buzzing Rune
- WEAPON BUFF: added Chirping Rune
- WEAPON BUFF: added Howling Rune
- WEAPON BUFF: added Primal Weightstone
- WEAPON BUFF: added Primal Whetstone
- WEAPON BUFF: added Completely Safe Rockets
- FLASK added Phial of the Eye in the Storm
- FLASK: added Phial of Still Air
- FLASK: added Phial of Icy Preservation
- FLASK: added Iced Phial of Corrupting Rage
- FLASK: added Phial of Charged Isolation
- FLASK: added Phial of Glacial Fury
- FLASK: added Phial of Static Empowerment
- FLASK: added Phial of Tepid Versatility
- FLASK: added Aerated Phial of Deftness
- FLASK: added Steaming Phial of Finesse
- FLASK: added Charged Phial of Alacrity
- FLASK: added Crystalline Phial of Perception
- FLASK: added Phial of Elemental Chaos
- FLASK: added Aerated Phial of Quick Hands
- WARLOCK PET: added Summon Imp
- WARLOCK PET: added Summon Fellhunter
- WARLOCK PET: added Summon Voidwalker
- WARLOCK PET: added Summon Succubus
- WARLOCK PET: added Summon Infernal
- WARLOCK PET: added Summon Doomguard
- WARLOCK PET: added Summon Felguard
- WARLOCK PET: added Summon Fel Imp
- WARLOCK PET: added Summon Voidlord
- WARLOCK PET: added Summon Shivarra
- WARLOCK PET: added Summon Observer
- WARLOCK PET: added Summon Wrathguard
- HUNTER PET: added Call Pet 1
- HUNTER PET: added Call Pet 2
- HUNTER PET: added Call Pet 3
- HUNTER PET: added Call Pet 4
- HUNTER PET: added Call Pet 5
- TOY: added Wayfarer's Compass
- TOY: added Golden Dragon Goblet
- TOY: added Lucky Duck
- GROUPS: removed old custom locations: Icecrown Citadel, Trial of the Crusader, Ulduar, Molten Core, Onyxia's Lair, Blackwing Lair, Naxxramas, Ahn'Qiraj, Zul'Gurub
- GROUPS: added LFR, Mythic Keystone, Castle Nathria, Sanctum of Domination, Sepulcher of the First Ones, Vault of the Incarnates
- increased size of SmartBuff splash window to allow for longer itemLink text
- tidied up some code and re-indented the most egregious examples nested IF statements
- bumped version to r16alpha
- added changelog to WHATSNEW
- TODO: non-English localization
- TODO: rewrite to use itemID instead of itemLink
- TODO: add new buffs from Dragonlands class talent trees
Signed-off-by: speedwaystar speedwaystar@gmail.com
- use item hyperlinks instead of item names
- Initial commit